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

Bugfix: avoid spurious tautology pruning when dealing with certain recursive messages #142

Merged
merged 1 commit into from
Aug 29, 2024

Conversation

rodaine
Copy link
Member

@rodaine rodaine commented Aug 29, 2024

When protovalidate-go builds up evaluators for a message, it first adds the pointer to the evaluator cache so any fields that recursively include that message will use that instead of attempting to rebuild the message infinitely until a stack overflow.

Also as part of this build process, any sub-evaluators that would tautologically validate (i.e., always be valid) are pruned to optimize the resulting evaluator for the message. Generally speaking, if an evaluator has no sub-evaluators or CEL expressions attached to it, then it's considered a tautology.

Individually, these features work well, but together they could collide causing validations to be lost for certain recursive message structures. For example, with the following message graph (arrows meaning "has a field of type"):

  graph TD;
      M1-->M2;
      M2-->M3;
      M3-->M2;
      M1-->M3;
Loading
  1. Suppose in this case, the only constraint is defined on M2.
  2. M1 starts to build, and as part of that, it starts to build M2.
  3. This continues to M3.
  4. M3 recursively depends on M2, and ends up loading the still incomplete pointer to M2's evaluator from the cache.
  5. Before adding it to M3's list of sub-evaluators, we check if it's a tautology.
  6. Depending on field ordering, M2's evaluator might have no sub-evaluators yet for its constraint, resulting in a false positive.
  7. This means M3 would not include the M2 sub-evaluator.
  8. Bubbling up back to M2, it would also check if M3's evaluator is a tautology, and since M2's was excluded, M3 is also a tautology false positive, and won't be included in M2's sub-evaluators.
  9. Then, however, M2 will pick up its actual constraints, resulting in M1 not detecting a tautology.
  10. Finally, M1 pulls M3's evaluator from the cache, sees that it is (wrongly) a tautology, and does not include it in its sub-evaluators.

Originally, I attempted to make the tautology detection check if the message's evaluator was "ready," but this resulted in infinite recursion when checking tautology between the messages. For now, instead, we treat all message evaluators as never a tautology. This solves the underlying issue, at the cost of nominally less optimal evaluators. This is certainly acceptable in that any other solution will likely make the evaluator builder more complex than it already is.


Longer term solutions to explore:

  • Track recursion and short-circuit when detected. Similar to this solution, but would only occur in recursive scenarios.
  • Do tautological pruning as a second pass after the evaluator has been completely constructed. Less efficient than doing it as we go, but will ensure that everything is built prior to the check.
  • Leave it as-is. The impact on memory and CPU is minimal.

Fixes #141

Copy link

The latest Buf updates on your PR. Results from workflow Buf / validate-protos (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedAug 29, 2024, 12:14 AM

@daemonl
Copy link

daemonl commented Aug 29, 2024

Can confirm this branch fixes both my initial case and the example case! Thanks heaps!

@rodaine rodaine merged commit fc11a84 into main Aug 29, 2024
9 checks passed
@rodaine rodaine deleted the rodaine/spurious-recursive-tautologies branch August 29, 2024 14:35
trunk-io bot pushed a commit to ride-app/user-service that referenced this pull request Sep 1, 2024
….5 (#1239)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [github.com/bufbuild/protovalidate-go](https://github.com/bufbuild/protovalidate-go) | `v0.6.4` -> `v0.6.5` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.4/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.4/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>bufbuild/protovalidate-go (github.com/bufbuild/protovalidate-go)</summary>

### [`v0.6.5`](https://github.com/bufbuild/protovalidate-go/releases/tag/v0.6.5)

[Compare Source](https://github.com/bufbuild/protovalidate-go/compare/v0.6.4...v0.6.5)

#### What's Changed

-   Add `buf.gen.yaml` v2 schema example by [@&#8203;milas](https://github.com/milas) in [bufbuild/protovalidate-go#138
-   Upgrade to support Go 1.23 by [@&#8203;rodaine](https://github.com/rodaine) in [bufbuild/protovalidate-go#139
-   Remove Go 1.20 support by [@&#8203;rodaine](https://github.com/rodaine) in [bufbuild/protovalidate-go#140
-   Bugfix: avoid spurious tautology pruning when dealing with certain recursive messages by [@&#8203;rodaine](https://github.com/rodaine) in [bufbuild/protovalidate-go#142

#### New Contributors

-   [@&#8203;milas](https://github.com/milas) made their first contribution in [bufbuild/protovalidate-go#138

**Full Changelog**: bufbuild/protovalidate-go@v0.6.4...v0.6.5

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone Asia/Kolkata, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ride-app/user-service).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41Ni4wIiwidXBkYXRlZEluVmVyIjoiMzguNTYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
charithe added a commit to cerbos/cerbos that referenced this pull request Sep 2, 2024
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
|
[github.com/Masterminds/sprig/v3](https://github.com/Masterminds/sprig)
| `v3.2.3` -> `v3.3.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fMasterminds%2fsprig%2fv3/v3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fMasterminds%2fsprig%2fv3/v3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fMasterminds%2fsprig%2fv3/v3.2.3/v3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fMasterminds%2fsprig%2fv3/v3.2.3/v3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |
|
[github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2)
| `v1.27.30` -> `v1.27.31` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2faws%2faws-sdk-go-v2%2fconfig/v1.27.31?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2faws%2faws-sdk-go-v2%2fconfig/v1.27.31?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2faws%2faws-sdk-go-v2%2fconfig/v1.27.30/v1.27.31?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2faws%2faws-sdk-go-v2%2fconfig/v1.27.30/v1.27.31?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | patch |
| [github.com/bufbuild/buf](https://github.com/bufbuild/buf) |
`v1.38.0` -> `v1.39.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fbufbuild%2fbuf/v1.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fbufbuild%2fbuf/v1.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fbufbuild%2fbuf/v1.38.0/v1.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fbufbuild%2fbuf/v1.38.0/v1.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |
|
[github.com/bufbuild/protovalidate-go](https://github.com/bufbuild/protovalidate-go)
| `v0.6.4` -> `v0.6.5` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.4/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.4/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | patch |
|
[github.com/cerbos/cloud-api](https://github.com/cerbos/cloud-api)
| `v0.1.23` -> `v0.1.24` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcerbos%2fcloud-api/v0.1.24?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fcerbos%2fcloud-api/v0.1.24?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fcerbos%2fcloud-api/v0.1.23/v0.1.24?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcerbos%2fcloud-api/v0.1.23/v0.1.24?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | patch |
|
[github.com/dadav/helm-schema](https://github.com/dadav/helm-schema)
| `4e067df` -> `f205574` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fdadav%2fhelm-schema/v0.0.0-20240831174639-f2055746722e?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fdadav%2fhelm-schema/v0.0.0-20240831174639-f2055746722e?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fdadav%2fhelm-schema/v0.0.0-20240817173722-4e067df209ea/v0.0.0-20240831174639-f2055746722e?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fdadav%2fhelm-schema/v0.0.0-20240817173722-4e067df209ea/v0.0.0-20240831174639-f2055746722e?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | digest |
|
[github.com/dgraph-io/badger/v4](https://github.com/dgraph-io/badger)
| `v4.2.0` -> `v4.3.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fdgraph-io%2fbadger%2fv4/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fdgraph-io%2fbadger%2fv4/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fdgraph-io%2fbadger%2fv4/v4.2.0/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fdgraph-io%2fbadger%2fv4/v4.2.0/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |
|
[github.com/fergusstrange/embedded-postgres](https://github.com/fergusstrange/embedded-postgres)
| `v1.28.0` -> `v1.29.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2ffergusstrange%2fembedded-postgres/v1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2ffergusstrange%2fembedded-postgres/v1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2ffergusstrange%2fembedded-postgres/v1.28.0/v1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2ffergusstrange%2fembedded-postgres/v1.28.0/v1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |
| [github.com/rs/cors](https://github.com/rs/cors) | `v1.11.0`
-> `v1.11.1` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2frs%2fcors/v1.11.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2frs%2fcors/v1.11.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2frs%2fcors/v1.11.0/v1.11.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2frs%2fcors/v1.11.0/v1.11.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | patch |
|
[google.golang.org/genproto/googleapis/api](https://github.com/googleapis/go-genproto)
| `4ba0660` -> `7e3bb23` |
[![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fgenproto%2fgoogleapis%2fapi/v0.0.0-20240827150818-7e3bb234dfed?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fgenproto%2fgoogleapis%2fapi/v0.0.0-20240827150818-7e3bb234dfed?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fgenproto%2fgoogleapis%2fapi/v0.0.0-20240823204242-4ba0660f739c/v0.0.0-20240827150818-7e3bb234dfed?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fgenproto%2fgoogleapis%2fapi/v0.0.0-20240823204242-4ba0660f739c/v0.0.0-20240827150818-7e3bb234dfed?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | digest |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) |
`v1.65.0` -> `v1.66.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fgrpc/v1.66.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fgrpc/v1.66.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fgrpc/v1.65.0/v1.66.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fgrpc/v1.65.0/v1.66.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |

---

### Release Notes

<details>
<summary>Masterminds/sprig (github.com/Masterminds/sprig/v3)</summary>

###
[`v3.3.0`](https://github.com/Masterminds/sprig/releases/tag/v3.3.0)

[Compare
Source](https://github.com/Masterminds/sprig/compare/v3.2.3...v3.3.0)

#### What's Changed

- Updating the Go versions used in testing by
[@&#8203;mattfarina](https://github.com/mattfarina) in
[Masterminds/sprig#405
- Change intial to initial. by
[@&#8203;chrishalbert](https://github.com/chrishalbert) in
[Masterminds/sprig#391
- Updating dependencies by
[@&#8203;mattfarina](https://github.com/mattfarina) in
[Masterminds/sprig#404
- correct value by
[@&#8203;jheyduk](https://github.com/jheyduk) in
[Masterminds/sprig#376
- Updating location of mergo by
[@&#8203;mattfarina](https://github.com/mattfarina) in
[Masterminds/sprig#406
- feature: added sha512sum function by
[@&#8203;itzik-elayev](https://github.com/itzik-elayev) in
[Masterminds/sprig#400
- docs: Add missing link to url functions by
[@&#8203;carlpett](https://github.com/carlpett) in
[Masterminds/sprig#375
- Update doc.go by [@&#8203;chey](https://github.com/chey) in
[Masterminds/sprig#369
- Update mathf.md by
[@&#8203;zzhu41](https://github.com/zzhu41) in
[Masterminds/sprig#290
- Removing duplicate documentation by
[@&#8203;mattfarina](https://github.com/mattfarina) in
[Masterminds/sprig#407
- Updating the changelog for the 3.3.0 release by
[@&#8203;mattfarina](https://github.com/mattfarina) in
[Masterminds/sprig#408

#### New Contributors

- [@&#8203;chrishalbert](https://github.com/chrishalbert) made
their first contribution in
[Masterminds/sprig#391
- [@&#8203;jheyduk](https://github.com/jheyduk) made their
first contribution in
[Masterminds/sprig#376
- [@&#8203;itzik-elayev](https://github.com/itzik-elayev) made
their first contribution in
[Masterminds/sprig#400
- [@&#8203;carlpett](https://github.com/carlpett) made their
first contribution in
[Masterminds/sprig#375
- [@&#8203;chey](https://github.com/chey) made their first
contribution in
[Masterminds/sprig#369
- [@&#8203;zzhu41](https://github.com/zzhu41) made their first
contribution in
[Masterminds/sprig#290

**Full Changelog**:
Masterminds/sprig@v3.2.3...v3.3.0

</details>

<details>
<summary>bufbuild/buf (github.com/bufbuild/buf)</summary>

###
[`v1.39.0`](https://github.com/bufbuild/buf/blob/HEAD/CHANGELOG.md#v1390---2024-08-27)

[Compare
Source](https://github.com/bufbuild/buf/compare/v1.38.0...v1.39.0)

-   Fix git input handling of relative HEAD refs without branch names.
- Add `includes` key to module configurations in v2 `buf.yaml`,
accepting a list of directories.
- If `includes` is specified, a proto file is considered in the module
only if it is in one of the
        directories specified.
- If both `includes` and `excludes` keys are specified for a module, a
proto file is considered
part of this module if it is contained in any of the include paths and
not in any of the exclude
        paths.
- Allow multiple module configurations in the same v2 `buf.yaml` to have
the same directory path.

</details>

<details>
<summary>bufbuild/protovalidate-go
(github.com/bufbuild/protovalidate-go)</summary>

###
[`v0.6.5`](https://github.com/bufbuild/protovalidate-go/releases/tag/v0.6.5)

[Compare
Source](https://github.com/bufbuild/protovalidate-go/compare/v0.6.4...v0.6.5)

#### What's Changed

- Add `buf.gen.yaml` v2 schema example by
[@&#8203;milas](https://github.com/milas) in
[bufbuild/protovalidate-go#138
- Upgrade to support Go 1.23 by
[@&#8203;rodaine](https://github.com/rodaine) in
[bufbuild/protovalidate-go#139
- Remove Go 1.20 support by
[@&#8203;rodaine](https://github.com/rodaine) in
[bufbuild/protovalidate-go#140
- Bugfix: avoid spurious tautology pruning when dealing with certain
recursive messages by
[@&#8203;rodaine](https://github.com/rodaine) in
[bufbuild/protovalidate-go#142

#### New Contributors

- [@&#8203;milas](https://github.com/milas) made their first
contribution in
[bufbuild/protovalidate-go#138

**Full Changelog**:
bufbuild/protovalidate-go@v0.6.4...v0.6.5

</details>

<details>
<summary>cerbos/cloud-api (github.com/cerbos/cloud-api)</summary>

###
[`v0.1.24`](https://github.com/cerbos/cloud-api/releases/tag/v0.1.24)

[Compare
Source](https://github.com/cerbos/cloud-api/compare/v0.1.23...v0.1.24)


[v0.1.24](https://github.com/cerbos/cloud-api/releases/tag/v0.1.24)

</details>

<details>
<summary>dgraph-io/badger (github.com/dgraph-io/badger/v4)</summary>

###
[`v4.3.0`](https://github.com/dgraph-io/badger/releases/tag/v4.3.0):
Badger v4.3.0

[Compare
Source](https://github.com/dgraph-io/badger/compare/v4.2.0...v4.3.0)

#### What's Changed

Fixes:

- chore(changelog): add a missed entry in CHANGELOG for v4.2.0 by
[@&#8203;mangalaman93](https://github.com/mangalaman93) in
[dgraph-io/badger#1988
- update README with project KVS using badger by
[@&#8203;tauraamui](https://github.com/tauraamui) in
[dgraph-io/badger#1989
- fix edge case for watermark when index is zero by
[@&#8203;mangalaman93](https://github.com/mangalaman93) in
[dgraph-io/badger#1999
- upgrade spf13/cobra to version v1.7.0 by
[@&#8203;mangalaman93](https://github.com/mangalaman93) in
[dgraph-io/badger#2001
- chore: update readme by
[@&#8203;joshua-goldstein](https://github.com/joshua-goldstein)
in
[dgraph-io/badger#2011
- perf: upgrade compress package test and benchmark. by
[@&#8203;siddhant2001](https://github.com/siddhant2001) in
[dgraph-io/badger#2009
- fix(Transactions): Fix resource consumption on empty write transaction
by [@&#8203;Zach-Johnson](https://github.com/Zach-Johnson) in
[dgraph-io/badger#2018
- chore(deps): bump golang.org/x/net from 0.7.0 to 0.17.0 by
[@&#8203;dependabot](https://github.com/dependabot) in
[dgraph-io/badger#2017
- perf(compactor): optimize allocations: use buffer for priorities by
[@&#8203;deff7](https://github.com/deff7) in
[dgraph-io/badger#2006
- fix(Transaction): discard empty transactions on CommitWith by
[@&#8203;Wondertan](https://github.com/Wondertan) in
[dgraph-io/badger#2031
- fix(levelHandler): use lock for levelHandler sort tables instead of
rlock by [@&#8203;xgzlucario](https://github.com/xgzlucario) in
[dgraph-io/badger#2034
- Docs: update README with project LLS using badger by
[@&#8203;Boc-chi-no](https://github.com/Boc-chi-no) in
[dgraph-io/badger#2032
- chore: MaxTableSize has been renamed to BaseTableSize by
[@&#8203;mitar](https://github.com/mitar) in
[dgraph-io/badger#2038
- Update CODEOWNERS by
[@&#8203;ryanfoxtyler](https://github.com/ryanfoxtyler) in
[dgraph-io/badger#2043
- Chore(): add Stale Action by
[@&#8203;ryanfoxtyler](https://github.com/ryanfoxtyler) in
[dgraph-io/badger#2070
- Update ristretto and refactor for use of generics by
[@&#8203;paralin](https://github.com/paralin) in
[dgraph-io/badger#2047
- chore: Remove obsolete comment by
[@&#8203;mitar](https://github.com/mitar) in
[dgraph-io/badger#2039
- chore(Docs): Update jQuery 3.2.1 to 3.7.1 by
[@&#8203;kokizzu](https://github.com/kokizzu) in
[dgraph-io/badger#2023
- chore(deps): bump the go_modules group with 3 updates by
[@&#8203;dependabot](https://github.com/dependabot) in
[dgraph-io/badger#2074
- docs(): update docs path by
[@&#8203;ryanfoxtyler](https://github.com/ryanfoxtyler) in
[dgraph-io/badger#2076
- perf: fix operation in seek by
[@&#8203;harshil-goel](https://github.com/harshil-goel) in
[dgraph-io/badger#2077
- Add lakeFS to README.md by
[@&#8203;N-o-Z](https://github.com/N-o-Z) in
[dgraph-io/badger#2078
- chore(): add Dependabot by
[@&#8203;ryanfoxtyler](https://github.com/ryanfoxtyler) in
[dgraph-io/badger#2080
- chore(deps): bump golangci/golangci-lint-action from 4 to 6 by
[@&#8203;dependabot](https://github.com/dependabot) in
[dgraph-io/badger#2083
- chore(deps): bump actions/upload-artifact from 3 to 4 by
[@&#8203;dependabot](https://github.com/dependabot) in
[dgraph-io/badger#2081
- chore(deps): bump github/codeql-action from 2 to 3 by
[@&#8203;dependabot](https://github.com/dependabot) in
[dgraph-io/badger#2082
- chore(deps): bump the minor group with 7 updates by
[@&#8203;dependabot](https://github.com/dependabot) in
[dgraph-io/badger#2089
- Action Manager by
[@&#8203;madhu72](https://github.com/madhu72) in
[dgraph-io/badger#2050
- chore(deps): bump golang.org/x/sys from 0.23.0 to 0.24.0 in the minor
group by [@&#8203;dependabot](https://github.com/dependabot) in
[dgraph-io/badger#2091
- chore(deps): bump github.com/golang/protobuf from 1.5.3 to 1.5.4 in
the patch group by
[@&#8203;dependabot](https://github.com/dependabot) in
[dgraph-io/badger#2090
- chore: fix some comments by
[@&#8203;dufucun](https://github.com/dufucun) in
[dgraph-io/badger#2092
- chore(deps): bump github.com/google/flatbuffers from 1.12.1 to
24.3.25+incompatible by
[@&#8203;dependabot](https://github.com/dependabot) in
[dgraph-io/badger#2084

CI:

- ci: change cron frequency to fix ghost jobs by
[@&#8203;joshua-goldstein](https://github.com/joshua-goldstein)
in
[dgraph-io/badger#2010
- fix(CI): Update to pull_request trigger by
[@&#8203;ryanfoxtyler](https://github.com/ryanfoxtyler) in
[dgraph-io/badger#2056
- ci/cd optimization by
[@&#8203;ryanfoxtyler](https://github.com/ryanfoxtyler) in
[dgraph-io/badger#2051
- fix(cd): fixed cd pipeline by
[@&#8203;harshil-goel](https://github.com/harshil-goel) in
[dgraph-io/badger#2093
- fix(cd): change name by
[@&#8203;harshil-goel](https://github.com/harshil-goel) in
[dgraph-io/badger#2094
- fix(cd): added more debug things to cd by
[@&#8203;harshil-goel](https://github.com/harshil-goel) in
[dgraph-io/badger#2095
- fix(cd): removing some debug items by
[@&#8203;harshil-goel](https://github.com/harshil-goel) in
[dgraph-io/badger#2096

**Full Changelog**:
dgraph-io/badger@v4.2.0...v4.3.0

</details>

<details>
<summary>fergusstrange/embedded-postgres
(github.com/fergusstrange/embedded-postgres)</summary>

###
[`v1.29.0`](https://github.com/fergusstrange/embedded-postgres/releases/tag/v1.29.0)

[Compare
Source](https://github.com/fergusstrange/embedded-postgres/compare/v1.28.0...v1.29.0)

#### What's Changed

- Update versions by
[@&#8203;fergusstrange](https://github.com/fergusstrange) in
[fergusstrange/embedded-postgres#142
**Full Changelog**:
fergusstrange/embedded-postgres@v1.28.0...v1.29.0

</details>

<details>
<summary>rs/cors (github.com/rs/cors)</summary>

###
[`v1.11.1`](https://github.com/rs/cors/compare/v1.11.0...v1.11.1)

[Compare
Source](https://github.com/rs/cors/compare/v1.11.0...v1.11.1)

</details>

<details>
<summary>grpc/grpc-go (google.golang.org/grpc)</summary>

###
[`v1.66.0`](https://github.com/grpc/grpc-go/releases/tag/v1.66.0):
Release 1.66.0

[Compare
Source](https://github.com/grpc/grpc-go/compare/v1.65.0...v1.66.0)

### New Features

- metadata: stabilize `ValueFromIncomingContext`
([#&#8203;7368](https://github.com/grpc/grpc-go/issues/7368))
- Special Thanks:
[@&#8203;KarthikReddyPuli](https://github.com/KarthikReddyPuli)
- client: stabilize the `WaitForStateChange` and `GetState` methods,
which were previously experimental.
([#&#8203;7425](https://github.com/grpc/grpc-go/issues/7425))
- xds: Implement ADS flow control mechanism
([#&#8203;7458](https://github.com/grpc/grpc-go/issues/7458))
- See
[grpc/grpc#34099
for context.
- balancer/rls: Add metrics for data cache and picker internals
([#&#8203;7484](https://github.com/grpc/grpc-go/issues/7484),
[#&#8203;7495](https://github.com/grpc/grpc-go/issues/7495))
- xds: LRS load reports now include the `total_issued_requests` field.
([#&#8203;7544](https://github.com/grpc/grpc-go/issues/7544))

### Bug Fixes

- grpc: Clients now return status code INTERNAL instead of UNIMPLEMENTED
when the server uses an unsupported compressor. This is consistent with
the [gRPC compression
spec](https://github.com/grpc/grpc/blob/master/doc/compression.md#compression-method-asymmetry-between-peers).
([#&#8203;7461](https://github.com/grpc/grpc-go/issues/7461))
- Special Thanks:
[@&#8203;Gayathri625](https://github.com/Gayathri625)
- transport: Fix a bug which could result in writes busy looping when
the underlying `conn.Write` returns errors
([#&#8203;7394](https://github.com/grpc/grpc-go/issues/7394))
- Special Thanks: [@&#8203;veshij](https://github.com/veshij)
- client: fix race that could lead to orphaned connections and
associated resources.
([#&#8203;7390](https://github.com/grpc/grpc-go/issues/7390))
- xds: use locality from the connected address for load reporting with
pick_first
([#&#8203;7378](https://github.com/grpc/grpc-go/issues/7378))
- without this fix, if a priority contains multiple localities with
pick_first, load was reported for the wrong locality
- client: prevent hanging during ClientConn.Close() when the network is
unreachable
([#&#8203;7540](https://github.com/grpc/grpc-go/issues/7540))

### Performance Improvements

- transport: double buffering is avoided when using an http connect
proxy and the target server waits for client to send the first message.
([#&#8203;7424](https://github.com/grpc/grpc-go/issues/7424))
- codec: Implement a new `Codec` which uses buffer recycling for encoded
message
([#&#8203;7356](https://github.com/grpc/grpc-go/issues/7356))
- introduce a `mem` package to facilitate buffer reuse
([#&#8203;7432](https://github.com/grpc/grpc-go/issues/7432))
- Special Thanks:
[@&#8203;PapaCharlie](https://github.com/PapaCharlie)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cerbos/cerbos).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41Ni4wIiwidXBkYXRlZEluVmVyIjoiMzguNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXJlYS9kZXBlbmRlbmNpZXMiLCJib3RzIiwia2luZC9jaG9yZSJdfQ==-->

---------

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Charith Ellawala <charith@cerbos.dev>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Charith Ellawala <charith@cerbos.dev>
charithe pushed a commit to cerbos/cerbos-sdk-go that referenced this pull request Sep 2, 2024
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[github.com/bufbuild/protovalidate-go](https://github.com/bufbuild/protovalidate-go)
| `v0.6.4` -> `v0.6.5` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.4/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fbufbuild%2fprotovalidate-go/v0.6.4/v0.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) |
`v1.65.0` -> `v1.66.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fgrpc/v1.66.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fgrpc/v1.66.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fgrpc/v1.65.0/v1.66.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fgrpc/v1.65.0/v1.66.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>bufbuild/protovalidate-go
(github.com/bufbuild/protovalidate-go)</summary>

###
[`v0.6.5`](https://github.com/bufbuild/protovalidate-go/releases/tag/v0.6.5)

[Compare
Source](https://github.com/bufbuild/protovalidate-go/compare/v0.6.4...v0.6.5)

#### What's Changed

- Add `buf.gen.yaml` v2 schema example by
[@&#8203;milas](https://github.com/milas) in
[bufbuild/protovalidate-go#138
- Upgrade to support Go 1.23 by
[@&#8203;rodaine](https://github.com/rodaine) in
[bufbuild/protovalidate-go#139
- Remove Go 1.20 support by
[@&#8203;rodaine](https://github.com/rodaine) in
[bufbuild/protovalidate-go#140
- Bugfix: avoid spurious tautology pruning when dealing with certain
recursive messages by
[@&#8203;rodaine](https://github.com/rodaine) in
[bufbuild/protovalidate-go#142

#### New Contributors

- [@&#8203;milas](https://github.com/milas) made their first
contribution in
[bufbuild/protovalidate-go#138

**Full Changelog**:
bufbuild/protovalidate-go@v0.6.4...v0.6.5

</details>

<details>
<summary>grpc/grpc-go (google.golang.org/grpc)</summary>

###
[`v1.66.0`](https://github.com/grpc/grpc-go/releases/tag/v1.66.0):
Release 1.66.0

[Compare
Source](https://github.com/grpc/grpc-go/compare/v1.65.0...v1.66.0)

### New Features

- metadata: stabilize `ValueFromIncomingContext`
([#&#8203;7368](https://github.com/grpc/grpc-go/issues/7368))
- Special Thanks:
[@&#8203;KarthikReddyPuli](https://github.com/KarthikReddyPuli)
- client: stabilize the `WaitForStateChange` and `GetState` methods,
which were previously experimental.
([#&#8203;7425](https://github.com/grpc/grpc-go/issues/7425))
- xds: Implement ADS flow control mechanism
([#&#8203;7458](https://github.com/grpc/grpc-go/issues/7458))
- See
[grpc/grpc#34099
for context.
- balancer/rls: Add metrics for data cache and picker internals
([#&#8203;7484](https://github.com/grpc/grpc-go/issues/7484),
[#&#8203;7495](https://github.com/grpc/grpc-go/issues/7495))
- xds: LRS load reports now include the `total_issued_requests` field.
([#&#8203;7544](https://github.com/grpc/grpc-go/issues/7544))

### Bug Fixes

- grpc: Clients now return status code INTERNAL instead of UNIMPLEMENTED
when the server uses an unsupported compressor. This is consistent with
the [gRPC compression
spec](https://github.com/grpc/grpc/blob/master/doc/compression.md#compression-method-asymmetry-between-peers).
([#&#8203;7461](https://github.com/grpc/grpc-go/issues/7461))
- Special Thanks:
[@&#8203;Gayathri625](https://github.com/Gayathri625)
- transport: Fix a bug which could result in writes busy looping when
the underlying `conn.Write` returns errors
([#&#8203;7394](https://github.com/grpc/grpc-go/issues/7394))
- Special Thanks: [@&#8203;veshij](https://github.com/veshij)
- client: fix race that could lead to orphaned connections and
associated resources.
([#&#8203;7390](https://github.com/grpc/grpc-go/issues/7390))
- xds: use locality from the connected address for load reporting with
pick_first
([#&#8203;7378](https://github.com/grpc/grpc-go/issues/7378))
- without this fix, if a priority contains multiple localities with
pick_first, load was reported for the wrong locality
- client: prevent hanging during ClientConn.Close() when the network is
unreachable
([#&#8203;7540](https://github.com/grpc/grpc-go/issues/7540))

### Performance Improvements

- transport: double buffering is avoided when using an http connect
proxy and the target server waits for client to send the first message.
([#&#8203;7424](https://github.com/grpc/grpc-go/issues/7424))
- codec: Implement a new `Codec` which uses buffer recycling for encoded
message
([#&#8203;7356](https://github.com/grpc/grpc-go/issues/7356))
- introduce a `mem` package to facilitate buffer reuse
([#&#8203;7432](https://github.com/grpc/grpc-go/issues/7432))
- Special Thanks:
[@&#8203;PapaCharlie](https://github.com/PapaCharlie)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cerbos/cerbos-sdk-go).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41Ni4wIiwidXBkYXRlZEluVmVyIjoiMzguNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXJlYS9kZXBlbmRlbmNpZXMiLCJib3RzIiwia2luZC9jaG9yZSJdfQ==-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@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.

[BUG] Recursive validation skipped depending on field order
3 participants