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

feat(db): Wrap sqlx errors in DAL #1522

Merged
merged 14 commits into from Apr 4, 2024
Merged

Conversation

slowli
Copy link
Contributor

@slowli slowli commented Mar 29, 2024

What ❔

Wraps sqlx::Error in the core DAL crate using the existing instrumentation tools.

Why ❔

This allows naturally providing additional context for errors w/o the need to manually specify it in all DAL call sites.

Checklist

  • PR title corresponds to the body of PR (we generate changelog entries from PRs).
  • Tests for the changes have been added / updated.
  • Documentation comments have been added / updated.
  • Code has been formatted via zk fmt and zk lint.
  • Spellcheck has been run via zk spellcheck.
  • Linkcheck has been run via zk linkcheck.

@slowli
Copy link
Contributor Author

slowli commented Mar 29, 2024

Some general notes:

  • This PR doesn't go for completeness; a significant part of DAL queries still returns sqlx::Result<_>. If the approach looks fine, I plan to convert these errors in one or more follow-up PRs.
  • OTOH, I have converted some of DAL queries to understand which features are required from instrumentation (e.g., first-class COPY support; arg validation).
  • I plan to add more docs in a follow-up PR as well.

@slowli slowli marked this pull request as ready for review March 29, 2024 11:47
tomg10
tomg10 previously approved these changes Mar 29, 2024
Copy link
Contributor

@tomg10 tomg10 left a comment

Choose a reason for hiding this comment

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

This is exactly what I had in my mind when we talked about this, thanks for adding this and putting effort into porting significant part of the codebase, I don't even think we need to refactor the whole codebase now, if you don't have energy to, but big kudos if you do!
Just one thing, I think it would be very useful, if you put a very short message on platform channel to advertise this change :)
And other nit, i'd say it was quite risky to refactor that big part of the codebase and only then get review, you'd have wasted lots of time if any bigger changes to this approach were requested :P

@slowli
Copy link
Contributor Author

slowli commented Apr 1, 2024

i'd say it was quite risky to refactor that big part of the codebase and only then get review

Well yeah, but it gave me much better understanding at what kind of new APIs are required for DAL to support all functionality we want. Besides, a significant part of changes in this PR was mechanical (adding instrument / with_arg etc.), so it didn't require that much effort.

perekopskiy
perekopskiy previously approved these changes Apr 1, 2024
@slowli slowli dismissed stale reviews from perekopskiy and tomg10 via 51d964f April 2, 2024 09:34
EmilLuta
EmilLuta previously approved these changes Apr 2, 2024
Copy link
Contributor

@EmilLuta EmilLuta left a comment

Choose a reason for hiding this comment

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

This is sweet. Can't wait for coverage across all codebase. (please don't forget about prover_dal!)

@slowli slowli added this pull request to the merge queue Apr 2, 2024
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Apr 2, 2024
@slowli slowli added this pull request to the merge queue Apr 2, 2024
@slowli slowli removed this pull request from the merge queue due to a manual request Apr 2, 2024
@slowli slowli added this pull request to the merge queue Apr 4, 2024
Merged via the queue into main with commit 6e9ed8c Apr 4, 2024
40 checks passed
@slowli slowli deleted the aov-pla-858-wrap-sqlx-errors-in-dal branch April 4, 2024 07:34
github-merge-queue bot pushed a commit that referenced this pull request Apr 5, 2024
## What ❔

Continues wrapping `sqlx` errors in the core DAL crate, focusing on
state keeper-related queries.

## Why ❔

See #1522 for the reasoning.

## Checklist

- [x] PR title corresponds to the body of PR (we generate changelog
entries from PRs).
- [x] Tests for the changes have been added / updated.
- [x] Documentation comments have been added / updated.
- [x] Code has been formatted via `zk fmt` and `zk lint`.
- [x] Spellcheck has been run via `zk spellcheck`.
- [x] Linkcheck has been run via `zk linkcheck`.
github-merge-queue bot pushed a commit that referenced this pull request Apr 9, 2024
## What ❔

Continues wrapping `sqlx` errors in the core DAL crate, dealing with
most queries (other than a couple of large components: Ethereum sender
and contracts verifier).

## Why ❔

See #1522 for the reasoning.

## Checklist

- [x] PR title corresponds to the body of PR (we generate changelog
entries from PRs).
- [x] Tests for the changes have been added / updated.
- [x] Documentation comments have been added / updated.
- [x] Code has been formatted via `zk fmt` and `zk lint`.
- [x] Spellcheck has been run via `zk spellcheck`.
- [x] Linkcheck has been run via `zk linkcheck`.
github-merge-queue bot pushed a commit that referenced this pull request Apr 16, 2024
🤖 I have created a release *beep* *boop*
---


##
[23.0.0](core-v22.1.0...core-v23.0.0)
(2024-04-16)


### ⚠ BREAKING CHANGES

* **vm:** 1 5 0 support
([#1508](#1508))

### Features

* **api:** Add `tokens_whitelisted_for_paymaster`
([#1545](#1545))
([6da89cd](6da89cd))
* **api:** Log info about estimated fee
([#1611](#1611))
([daed58c](daed58c))
* Archive old prover jobs
([#1516](#1516))
([201476c](201476c))
* Archiving of prover in gpu_prover_queue
([#1537](#1537))
([a970629](a970629))
* **block-reverter:** only require private key for sending revert
transactions
([#1579](#1579))
([27de6b7](27de6b7))
* **config:** Initialize log config from files as well
([#1566](#1566))
([9e7db59](9e7db59))
* **configs:** Implement new format of configs and implement protobuf
for it ([#1501](#1501))
([086ba5b](086ba5b))
* **db:** Wrap sqlx errors in DAL
([#1522](#1522))
([6e9ed8c](6e9ed8c))
* EN Pruning
([#1418](#1418))
([cea6578](cea6578))
* **en:** add consistency checker condition in db pruner
([#1653](#1653))
([5ed92b9](5ed92b9))
* **en:** add manual vacuum step in db pruning
([#1652](#1652))
([c818be3](c818be3))
* **en:** Rate-limit L2 client requests
([#1500](#1500))
([3f55f1e](3f55f1e))
* **en:** Rework storing and using protective reads
([#1515](#1515))
([13c0c45](13c0c45))
* **en:** support for snapshots recovery in version_sync_task.rs
([#1585](#1585))
([f911276](f911276))
* **eth-watch:** Brush up Ethereum watcher component
([#1596](#1596))
([b0b8f89](b0b8f89))
* Expose component configs as info metrics
([#1584](#1584))
([7c8ae40](7c8ae40))
* **external-node:** external node distributed operation mode
([#1457](#1457))
([777ffca](777ffca))
* Extract commitment generator into a separate crate
([#1636](#1636))
([f763d1f](f763d1f))
* Extract eth_watch and shared metrics into separate crates
([#1572](#1572))
([4013771](4013771))
* Finalize fee address migration
([#1617](#1617))
([713f56b](713f56b))
* fix availability checker
([#1574](#1574))
([b2f21fb](b2f21fb))
* **genesis:** Add genesis config generator
([#1671](#1671))
([45164fa](45164fa))
* **genesis:** mark system contracts bytecodes as known
([#1554](#1554))
([5ffec51](5ffec51))
* Migrate gas limit to u64
([#1538](#1538))
([56dc049](56dc049))
* **node-framework:** Add consensus support
([#1546](#1546))
([27fe475](27fe475))
* **node-framework:** Add consistency checker
([#1527](#1527))
([3c28c25](3c28c25))
* remove unused variables in prover configs
([#1564](#1564))
([d32a019](d32a019))
* Remove zksync-rs SDK
([#1559](#1559))
([cc78e1d](cc78e1d))
* soft removal of `events_queue` table
([#1504](#1504))
([5899bc6](5899bc6))
* **sqlx:** Use offline mode by default
([#1539](#1539))
([af01edd](af01edd))
* Use config for max number of circuits
([#1573](#1573))
([9fcb87e](9fcb87e))
* Validium
([#1461](#1461))
([132a169](132a169))
* **vm:** 1 5 0 support
([#1508](#1508))
([a6ccd25](a6ccd25))


### Bug Fixes

* **api:** Change error code for Web3Error::NotImplemented
([#1521](#1521))
([0a13602](0a13602))
* **cache:** use factory deps cache correctly
([#1547](#1547))
([a923e11](a923e11))
* **CI:** Less flaky CI
([#1536](#1536))
([2444b53](2444b53))
* **configs:** Make genesis fields optional
([#1555](#1555))
([2d0ef46](2d0ef46))
* contract verifier config test
([#1583](#1583))
([030d447](030d447))
* **contract-verifier-api:** permissive cors for contract verifier api
server ([#1525](#1525))
([423f4a7](423f4a7))
* **db:** Fix "values cache update task failed" panics
([#1561](#1561))
([f7c5c14](f7c5c14))
* **en:** do not log error when whitelisted_tokens_for_aa is not
supported
([#1600](#1600))
([06c87f5](06c87f5))
* **en:** Fix DB pool for Postgres metrics on EN
([#1675](#1675))
([c51ca91](c51ca91))
* **en:** improved tree recovery logs
([#1619](#1619))
([ef12df7](ef12df7))
* **en:** Reduce amount of data in snapshot header
([#1528](#1528))
([afa1cf1](afa1cf1))
* **eth-client:** Use local FeeHistory type
([#1552](#1552))
([5a512e8](5a512e8))
* instruction count diff always N/A in VM perf comparison
([#1608](#1608))
([c0f3104](c0f3104))
* **vm:** Fix storage oracle and estimation
([#1634](#1634))
([932b14b](932b14b))
* **vm:** Increase log demuxer cycles on far calls
([#1575](#1575))
([90eb9d8](90eb9d8))


### Performance Improvements

* **db:** rework "finalized" block SQL query
([#1524](#1524))
([2b27290](2b27290))
* **merkle tree:** Manage indices / filters in RocksDB
([#1550](#1550))
([6bbfa06](6bbfa06))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: romanbrodetskiy <rb@matterlabs.dev>
github-merge-queue bot pushed a commit that referenced this pull request Apr 22, 2024
🤖 I have created a release *beep* *boop*
---


##
[13.0.0](prover-v12.2.0...prover-v13.0.0)
(2024-04-22)


### ⚠ BREAKING CHANGES

* **vm:** 1 5 0 support
([#1508](#1508))

### Features

* Archive old prover jobs
([#1516](#1516))
([201476c](201476c))
* Archiving of prover in gpu_prover_queue
([#1537](#1537))
([a970629](a970629))
* **configs:** Implement new format of configs and implement protobuf
for it ([#1501](#1501))
([086ba5b](086ba5b))
* **db:** Wrap sqlx errors in DAL
([#1522](#1522))
([6e9ed8c](6e9ed8c))
* fix availability checker
([#1574](#1574))
([b2f21fb](b2f21fb))
* Prover CLI Scaffoldings
([#1609](#1609))
([9a22fa0](9a22fa0))
* Remove zksync-rs SDK
([#1559](#1559))
([cc78e1d](cc78e1d))
* **sqlx:** Use offline mode by default
([#1539](#1539))
([af01edd](af01edd))
* **vm:** 1 5 0 support
([#1508](#1508))
([a6ccd25](a6ccd25))


### Bug Fixes

* **en:** Fix miscellaneous snapshot recovery nits
([#1701](#1701))
([13bfecc](13bfecc))
* made consensus store certificates asynchronously from statekeeper
([#1711](#1711))
([d1032ab](d1032ab))


### Performance Improvements

* **merkle tree:** Manage indices / filters in RocksDB
([#1550](#1550))
([6bbfa06](6bbfa06))


### Reverts

* **env:** Remove `ZKSYNC_HOME` env var from server
([#1713](#1713))
([aed23e1](aed23e1))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: perekopskiy <53865202+perekopskiy@users.noreply.github.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.

None yet

5 participants