Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Data dependencies serialize imports #11038

Merged
merged 4 commits into from
Sep 30, 2021
Merged

Conversation

akrmn
Copy link
Contributor

@akrmn akrmn commented Sep 27, 2021

This generates an $$imports value in DAML-LF with the imports needed for orphan instances when the module is included via data-dependencies

Pull Request Checklist

  • Read and understand the contribution guidelines
  • Include appropriate tests
  • Set a descriptive title and thorough description
  • Add a reference to the issue this PR will solve, if appropriate
  • Include changelog additions in one or more commit message bodies between the CHANGELOG_BEGIN and CHANGELOG_END tags
  • Normal production system change, include purpose of change in description

NOTE: CI is not automatically run on non-members pull-requests for security
reasons. The reviewer will have to comment with /AzurePipelines run to
trigger the build.

Copy link
Contributor

@cocreature cocreature left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, minor nits and we should fix the test before merging.

@akrmn akrmn force-pushed the data-dependencies-imports-encoding branch from 93fa3fc to 927cb62 Compare September 28, 2021 08:00
Base automatically changed from data-dependencies-imports-encoding to main September 28, 2021 08:48
@akrmn akrmn force-pushed the data-dependencies-serialize-imports branch from 7b2299c to 0b67b40 Compare September 28, 2021 12:19
@akrmn akrmn force-pushed the data-dependencies-serialize-imports branch from 0b67b40 to b5eac1c Compare September 28, 2021 12:28
@akrmn akrmn force-pushed the data-dependencies-serialize-imports branch from b5eac1c to 2ba0017 Compare September 28, 2021 13:31
Copy link
Contributor

@cocreature cocreature left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@akrmn akrmn force-pushed the data-dependencies-serialize-imports branch from 2ba0017 to e2e6439 Compare September 28, 2021 13:38
@akrmn akrmn enabled auto-merge (squash) September 28, 2021 13:50
@akrmn
Copy link
Contributor Author

akrmn commented Sep 28, 2021

/azp run

@azure-pipelines
Copy link
Contributor

Azure Pipelines successfully started running 1 pipeline(s).

@akrmn akrmn force-pushed the data-dependencies-serialize-imports branch from e2e6439 to 0f87a36 Compare September 29, 2021 11:29
@akrmn
Copy link
Contributor Author

akrmn commented Sep 29, 2021

not sure what made those tests fail, so I rebased on main to see if it helps

@cocreature
Copy link
Contributor

I took a look at the failure in the damlc integration test:
It’s failing in InternedTypes. The issue is that the $$imports declaration also has a type ofc so that gets interned. Probably easiest to just modify the test to the new expected output (meaning more interned types).

@akrmn
Copy link
Contributor Author

akrmn commented Sep 29, 2021

oh! that makes sense, thanks for looking into it @cocreature

@akrmn akrmn force-pushed the data-dependencies-serialize-imports branch from 0f87a36 to 92bb3da Compare September 29, 2021 17:48
@akrmn akrmn disabled auto-merge September 29, 2021 17:49
@akrmn akrmn enabled auto-merge (squash) September 29, 2021 17:50
@akrmn
Copy link
Contributor Author

akrmn commented Sep 30, 2021

ah, the InternedTypes test also runs on older versions of the compiler. I'll add a check on the presence of $$imports and then do either the old or new check (5 interned types vs 20)

@cocreature
Copy link
Contributor

ah, the InternedTypes test also runs on older versions of the compiler. I'll add a check on the presence of $$imports and then do either the old or new check (5 interned types vs 20)

I don’t think I understand that. It runs for old LF versions but only LF >= 1.11 (that’s what SINCE-LF 1.11) does.
As far as I can tell your code should apply regardless of the LF version.
Can you describe the error you’re seeing?

@akrmn
Copy link
Contributor Author

akrmn commented Sep 30, 2021

These are the errors I got on CI:

//compiler/damlc/tests:integration-v111                                  FAILED in 169.3s
  /home/vsts/.cache/bazel/_bazel_vsts/704fb9a8c2b8a7269239cfce241f68b9/execroot/com_github_digital_asset_daml/bazel-out/k8-opt/testlogs/compiler/damlc/tests/integration-v111/test.log
