Commit Graph

53 Commits

Author SHA1 Message Date
pbatko-da
5641948410
[Docs] Add labels to error codes to support references to them (#11913)
CHANGELOG_BEGIN
CHANGELOG_END
2021-11-30 14:30:58 +01:00
nicu-da
61334cff77
kvutils - Add Writer which can handle deduplication periods as offsets [KVL-1172] (#11900)
changelog_begin
changelog_end
2021-11-29 10:28:07 -08:00
Sofia Faro
0b9d57b95e
Add ContractDoesntImplementInterface error. (#11884)
* Add a ContractDoesntImplementInterface error

Part of #10810 and #11703

changelog_begin
changelog_end

* use inside

* rename error
2021-11-29 15:54:31 +00:00
pbatko-da
c27406cdcf
[DPP-762][Self-service error codes] Automate generation of inventory of error categories. #11879
Other changes:
- Fix ErrorCodeDocumentationGeneratorSpec not being in any bazel target.
- (partially) Fix inconsistent usage of deprecated, Deprecation and DeprecatedDocs annotation.

CHANGELOG_BEGIN
CHANGELOG_END
2021-11-26 10:22:14 +01:00
pbatko-da
5f3a4d2067
[Self-service error codes] Fix section numbering in pdf for error codes section by moving it a level higher. (#11867)
Also make section header markers consistent docs' reamde.

CHANGELOG_BEGIN
CHANGELOG_END
2021-11-25 13:46:12 +01:00
tudor-da
cf3ac011ca
[Self-service error codes] Do not return error code id and definite_answer in metadata for security sensitive errors (#11828)
* [Self-service error codes] Do not return error code id in metadata

CHANGELOG_BEGIN
CHANGELOG_END

* Do not propagate definite_answer
* Additionally, remove redundant context info from error codes

* Fix tests

* Create IndexDbException as a specialization
* Used to globally define error codes returned by the persistence layer
that are logging
2021-11-25 12:42:29 +01:00
Sofia Faro
5c12d757f4
Add a guard when exercising by interface. (#11836)
* Add a guard when exercising by interface.

This fixes part of #11703, when exercising an inherited choice by
interface and you know the template id, via the command preprocessor.

It does this by inserting a "guard" in between the interface fetch and
the exercise body. The guard is a function Interface -> Bool, which
is general enough to check the template id, without complicating too
much in speedy. And can be generalized in the future to check more,
like signatories, etc.

I added the guard as an optional argument to UExerciseByInterface.
This isn't hooked up to the protobuf AST yet (or Haskell side for
that matter) -- but I'll do it in the next PR! For now you can invoke
the guarded exercise via the command preprocessor, so I can enable the
approprate engine tests. (There's still some failing fetch tests left,
but I decided to leave this for later. Fetch can be a lot simpler than
guarded choices, since you always add a fetch node. No need for fancy
continuations.)

changelog_begin
changelog_end

* scalafmt

* Feedback and fix matches

* Update comments, we are always going to abort the transaction

* Raise WronglyTypedContract in SBGuardTemplateId.

* rebase and fix parser

* restore ANF

* scalafmt
2021-11-24 14:22:40 +00:00
nicu-da
59eb0d2eff
kvutils - For duplicate command rejections, add the submission id as metadata [KVL-1175] (#11848)
changelog_begin
kvutils - For duplicate command rejections, the submission id of the already accepted transaction is returning as part of the gRPC metadata. The submission id will be included under the key `existing_submission_id`.
changelog_end
2021-11-24 04:32:34 -08:00
tudor-da
329e609ec4
[Self-service error codes] Group explanations (#11715)
* [Self-service error codes] Error group descriptions

CHANGELOG_BEGIN
CHANGELOG_END

* Apply suggestions from code review

Co-authored-by: mziolekda <marcin.ziolek@digitalasset.com>

Co-authored-by: mziolekda <marcin.ziolek@digitalasset.com>
2021-11-23 20:30:33 +00:00
pbatko-da
55191847cd
[DPP-673][Self-service error-codes] Generate error code directory compatible with both pdf and html docs (#11794)
CHANGELOG_BEGIN
CHANGELOG_END
2021-11-23 15:30:48 +01:00
tudor-da
1bfcbc978b
Refactoring for Canton compatibility on PackageServiceErrors (#11812)
* Refactoring for Canton compatibility on PackageServiceErrors
* ErrorResource.all is public for accessibility from Canton

CHANGELOG_BEGIN
CHANGELOG_END

* Keep PackageServiceError object
2021-11-22 19:14:03 +00:00
Moritz Kiefer
addb2edc03
Drop Scala 2.13 version guards from Bazel definitions (#11819)
changelog_begin
changelog_end
2021-11-22 17:37:49 +00:00
tudor-da
b0a1bf79df
More missing error codes (#11749)
* Missing error codes in Sandbox classic

CHANGELOG_BEGIN
CHANGELOG_END

* Covering more errors above the persistence layer

* Fix wrong contextualizedErrorLoggers

* Compilation fixes
2021-11-18 10:00:43 +00:00
Moritz Kiefer
fa7663148a
Drop 2.12 versioned_scala_deps (#11748)
I’ve kept the infrastructure for versioned_scala_deps around because
I’m optimistic and hope that eventually we’ll do another Scala upgrade.

changelog_begin
changelog_end
2021-11-17 22:13:08 +00:00
tudor-da
a05a40aeec
[Self-service error codes] Adapt ResetService in Sandbox classic (#11731)
CHANGELOG_BEGIN
CHANGELOG_END
2021-11-17 11:11:54 +01:00
tudor-da
fbc436d70a
[DPP-739][Self-service error codes] Adapt QueueBackedTracker error codes (#11719)
* [Self-service error codes] Adapt QueueBasedTracker

CHANGELOG_BEGIN
CHANGELOG_END

* Added changed error codes to migration guide

* Fixed ErrorFactoriesSpec

* Update ledger/error/src/main/scala/com/daml/error/definitions/LedgerApiErrors.scala

Co-authored-by: mziolekda <marcin.ziolek@digitalasset.com>

Co-authored-by: Pawel Batko <pawel.batko@digitalasset.com>
Co-authored-by: mziolekda <marcin.ziolek@digitalasset.com>
2021-11-16 22:21:29 +00:00
pbatko-da
07cff7cdb7
[DPP-417][Self-service error-codes] Document error categories. (#11727)
* [Self-service error-codes] Docs intro WIP

* CHANGELOG_BEGIN
CHANGELOG_END

* 1

* Fix rst

CHANGELOG_BEGIN
CHANGELOG_END

* [DPP-417][Self-service error-codes] Document error categories.

CHANGELOG_BEGIN
CHANGELOG_END

* 1

* Fix
2021-11-16 22:55:35 +01:00
tudor-da
05f604d672
[Self-service error codes] Enrich migration guide [DPP-755] (#11711)
* Adapted migration guide to include changes from https://github.com/digital-asset/daml/pull/11686

CHANGELOG_BEGIN
CHANGELOG_END

* Enriched migration guide with Sandbox-classic changed gRPC error codes

* Added migration guide for error codes changed in KV committer

* Extract the KV and Sandbox-classic migration guides

* Hierarchical order of error codes docs

* Added back full grpc error code description to columns
* Using "gRPC status code" instead of "gRPC error code"
* Addressed review comments from Hubert

* Apply suggestions from code review

Co-authored-by: Miklos <57664299+miklos-da@users.noreply.github.com>

* Addressed review comments
* Use 'Error codes' instead of 'Self-service error codes'

Co-authored-by: Miklos <57664299+miklos-da@users.noreply.github.com>
2021-11-16 14:25:53 +00:00
tudor-da
ec6d7cc3db
[Self-service error codes] Error code definitions revisiting [DPP-675] (#11686)
* Error definitions revisiting and hierarchical grouping refactoring

CHANGELOG_BEGIN
CHANGELOG_END

* Full hierarchical path for error grouping

* Addressed Pawel's review comments

* Apply suggestions from code review

Co-authored-by: mziolekda <marcin.ziolek@digitalasset.com>
Co-authored-by: pbatko-da <pawel.batko@digitalasset.com>

* Do not strip margin in error code explanations

* Revert changing LEDGER_ID_MISMATCH from NOT_FOUND to FAILED_PRECONDITION

Co-authored-by: mziolekda <marcin.ziolek@digitalasset.com>
Co-authored-by: pbatko-da <pawel.batko@digitalasset.com>
2021-11-15 21:28:13 +00:00
tudor-da
8e08450220
[Self-service error codes] No redundant logging in Ledger API (#11649)
CHANGELOG_BEGIN
CHANGELOG_END
2021-11-15 09:13:50 +01:00
tudor-da
d6ca68dc23
[Self-service error codes] Adapt Sandbox classic rejection error codes (#11622)
* [Self-service error codes] Adapt Sandbox classic rejection error codes
* Unify common rejection error codes with KV
* Adapt conformance tests

CHANGELOG_BEGIN
CHANGELOG_END

* Fix JdbcLedgerDaoPostCommitValidationSpec

* Addressed first round of review comments

* Addressed Miklos' comments

* Revert camelCasing invalidLedgerTime arguments

* Moves DuplicateCommand to CommandRejections

* Addressed Gerolf's comments
2021-11-12 16:33:02 +00:00
tudor-da
c5a1f0bb61
Republish error codes generator lib (#11633)
* Republish error codes generator libraries
* Additionally, add kvutils to classpath for generating KVErrors docs

CHANGELOG_BEGIN
CHANGELOG_END

* Use a new annotation (DeprecatedDocs) instead of @deprecated

* Needed for adding descriptions to the error groups docs. Needed for allowing cross-compilation
to 2.12 and 2.13, not possible due to the reflections machinery of extracting
the message from @deprecated
2021-11-10 19:08:33 +01:00
tudor-da
92dfcdeb24
[Self-service error codes] Use error validators in ApiPackageManagementService (#11575)
* Use error validators in ApiPackageManagementService

CHANGELOG_BEGIN
CHANGELOG_END

* Exclude PackageManagementServiceIT from compatibility tests after 1.17

CHANGELOG_BEGIN
CHANGELOG_END
2021-11-09 21:54:26 +01:00
nicu-da
9b94fa9769
[ledger-api] - metadata for invalid deduplication period [KVL-1170] (#11534)
CHANGELOG_BEGIN
[ledger-api] - Return max_deduplication_duration as part of the metadata sent with the gRPC status for commands rejected because of invalid deduplication periods
CHANGELOG_END
2021-11-08 14:45:35 +00:00
tudor-da
21c97453bd
[Self-service error codes] ValueSwitch parameterized method (#11567)
CHANGELOG_BEGIN
CHANGELOG_END
2021-11-08 12:11:56 +00:00
fabiotudone-da
08236012af
Self-service errors: generate error deprecation docs [KVL-1187] (#11539)
* Render error deprecation in generated docs

CHANGELOG_BEGIN
CHANGELOG_END

* Build export-error-codes-json-app with Scala 2.13 only

* Generate docs only with Scala 2.13

* Generate daml-on-sql docs only with Scala 2.13

* Split the error codes JSON generator off from the error lib

* Build all docs only with Scala 2.13
2021-11-05 01:23:38 +01:00
fabiotudone-da
214c7ab445
Self-service errors: generate groups documentation [KVL-1186] (#11526)
* Add groups information to JSON

CHANGELOG_BEGIN
CHANGELOG_END

* Code cleanup

* Fix docs generation

* Fix KVErrors group explanation string

* Render error group explanations in generated docs

* Fix ErrorCodeDocumentationGeneratorSpec
2021-11-04 12:07:29 +01:00
nicu-da
9bb1d6443c
[ledger-api] - Return FAILED_PRECONDITION gRPC status code for invalid deduplication duration [KVL-1170] (#11483)
CHANGELOG_BEGIN
[ledger-api] - Return FAILED_PRECONDITION gRPC status code, instead of INVALID_ARGUMENT, for an invalid command deduplication duration
CHANGELOG_END
2021-11-03 13:34:31 +00:00
pbatko-da
8a9f15b8de
[DPP-686][Self-service error codes] Removing default error factories (#11403)
CHANGELOG_BEGIN
CHANGELOG_END
2021-11-03 09:40:19 +01:00
tudor-da
17c2fa9122
ErrorCodeDocumentationGenerator uses multiple prefixes for scanning classpaths (#11504)
* Removed ProtoDeserializationErrors (not needed at the moment)

CHANGELOG_BEGIN
CHANGELOG_END
2021-11-02 17:09:08 +00:00
tudor-da
78735a8d27
Less logging on //docs:generate-error-codes-json (#11486)
CHANGELOG_BEGIN
CHANGELOG_END
2021-11-01 16:33:27 +00:00
tudor-da
a79cc08687
DbDispatcher handles SQL exceptions with self-service error codes [DPP-690] (#11435)
* DbDispatcher handles transient and non-transient SQL exceptions with specific error codes

CHANGELOG_BEGIN
CHANGELOG_END

* Handle retries when verifying ledger id

* Addressed Pawel's comments

* Logging clean-up and small refactoring

* Exhaustive match against Oracle and PSQL exceptions
2021-11-01 13:35:33 +01:00
fabiotudone-da
e91ced54f3
KV: generate self-service error docs [KVL-1148] (#11431)
* Differentiate committer deduplication error code

* Let error docs generator tolerate `deprecated`

* Generate error documentation for KV

CHANGELOG_BEGIN
- [Integration Kit] Document KV-specific self-service errors
CHANGELOG_END

* Cleanup ErrorCodeDocumentationGenerator

* Add test case for deprecated errors

* Improve ErrorCodeDocumentationGenerator.getAnnotations

* Fix test

* Factor annotationTypeName

* Fix formatting

* Use case class for annotations and deal with missing ones in convertToDocItem

* Improve cause wording for KV duplicate command self-service error

* Simplify error message

Co-authored-by: tudor-da <tudor.voicu@digitalasset.com>

Co-authored-by: tudor-da <tudor.voicu@digitalasset.com>
2021-11-01 10:13:06 +00:00
tudor-da
6c88e55509
Pass submission id as correlation id to error codes in Ledger API (#11381)
CHANGELOG_BEGIN
CHANGELOG_END
2021-10-27 19:26:53 +00:00
fabiotudone-da
4a34b68500
KV: port V2 errors to self-service errors framework [KVL-1143] (#11326)
* KV: port V2 errors to self-service errors framework

CHANGELOG_BEGIN
CHANGELOG_END

* Fix ConversionsSpec compiling

* Use a valid ID for ValidationFailure

* Fix error details in Conversions

* Relax and simplify checks in KeyValueConsumptionSpec

* Fix formatting

* Fix definite answer in deduplication v2

* Try and make Scala 2.12 happy

* Fix typos in comments

* Use NOT_FOUND for unknown parties and provide them as resources

* Race (group) -> SubmissionRaces

* Don't deprecate resource exhausted (ABORTED) error

* Rename KVCompletionErrors group into KVErrors (ResourceExhausted can be synchronous)

* Remove unneeded braces

Co-authored-by: Hubert Slojewski <hubert.slojewski@digitalasset.com>

* Move toJsonString to where it's used

* Deprecate InvalidLedgerTime

* Embed deprecation comments into annotation

* Change deprecation messages so that they make more sense in the docs

* Move deprecated errors to a dedicated group as proposed by @tudor-da

Co-authored-by: Hubert Slojewski <hubert.slojewski@digitalasset.com>
2021-10-26 21:17:18 +00:00
tudor-da
ba6c2be1b5
Add missing TransactionId to com.daml.error.ErrorResource (#11396)
CHANGELOG_BEGIN
CHANGELOG_END
2021-10-26 09:32:15 +00:00
tudor-da
03cfd1237c
Configurable assertions in Ledger API test tool by feature descriptors (#11328)
* ApiVersionService propagates self-service error codes flag.
* ParticipantTestContext is enriched with feature descriptors
* ContractIdIT adapted with assertions for self-service error codes

CHANGELOG_BEGIN
CHANGELOG_END
2021-10-25 14:13:44 +02:00
pbatko-da
79037c8855
[DPP-646][Self-service error codes] Adopt ApiPackageManagementService (#11314)
CHANGELOG_BEGIN
CHANGELOG_END
2021-10-25 12:11:15 +02:00
pbatko-da
c60c94b13f
[DPP-645][Self-service error codes] Adapt ApiConfigManagementService (#11312)
CHANGELOG_BEGIN
CHANGELOG_END
2021-10-22 12:28:15 +02:00
pbatko-da
443b64dffc
[DPP-621][Self-service error codes] Adopt error codes in ApiVersionService (#11302)
CHANGELOG_BEGIN
CHANGELOG_END
2021-10-21 14:03:10 +02:00
pbatko-da
88c607b781
[Self-service error codes] Adapt ApiTransactionService [DPP-613] (#11094)
* [DPP-417][DPP-613] Adopt self-service error codes ApiTransactionService

CHANGELOG_BEGIN
CHANGELOG_END

* TV review

* TV review

* Uses ErrorFactories

* Error loggers use enriched logging contexts

* Deleted ApiTransactionServiceSpec

* Add TODO wrt to CommandValidation.invalidArgument

* Adapt transactionNotFound error assertions in conformance tests

* ErrorFactories.invalidArgumentWasNotFound for handling invalid event ids

* Revert improvement to TransactionNotFound cause message since
Canton still outputs the old message and assertions fail.

Co-authored-by: Tudor Voicu <tudor.voicu@digitalasset.com>
2021-10-20 22:18:26 +00:00
tudor-da
f9e67adafc
[Self-service error codes] Adapt error responses in ledger-api-auth [DPP-617] (#11223)
* [Self-service error codes] Implement V2 in Authorizer

CHANGELOG_BEGIN
CHANGELOG_END

* Added unit test for authorize (non-streamed)

* Fix after rebase

* Do not expose the error codes switching mechanism to the Java bindings

* Adjust InternalAuthorizationError to be SystemInternalAssumptionViolated

* Parameter names in test

* Testing AuthorizationInterceptor with regard to returned error codes

* Do not use default error code version switchers at instance creation

* Addressed Pawel's review comments

* Using ErrorFactories for error dispatching

* Pass loggingContext to Authorizer where available

* Generic internal authorization error
2021-10-20 13:28:21 +00:00
pbatko-da
8a3abce47b
[DPP-618][Self-service error codes] Adapt error codes in ApiPackageService (#11284)
CHANGELOG_BEGIN
CHANGELOG_END
2021-10-20 13:19:45 +02:00
pbatko-da
d3dad75d00
[DPP-592] Generate docs for self-service error codes. (#11129)
Adding `Daml Documentation >> Building applications >> "Self-Service Error Codes (Experimental)` section in the HTML documentation. 

The section is populated automatically with error code information retrieved from the classpath.
The process of generating documentation for error codes looks like this:
- first we find error codes information from the classpath,
- then we save it to a json file,
- then the json file is made available to a custom Sphinx extension,
- then the custom Sphinx extension generates documentation wherever we put a new custom Sphinx directive.

Try it out with
`./docs/scripts/live-preview.sh`
or
`./docs/scripts/preview.sh`


CHANGELOG_BEGIN
CHANGELOG_END
2021-10-20 08:47:54 +02:00
tudor-da
2fc7490df2
[Self-service error codes] Adapt error factories [DPP-656] (#11270)
* Moved ErrorCodesVersionSwitcher to //ledger/error

CHANGELOG_BEGIN
CHANGELOG_END

* Rename ErrorCodeLoggingContext to ContextualizedErrorLogger

* Refactored ErrorFactories
* All error factories use ContextualizedErrorLogger for being able to dispatch self-service error codes.
* The ContextualizedErrorLogger is passed down from the dispatching Ledger API services.
* ErrorFactoriesSpec asserts both legacy (V1) and self-service error codes (V2).

* Adapted ApiSubmissionService

* Addressed Marcin's review comments
2021-10-18 16:46:20 +02:00
pbatko-da
909a1bf896
[DPP-417][DDP-612] Adapt ApiSubmissionService to support V2 error codes (#11052)
Adapt ApiSubmissionService to support self-service (v2) error codes

CHANGELOG_BEGIN
CHANGELOG_END
2021-10-13 14:19:10 +02:00
fabiotudone-da
652d56999b
ErrorCodesVersionSwitcher -> ValueSwitch and push it down to /ledger/error also for KV to use (#11207)
CHANGELOG_BEGIN
CHANGELOG_END
2021-10-12 14:18:23 +00:00
fabiotudone-da
04494136bd
Allow converting an error into a gRPC status [KVL-1142] (#11204)
* Allow converting an error into a gRPC status

CHANGELOG_BEGIN
CHANGELOG_END

* Add missing dependencies
2021-10-12 14:04:01 +00:00
tudor-da
578fe7f10b
[Self-service error codes] Refactored for Canton compatibility [DPP-614] (#11164)
* [Self-service error codes] Refactored for Canton integration
* Introduces ErrorCodeLoggingContext which is used to abstract away the logging tech stack

CHANGELOG_BEGIN
CHANGELOG_END

* Moved all error definitions in //ledger/error

* Formatting

* Docs and remove of implicit conversion to DamlErrorCodeLoggingContext

* Fix compilation issues

* Fix tests

* Addressed Pawel's review comments

* Addressed Robert's review comments
2021-10-12 11:29:28 +00:00
tudor-da
31db15d555
Port error code changes (#11113)
* Port changes from Canton PR #7365

CHANGELOG_BEGIN
CHANGELOG_END

* Ported ErrorResource changes

* Ported constant use change

* Fix compilation issues
* Missing dependency on ledger-grpc
* Compilation issue SI-4440 in RejectionGenerators

* Re-review
2021-10-05 16:33:24 +00:00