diff --git a/docs/source/error-codes/self-service/index.rst b/docs/source/error-codes/self-service/index.rst index cbfdf609f3be..0282e7fee926 100644 --- a/docs/source/error-codes/self-service/index.rst +++ b/docs/source/error-codes/self-service/index.rst @@ -21,7 +21,7 @@ Overview The majority of the errors are a result of some request processing. They are logged and returned to the user as a failed gRPC request using the standard StatusRuntimeException_. -As such this approach remains unchanged in principle while self-service error codes aim at +As such this approach remains unchanged in principle while we aim at enhancing it by providing: - improved consistency of the returned errors across API endpoints, @@ -80,7 +80,7 @@ Error category you can act on particular error codes. Correlation id - A value whose purpose is to allow a user to clearly identify the request, + A value whose purpose is to allow the user to clearly identify the request, such that the operator can lookup any log information associated with this error. We use request's submission id for correlation id. @@ -370,115 +370,156 @@ compatibility with previous releases for some service Ledger API endpoints. The table below outlines all the cases and error conditions when a Ledger API service endpoint returns a different gRPC status code in comparison to the pre-1.18 releases. -For example, a service endpoint previously returning gRPC status code ``CODE_A`` may now return -``CODE_B`` for some error condition while returning ``CODE_A`` for other conditions, -and only an entry for the change from ``CODE_A`` in ``CODE_B`` is included in the table below. - Ledger API ^^^^^^^^^^ The table below outlines generic gRPC status code changes pertaining to the Ledger API and apply to all ledger backends. For changes specific to a ledger backend, check the next subsections. -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|Service endpoint |gRPC status code (before SDK 1.18) |gRPC status code (since SDK 1.18) |Remarks |Ledger API error code ID | -+===============================================+===================================+==================================+=========================================================================================================================+=============================================+ -|ActiveContractsService.getActiveContracts |NOT_FOUND |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when attempting to access the data that has already been pruned. |PARTICIPANT_PRUNED_DATA_ACCESSED | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandCompletionService.completionStream |NOT_FOUND |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when attempting to access the data that has already been pruned. |PARTICIPANT_PRUNED_DATA_ACCESSED | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWait |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED is now returned on Command Service submissions timeouts. |REQUEST_TIME_OUT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWait |ABORTED |INTERNAL |INTERNAL is not returned on Command Service submissions on unexpected errors. |LEDGER_API_INTERNAL_ERROR | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWait |ABORTED |UNAVAILABLE |UNAVAILABLE is now returned on Command Service submissions on backpressure. |SERVICE_NOT_RUNNING | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWait |RESOURCE_EXHAUSTED |ABORTED |ABORTED is now returned on Command Service submissions on backpressure. |PARTICIPANT_BACKPRESSURE | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWait |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransaction |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED is now returned on Command Service submissions timeouts. |REQUEST_TIME_OUT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransaction |ABORTED |INTERNAL |INTERNAL is not returned on Command Service submissions on unexpected errors. |LEDGER_API_INTERNAL_ERROR | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransaction |ABORTED |UNAVAILABLE |UNAVAILABLE is now returned on Command Service submissions on backpressure. |SERVICE_NOT_RUNNING | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransaction |RESOURCE_EXHAUSTED |ABORTED |ABORTED is now returned on Command Service submissions on backpressure. |PARTICIPANT_BACKPRESSURE | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransaction |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionId |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED is now returned on Command Service submissions timeouts. |REQUEST_TIME_OUT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionId |ABORTED |INTERNAL |INTERNAL is not returned on Command Service submissions on unexpected errors. |LEDGER_API_INTERNAL_ERROR | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionId |ABORTED |UNAVAILABLE |UNAVAILABLE is now returned on Command Service submissions on backpressure. |SERVICE_NOT_RUNNING | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionId |RESOURCE_EXHAUSTED |ABORTED |ABORTED is now returned on Command Service submissions on backpressure. |PARTICIPANT_BACKPRESSURE | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionId |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionTree |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED is now returned on Command Service submissions timeouts. |REQUEST_TIME_OUT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionTree |ABORTED |INTERNAL |INTERNAL is not returned on Command Service submissions on unexpected errors. |LEDGER_API_INTERNAL_ERROR | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionTree |ABORTED |UNAVAILABLE |UNAVAILABLE is now returned on Command Service submissions on backpressure. |SERVICE_NOT_RUNNING | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionTree |RESOURCE_EXHAUSTED |ABORTED |ABORTED is now returned on Command Service submissions on backpressure. |PARTICIPANT_BACKPRESSURE | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandService.submitAndWaitForTransactionTree |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|CommandSubmissionService.submit |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|ConfigManagementService.setTimeModel |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED can now be returned when a time out was reached. |REQUEST_TIME_OUT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|ConfigManagementService.setTimeModel |ABORTED |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when a configuration update was rejected. |CONFIGURATION_ENTRY_REJECTED | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|ConfigManagementService.setTimeModel |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|GrpcHealthService.check |NOT_FOUND |INVALID_ARGUMENT |INVALID_ARGUMENT can now be returned when the received request contains invalid values. |INVALID_ARGUMENT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|GrpcHealthService.watch |NOT_FOUND |INVALID_ARGUMENT |INVALID_ARGUMENT can now be returned when the received request contains invalid values. |INVALID_ARGUMENT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|PackageManagementService.uploadDarFile |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED can now be returned when a time out was reached. |REQUEST_TIME_OUT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|PackageManagementService.uploadDarFile |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when a package upload was rejected. |PACKAGE_UPLOAD_REJECTED | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|ParticipantPruningService.prune |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when the supplied pruning offset is not before the ledger end. |OFFSET_OUT_OF_RANGE | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|PartyManagementService.allocateParty |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED can now be returned when a time out was reached. |REQUEST_TIME_OUT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |ABORTED |ALREADY_EXISTS |ALREADY_EXISTS can now be returned when there was a duplicate contract key during interpretation. |DUPLICATE_CONTRACT_KEY_DURING_INTERPRETATION | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |ABORTED |INTERNAL |INTERNAL can now be returned when validation fails on a mismatch during relay of the submitted transaction. |LEDGER_API_INTERNAL_ERROR | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |ABORTED |NOT_FOUND |NOT_FOUND can now be returned when contract key was not found during interpretation. |CONTRACT_NOT_FOUND | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when a Daml transaction fails during interpretation. |DAML_INTERPRETATION_ERROR | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |INVALID_ARGUMENT |INTERNAL |INTERNAL can now be returned in case of internal errors. |LEDGER_API_INTERNAL_ERROR | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |INVALID_ARGUMENT |NOT_FOUND |NOT_FOUND can now be returned when a Daml interpreter can not resolve a contract key to an active contract. |CONTRACT_KEY_NOT_FOUND | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |INVALID_ARGUMENT |NOT_FOUND |NOT_FOUND can now be returned when a Daml transaction was referring to a package which was not known to the participant. |MISSING_PACKAGE | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |INVALID_ARGUMENT |NOT_FOUND |NOT_FOUND can now be returned when an exercise or fetch happens on a transaction-locally consumed contract. |CONTRACT_NOT_ACTIVE | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |INVALID_ARGUMENT |UNKNOWN |UNKNOWN can now be returned when package validation fails. |PACKAGE_VALIDATION_FAILED | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|SubmissionService.submit |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|TransactionService.getFlatTransactionByEventId |NOT_FOUND |INVALID_ARGUMENT |INVALID_ARGUMENT can now be returned when the received request contains invalid values. |INVALID_ARGUMENT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|TransactionService.getTransactionByEventId |NOT_FOUND |INVALID_ARGUMENT |INVALID_ARGUMENT can now be returned when the received request contains invalid values. |INVALID_ARGUMENT | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|TransactionService.getTransactionTrees |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when the supplied offset was out of range. |OFFSET_OUT_OF_RANGE | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|TransactionService.getTransactionTrees |NOT_FOUND |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when attempting to access the data that has already been pruned. |PARTICIPANT_PRUNED_DATA_ACCESSED | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|TransactionService.getTransactions |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when the supplied offset was out of range. |OFFSET_OUT_OF_RANGE | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ -|TransactionService.getTransactions |NOT_FOUND |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when attempting to access the data that has already been pruned. |PARTICIPANT_PRUNED_DATA_ACCESSED | -+-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+---------------------------------------------+ ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|Service endpoint |gRPC status code |gRPC status code |Remarks |Ledger API error code ID | +| |(before SDK 1.18) |(since SDK 1.18) | | | ++===============================================+===================================+==================================+=========================================================================================================================+==================================================================================+ +|ActiveContractsService.getActiveContracts |NOT_FOUND |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when attempting to access the data that has already been pruned. |PARTICIPANT_PRUNED_DATA_ACCESSED | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|ActiveContractsService.getActiveContracts |NOT_FOUND |NOT_FOUND |The ledger id from the request does match the participant's ledger id. |LEDGER_ID_MISMATCH | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandCompletionService.completionStream |NOT_FOUND |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when attempting to access the data that has already been pruned. |PARTICIPANT_PRUNED_DATA_ACCESSED | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandCompletionService.completionStream |NOT_FOUND |NOT_FOUND |The ledger id from the request does match the participant's ledger id. |LEDGER_ID_MISMATCH | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWait |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED is now returned on Command Service submissions timeouts. |REQUEST_TIME_OUT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWait |ABORTED |INTERNAL |INTERNAL is not returned on Command Service submissions on unexpected errors. |LEDGER_API_INTERNAL_ERROR | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWait |ABORTED |UNAVAILABLE |UNAVAILABLE is now returned on Command Service submissions on backpressure. |SERVICE_NOT_RUNNING | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWait |RESOURCE_EXHAUSTED |ABORTED |ABORTED is now returned on Command Service submissions on backpressure. |PARTICIPANT_BACKPRESSURE | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWait |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWait |UNAVAILABLE |UNAVAILABLE |A service is not running. |SERVICE_NOT_RUNNING | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransaction |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED is now returned on Command Service submissions timeouts. |REQUEST_TIME_OUT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransaction |ABORTED |INTERNAL |INTERNAL is not returned on Command Service submissions on unexpected errors. |LEDGER_API_INTERNAL_ERROR | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransaction |ABORTED |UNAVAILABLE |UNAVAILABLE is now returned on Command Service submissions on backpressure. |SERVICE_NOT_RUNNING | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransaction |RESOURCE_EXHAUSTED |ABORTED |ABORTED is now returned on Command Service submissions on backpressure. |PARTICIPANT_BACKPRESSURE | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransaction |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransaction |UNAVAILABLE |UNAVAILABLE |A service is not running. |SERVICE_NOT_RUNNING | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionId |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED is now returned on Command Service submissions timeouts. |REQUEST_TIME_OUT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionId |ABORTED |INTERNAL |INTERNAL is not returned on Command Service submissions on unexpected errors. |LEDGER_API_INTERNAL_ERROR | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionId |ABORTED |UNAVAILABLE |UNAVAILABLE is now returned on Command Service submissions on backpressure. |SERVICE_NOT_RUNNING | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionId |RESOURCE_EXHAUSTED |ABORTED |ABORTED is now returned on Command Service submissions on backpressure. |PARTICIPANT_BACKPRESSURE | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionId |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionId |UNAVAILABLE |UNAVAILABLE |A service is not running. |SERVICE_NOT_RUNNING | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionTree |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED is now returned on Command Service submissions timeouts. |REQUEST_TIME_OUT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionTree |ABORTED |INTERNAL |INTERNAL is not returned on Command Service submissions on unexpected errors. |LEDGER_API_INTERNAL_ERROR | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionTree |ABORTED |UNAVAILABLE |UNAVAILABLE is now returned on Command Service submissions on backpressure. |SERVICE_NOT_RUNNING | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionTree |RESOURCE_EXHAUSTED |ABORTED |ABORTED is now returned on Command Service submissions on backpressure. |PARTICIPANT_BACKPRESSURE | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionTree |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandService.submitAndWaitForTransactionTree |UNAVAILABLE |UNAVAILABLE |A service is not running. |SERVICE_NOT_RUNNING | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|CommandSubmissionService.submit |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|ConfigManagementService.setTimeModel |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED can now be returned when a time out was reached. |REQUEST_TIME_OUT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|ConfigManagementService.setTimeModel |ABORTED |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when a configuration update was rejected. |CONFIGURATION_ENTRY_REJECTED | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|ConfigManagementService.setTimeModel |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|GrpcHealthService.check |NOT_FOUND |INVALID_ARGUMENT |INVALID_ARGUMENT can now be returned when the received request contains invalid values. |INVALID_ARGUMENT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|GrpcHealthService.watch |NOT_FOUND |INVALID_ARGUMENT |INVALID_ARGUMENT can now be returned when the received request contains invalid values. |INVALID_ARGUMENT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|PackageManagementService.uploadDarFile |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED can now be returned when a time out was reached. |REQUEST_TIME_OUT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|PackageManagementService.uploadDarFile |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when a package upload was rejected. |PACKAGE_UPLOAD_REJECTED | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|PackageManagementService.uploadDarFile |INVALID_ARGUMENT |INVALID_ARGUMENT |Generic error for invalid arguments in the request. |INVALID_ARGUMENT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|ParticipantPruningService.prune |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when the supplied pruning offset is not before the ledger end. |OFFSET_OUT_OF_RANGE | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|ParticipantPruningService.prune |INVALID_ARGUMENT |INVALID_ARGUMENT |Generic error for invalid arguments in the request. |INVALID_ARGUMENT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|ParticipantPruningService.prune |INVALID_ARGUMENT |INVALID_ARGUMENT |The offset is not in hexadecimal format. |NON_HEXADECIMAL_OFFSET | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|PartyManagementService.allocateParty |ABORTED |DEADLINE_EXCEEDED |DEADLINE_EXCEEDED can now be returned when a time out was reached. |REQUEST_TIME_OUT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |ABORTED |ABORTED |Failed to determine ledger time. |FAILED_TO_DETERMINE_LEDGER_TIME | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |ABORTED |ALREADY_EXISTS |ALREADY_EXISTS can now be returned when there was a duplicate contract key during interpretation. |DUPLICATE_CONTRACT_KEY_DURING_INTERPRETATION | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |ABORTED |INTERNAL |INTERNAL can now be returned when validation fails on a mismatch during relay of the submitted transaction. |LEDGER_API_INTERNAL_ERROR | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |ABORTED |NOT_FOUND |NOT_FOUND can now be returned when contract key was not found during interpretation. |CONTRACT_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when a Daml transaction fails during interpretation. |DAML_INTERPRETATION_ERROR | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |INVALID_ARGUMENT |INTERNAL |INTERNAL can now be returned in case of internal errors. |LEDGER_API_INTERNAL_ERROR | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |INVALID_ARGUMENT |INVALID_ARGUMENT |Invalid argument detected before command execution. |ALLOWED_LANGUAGE_VERSIONS, COMMAND_PREPROCESSING_FAILED, DAML_AUTHORIZATION_ERROR | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |INVALID_ARGUMENT |INVALID_ARGUMENT |Invalid argument detected by the Daml interpreter. |DAML_INTERPRETER_INVALID_ARGUMENT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |INVALID_ARGUMENT |NOT_FOUND |NOT_FOUND can now be returned when a Daml interpreter can not resolve a contract key to an active contract. |CONTRACT_KEY_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |INVALID_ARGUMENT |NOT_FOUND |NOT_FOUND can now be returned when a Daml transaction was referring to a package which was not known to the participant. |MISSING_PACKAGE | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |INVALID_ARGUMENT |NOT_FOUND |NOT_FOUND can now be returned when an exercise or fetch happens on a transaction-locally consumed contract. |CONTRACT_NOT_ACTIVE | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |INVALID_ARGUMENT |UNKNOWN |UNKNOWN can now be returned when package validation fails. |PACKAGE_VALIDATION_FAILED | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|SubmissionService.submit |UNAVAILABLE |NOT_FOUND |NOT_FOUND can now be returned when a ledger configuration was not found. |LEDGER_CONFIGURATION_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getFlatTransactionByEventId |NOT_FOUND |INVALID_ARGUMENT |INVALID_ARGUMENT can now be returned when the received request contains invalid values. |INVALID_ARGUMENT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getFlatTransactionByEventId |NOT_FOUND |NOT_FOUND |The ledger id from the request does match the participant's ledger id. |LEDGER_ID_MISMATCH | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactionByEventId |NOT_FOUND |INVALID_ARGUMENT |INVALID_ARGUMENT can now be returned when the received request contains invalid values. |INVALID_ARGUMENT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactionByEventId |NOT_FOUND |NOT_FOUND |The ledger id from the request does match the participant's ledger id. |LEDGER_ID_MISMATCH | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactionByEventId |NOT_FOUND |NOT_FOUND |Transaction was not found. |TRANSACTION_NOT_FOUND | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactionTrees |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when the supplied offset was out of range. |OFFSET_OUT_OF_RANGE | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactionTrees |INVALID_ARGUMENT |INVALID_ARGUMENT |A field is missing in the request. |MISSING_FIELD | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactionTrees |INVALID_ARGUMENT |INVALID_ARGUMENT |Generic error for invalid arguments in the request. |INVALID_ARGUMENT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactionTrees |INVALID_ARGUMENT |INVALID_ARGUMENT |Invalid field detected in the request. |INVALID_FIELD | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactionTrees |NOT_FOUND |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when attempting to access the data that has already been pruned. |PARTICIPANT_PRUNED_DATA_ACCESSED | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactions |INVALID_ARGUMENT |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when the supplied offset was out of range. |OFFSET_OUT_OF_RANGE | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactions |INVALID_ARGUMENT |INVALID_ARGUMENT |A field is missing in the request. |MISSING_FIELD | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactions |INVALID_ARGUMENT |INVALID_ARGUMENT |Generic error for invalid arguments in the request. |INVALID_ARGUMENT | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactions |INVALID_ARGUMENT |INVALID_ARGUMENT |Invalid field detected in the request. |INVALID_FIELD | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactions |NOT_FOUND |FAILED_PRECONDITION |FAILED_PRECONDITION can now be returned when attempting to access the data that has already been pruned. |PARTICIPANT_PRUNED_DATA_ACCESSED | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ +|TransactionService.getTransactions |NOT_FOUND |NOT_FOUND |The ledger id from the request does match the participant's ledger id. |LEDGER_ID_MISMATCH | ++-----------------------------------------------+-----------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ Sandbox (classic) ^^^^^^^^^^^^^^^^^ diff --git a/ledger/participant-integration-api/src/docs/resources/com/daml/platform/docs/self-service-error-codes-migration.yml b/ledger/participant-integration-api/src/docs/resources/com/daml/platform/docs/self-service-error-codes-migration.yml index 662925dde6de..6f76195a29cc 100644 --- a/ledger/participant-integration-api/src/docs/resources/com/daml/platform/docs/self-service-error-codes-migration.yml +++ b/ledger/participant-integration-api/src/docs/resources/com/daml/platform/docs/self-service-error-codes-migration.yml @@ -6,7 +6,7 @@ transactionNotFound: change: - NOT_FOUND - NOT_FOUND - changeExplanation: "" + changeExplanation: "Transaction was not found." selfServiceErrorCodeId: TRANSACTION_NOT_FOUND services: TransactionService: @@ -47,7 +47,7 @@ ledgerIdMismatch: change: - NOT_FOUND - NOT_FOUND - changeExplanation: "" + changeExplanation: "The ledger id from the request does match the participant's ledger id." selfServiceErrorCodeId: LEDGER_ID_MISMATCH services: SandboxResetService: @@ -86,7 +86,7 @@ missingField: change: - INVALID_ARGUMENT - INVALID_ARGUMENT - changeExplanation: "" + changeExplanation: "A field is missing in the request." selfServiceErrorCodeId: MISSING_FIELD services: CommandSubmissionService: @@ -117,7 +117,7 @@ invalidArgument: change: - INVALID_ARGUMENT - INVALID_ARGUMENT - changeExplanation: "" + changeExplanation: "Generic error for invalid arguments in the request." selfServiceErrorCodeId: INVALID_ARGUMENT services: CommandSubmissionService: @@ -201,7 +201,7 @@ nonHexOffset: change: - INVALID_ARGUMENT - INVALID_ARGUMENT - changeExplanation: "" + changeExplanation: "The offset is not in hexadecimal format." selfServiceErrorCodeId: NON_HEXADECIMAL_OFFSET services: ParticipantPruningService: @@ -211,7 +211,7 @@ invalidField: change: - INVALID_ARGUMENT - INVALID_ARGUMENT - changeExplanation: "" + changeExplanation: "Invalid field detected in the request." selfServiceErrorCodeId: INVALID_FIELD services: CommandCompletionService: @@ -344,7 +344,7 @@ serviceNotRunning: change: - UNAVAILABLE - UNAVAILABLE - changeExplanation: "" + changeExplanation: "A service is not running." selfServiceErrorCodeId: SERVICE_NOT_RUNNING services: CommandService: @@ -372,7 +372,7 @@ ApiSubmissionService.failedOnCommandExecution#LedgerTime: change: - ABORTED - ABORTED - changeExplanation: "" + changeExplanation: "Failed to determine ledger time." selfServiceErrorCodeId: FAILED_TO_DETERMINE_LEDGER_TIME services: SubmissionService: @@ -452,7 +452,7 @@ ApiSubmissionService.failedOnCommandExecution#{Package.AllowedLanguageVersion, n change: - INVALID_ARGUMENT - INVALID_ARGUMENT - changeExplanation: "" + changeExplanation: "Invalid argument detected before command execution." selfServiceErrorCodeId: ALLOWED_LANGUAGE_VERSIONS, COMMAND_PREPROCESSING_FAILED, DAML_AUTHORIZATION_ERROR services: SubmissionService: @@ -462,7 +462,7 @@ ApiSubmissionService.failedOnCommandExecution#Interpretation::{CreateEmptyContra change: - INVALID_ARGUMENT - INVALID_ARGUMENT - changeExplanation: "" + changeExplanation: "Invalid argument detected by the Daml interpreter." selfServiceErrorCodeId: DAML_INTERPRETER_INVALID_ARGUMENT services: SubmissionService: diff --git a/ledger/participant-integration-api/src/docs/scala/com/daml/platform/docs/SelfServiceErrorCodes_MigrationGuideGen_App.scala b/ledger/participant-integration-api/src/docs/scala/com/daml/platform/docs/SelfServiceErrorCodes_MigrationGuideGen_App.scala index c13f673a8d59..fa617bc9541e 100644 --- a/ledger/participant-integration-api/src/docs/scala/com/daml/platform/docs/SelfServiceErrorCodes_MigrationGuideGen_App.scala +++ b/ledger/participant-integration-api/src/docs/scala/com/daml/platform/docs/SelfServiceErrorCodes_MigrationGuideGen_App.scala @@ -139,10 +139,6 @@ object SelfServiceErrorCodes_MigrationGuideGen_App { println(errorCategoriesTable.map(genSubsectionsForErrorCategory).mkString("\n\n\n")) - if (args.length < 10) { - System.exit(0) - } - println(errorCategoryTableText) println() println("Error category table done") @@ -189,12 +185,36 @@ object SelfServiceErrorCodes_MigrationGuideGen_App { println() println() - val tableLinesWithoutUnchangedErrorCodes = for { + case class EndpointWithGrpcCode(serviceName: String, legacy_grpc_code: String) + val affectedMap = mutable.Map[EndpointWithGrpcCode, mutable.ArrayBuffer[Array[String]]]() + // Add all changed codes + for { line <- tableLines if line(1) != line(2) - } yield line + } { + val key = EndpointWithGrpcCode(line(0), line(1)) + if (!affectedMap.contains(key)) { + affectedMap.put(key, new ArrayBuffer[Array[String]]) + } + affectedMap.apply(key) += (line) + } + + // Add unchanged codes if the there is a change for this (endpoint, old_code) pair + for { + line <- tableLines if line(1) == line(2) + } { + val key = EndpointWithGrpcCode(line(0), line(1)) + + if (affectedMap.contains(key)) { + affectedMap.apply(key) += (line) + } + } + + val linesForTable: Array[Array[String]] = affectedMap.values.flatten.toArray.sortBy(line => + (line(0), line(1), line(2), line(3), line(4)) + ) val reStTable = generateReStTable( - tableLinesWithoutUnchangedErrorCodes, + linesForTable, header = Array( "Service endpoint", "gRPC status code (before SDK 1.18)", @@ -207,7 +227,7 @@ object SelfServiceErrorCodes_MigrationGuideGen_App { } private def printOutAsCsvText(tableLines: Array[Array[String]]): Unit = { - val csvLines = for { + val csvLines: Array[String] = for { line <- tableLines } yield { line.mkString("|")