//compiler/damlc/tests:integration-v112                                  FAILED in 152.4s
  /home/vsts/.cache/bazel/_bazel_vsts/704fb9a8c2b8a7269239cfce241f68b9/execroot/com_github_digital_asset_daml/bazel-out/k8-opt/testlogs/compiler/damlc/tests/integration-v112/test.log
//compiler/damlc/tests:integration-v113                                  FAILED in 165.7s
  /home/vsts/.cache/bazel/_bazel_vsts/704fb9a8c2b8a7269239cfce241f68b9/execroot/com_github_digital_asset_daml/bazel-out/k8-opt/testlogs/compiler/damlc/tests/integration-v113/test.log
//compiler/damlc/tests:integration-v16                                   FAILED in 131.2s
  /home/vsts/.cache/bazel/_bazel_vsts/704fb9a8c2b8a7269239cfce241f68b9/execroot/com_github_digital_asset_daml/bazel-out/k8-opt/testlogs/compiler/damlc/tests/integration-v16/test.log
//compiler/damlc/tests:repl                                              FAILED in 293.5s

(https://dev.azure.com/digitalasset/daml/_build/results?buildId=90136&view=logs&j=0da5d1d9-276d-5173-c4c4-9d4d4ed14fdb&t=7b720ed4-ea9c-5605-45fe-aca5cec61df4&l=9989)
I then ran //compiler/damlc/tests:integration-v111 on my machine (since I'm not sure how to fetch the log files from azure), and it failed on the same InternedTypes test, since that version didn't produce the $$imports value, but with my change the test always expects 20 interned types

@akrmn
Copy link
Contributor Author

akrmn commented Sep 30, 2021

oh! the problem is not that older versions don't have an $$imports value, they do! but the set of orphan modules in scope is different! in particular, v111 lacks DA.Internal.Exception

@cocreature
Copy link
Contributor

Oh that makes a lot more sense. exceptions only got added in LF 1.14. You could split it into two tests and limit it with @since-LF and until-lf maybe.

@akrmn
Copy link
Contributor Author

akrmn commented Sep 30, 2021

I guess the easiest change is to weaken the length check to >= 4. The important part of this test is that the types are shared for ap1 and ap2, and the second QUERY-LF takes care of that

@akrmn akrmn force-pushed the data-dependencies-serialize-imports branch 2 times, most recently from 673b55c to 9f624a9 Compare September 30, 2021 11:47
@akrmn akrmn force-pushed the data-dependencies-serialize-imports branch from 9f624a9 to fe96730 Compare September 30, 2021 13:10
@akrmn akrmn merged commit 229ce47 into main Sep 30, 2021
@akrmn akrmn deleted the data-dependencies-serialize-imports branch September 30, 2021 15:25
azure-pipelines bot pushed a commit that referenced this pull request Oct 6, 2021
This PR has been created by a script, which is not very smart
and does not have all the context. Please do double-check that
the version prefix is correct before merging.

@adriaanm-da is in charge of this release.

Commit log:
```
cfcdc13 Add deprecation output for sandbox classic (#11119)
ac5c52d DPP-609 Add StorageBackendTestsDeduplication (#11088)
55af7ad HttpServiceTestFixture provides a sandbox-classic ledger used for performance tests (#11128)
63ab3f3 Fix change ID references in services.rst (#11130)
31db15d Port error code changes (#11113)
9fd8182 move reusable functions from ContractsFetch to new fetch-contracts library (#11057)
c2084f6 Try and improve the explanation of compatibility test exclusions (#11114)
4df9b7c Rename command completion dedup time to duration in participant code [KVL-1057] (#10901)
11bc22d LF: builtins to create, signatory, and obersver on interface payload. (#11120)
d4cb1f9 KV ledgers: disable participant side command de-duplication [KVL-1083] (#11095)
b9a5a83 Minor: fix trace logging in `TimeBasedWriteSetSelector` (#11117)
018e908 [JSON-API] Make key_hash idx non unique  (#11102)
429f437 Remove HA indexer integration test on H2 (#11104)
9cffa1f LF: check LF transaction protobuf aginst local snapshots (#11064)
d7ee278 Optional table prefix for trigger service  (#11047)
268b2d3 Command deduplication - test case that uses CommandService and CommandSubmissionService [KVL-1106] (#11098)
fac05f6 bypass value enrichment for the performance test (#11112)
4860271 Port file was not written to... where? (#11108)
a8d703b Increase akka server request-timeout for HttpServiceIntegrationTests (#11109)
37d94aa Add unit for daily performance tests (#11107)
eb4ac8a Increase timeouts for resetting database (#11103)
db75f7d interface methods: Scala Typechecker (#11097)
d3e6f16 [JSON-API] Migrating tests to use sandbox next (#11034)
ffc8d68 Data dependencies deserialize imports (#11037)
4b31bf0 update compat versions for 1.17.0 (#11075)
9fd6326 interfaces: consuming/non-consuming iface choices (#11009)
229ce47 Data dependencies serialize imports (#11038)
5d9ec65 Add test case for parallel command deduplication using mixed clients [KVL-1090] (#11093)
d64d965 kvutils: Print state updates before and after normalization. (#11096)
be216aa update NOTICES file (#11089)
517e866 Extract common code for command dedup conformance tests [KVL-1090] (#11092)
7a4963b add `--max-inbound-message-size` flag to `daml ledger export` (#11087)
26d10b2 Drop NodeId type parameter (#10921)
3cbd922 More NonEmpty functions (#10930)
bcd4686 interface methods: Speedy (#11076)
85adaab [DPP-417][DPP-595] Error codes switching - follow-up (#11074)
d7b280b Remove debug print in daml-lf/interpreter build (#11091)
1ed6428 LF: move archive snapshots in a separate directory (#11081)
5e424f8 Command dedup conformance suites readme (#11051)
8290347 DPP-496 HA indexer integration test (#11033)
735c309 Switch from InputStream to Byte Array at the binary content JDBC transport (#11072)
6ae3afa fix perf reporting (#11073)
bf801a6 Fix SimpleDeduplicationBasic when participant deduplication is disabled (#11083)
62234dc [Short] Remove unused code (#11079)
c1d1521 interface methods: Scala AST (#11070)
7dd9c2d Remove expectations for internal failures from parallel command dedup tests (#11061)
5112599 Explicit discard in daml-lf/interpreter (#11067)
554b36c rotate release duty after 1.18.0-snapshot.20210928.7948.0.b4d00317 (#11059)
d156964 Release SDK 1.17.0 (#11062)
6d8cf70 Handle interface methods in LF conversion (#11054)
87ecf1f daml-ledger: better errors for non-json responses. (#11055)
ec2d26f [Divulgence pruning] Fixes divulgence pruning offset update query (#11046)
f13c6d6 release 1.18.0-snapshot.20210928.7948.0.b4d00317 (#11058)
d1805a3 More dependabot fun (#11063)
07b273a update NOTICES file (#11060)
```
Changelog:
```

- [JSON-API] make key_hash indexes non-unique, this fixes a bug where a duplicate key conflict was raised on the query store when the same contract was being witnessed twice by two separate parties

* [Trigger Service] Enable the new `tablePrefix` setting in the `--jdbc`
  flag to add a prefix to all tables used by the trigger service to
  avoid collisions with other components using the same db-schema.
* [Trigger Service] Enable the new ``--allow-existing-schema`` flag to
  initialize the trigger service on a database with a pre-existing
  schema.

- [Daml Assistant] Add support for `--max-inbound-message-size` flag to the Ledger Export tool.

Add cons, find, delete and deleteBy functions to NonEmpty module.
```

CHANGELOG_BEGIN
CHANGELOG_END
adriaanm-da pushed a commit that referenced this pull request Oct 6, 2021
This PR has been created by a script, which is not very smart
and does not have all the context. Please do double-check that
the version prefix is correct before merging.

@adriaanm-da is in charge of this release.

Commit log:
```
cfcdc13 Add deprecation output for sandbox classic (#11119)
ac5c52d DPP-609 Add StorageBackendTestsDeduplication (#11088)
55af7ad HttpServiceTestFixture provides a sandbox-classic ledger used for performance tests (#11128)
63ab3f3 Fix change ID references in services.rst (#11130)
31db15d Port error code changes (#11113)
9fd8182 move reusable functions from ContractsFetch to new fetch-contracts library (#11057)
c2084f6 Try and improve the explanation of compatibility test exclusions (#11114)
4df9b7c Rename command completion dedup time to duration in participant code [KVL-1057] (#10901)
11bc22d LF: builtins to create, signatory, and obersver on interface payload. (#11120)
d4cb1f9 KV ledgers: disable participant side command de-duplication [KVL-1083] (#11095)
b9a5a83 Minor: fix trace logging in `TimeBasedWriteSetSelector` (#11117)
018e908 [JSON-API] Make key_hash idx non unique  (#11102)
429f437 Remove HA indexer integration test on H2 (#11104)
9cffa1f LF: check LF transaction protobuf aginst local snapshots (#11064)
d7ee278 Optional table prefix for trigger service  (#11047)
268b2d3 Command deduplication - test case that uses CommandService and CommandSubmissionService [KVL-1106] (#11098)
fac05f6 bypass value enrichment for the performance test (#11112)
4860271 Port file was not written to... where? (#11108)
a8d703b Increase akka server request-timeout for HttpServiceIntegrationTests (#11109)
37d94aa Add unit for daily performance tests (#11107)
eb4ac8a Increase timeouts for resetting database (#11103)
db75f7d interface methods: Scala Typechecker (#11097)
d3e6f16 [JSON-API] Migrating tests to use sandbox next (#11034)
ffc8d68 Data dependencies deserialize imports (#11037)
4b31bf0 update compat versions for 1.17.0 (#11075)
9fd6326 interfaces: consuming/non-consuming iface choices (#11009)
229ce47 Data dependencies serialize imports (#11038)
5d9ec65 Add test case for parallel command deduplication using mixed clients [KVL-1090] (#11093)
d64d965 kvutils: Print state updates before and after normalization. (#11096)
be216aa update NOTICES file (#11089)
517e866 Extract common code for command dedup conformance tests [KVL-1090] (#11092)
7a4963b add `--max-inbound-message-size` flag to `daml ledger export` (#11087)
26d10b2 Drop NodeId type parameter (#10921)
3cbd922 More NonEmpty functions (#10930)
bcd4686 interface methods: Speedy (#11076)
85adaab [DPP-417][DPP-595] Error codes switching - follow-up (#11074)
d7b280b Remove debug print in daml-lf/interpreter build (#11091)
1ed6428 LF: move archive snapshots in a separate directory (#11081)
5e424f8 Command dedup conformance suites readme (#11051)
8290347 DPP-496 HA indexer integration test (#11033)
735c309 Switch from InputStream to Byte Array at the binary content JDBC transport (#11072)
6ae3afa fix perf reporting (#11073)
bf801a6 Fix SimpleDeduplicationBasic when participant deduplication is disabled (#11083)
62234dc [Short] Remove unused code (#11079)
c1d1521 interface methods: Scala AST (#11070)
7dd9c2d Remove expectations for internal failures from parallel command dedup tests (#11061)
5112599 Explicit discard in daml-lf/interpreter (#11067)
554b36c rotate release duty after 1.18.0-snapshot.20210928.7948.0.b4d00317 (#11059)
d156964 Release SDK 1.17.0 (#11062)
6d8cf70 Handle interface methods in LF conversion (#11054)
87ecf1f daml-ledger: better errors for non-json responses. (#11055)
ec2d26f [Divulgence pruning] Fixes divulgence pruning offset update query (#11046)
f13c6d6 release 1.18.0-snapshot.20210928.7948.0.b4d00317 (#11058)
d1805a3 More dependabot fun (#11063)
07b273a update NOTICES file (#11060)
```
Changelog:
```

- [JSON-API] make key_hash indexes non-unique, this fixes a bug where a duplicate key conflict was raised on the query store when the same contract was being witnessed twice by two separate parties

* [Trigger Service] Enable the new `tablePrefix` setting in the `--jdbc`
  flag to add a prefix to all tables used by the trigger service to
  avoid collisions with other components using the same db-schema.
* [Trigger Service] Enable the new ``--allow-existing-schema`` flag to
  initialize the trigger service on a database with a pre-existing
  schema.

- [Daml Assistant] Add support for `--max-inbound-message-size` flag to the Ledger Export tool.

Add cons, find, delete and deleteBy functions to NonEmpty module.
```

CHANGELOG_BEGIN
CHANGELOG_END

Co-authored-by: Azure Pipelines DAML Build <support@digitalasset.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants