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

deprecate(hierarchical_hashes): Remove references to hierarchical hashes #353

Merged
merged 1 commit into from
Dec 2, 2024

Conversation

armenzg
Copy link
Member

@armenzg armenzg commented Nov 26, 2024

It has already been removed from Sentry.

Once this gets merged, this Snuba PR will pass getsentry/snuba#6604

See https://github.com/orgs/getsentry/projects/242 for the overall project.

@armenzg armenzg requested a review from untitaker November 26, 2024 21:11
@armenzg armenzg self-assigned this Nov 26, 2024
@armenzg armenzg requested review from a team as code owners November 26, 2024 21:11
Copy link

versions in use:

The following repositories use one of the schemas you are editing. It is recommended to roll out schema changes in small PRs, meaning that if those used versions lag behind the latest, it is probably best to update those services before rolling out your change.

latest version: 0.1.121

changes considered breaking

schemas/events.v1.schema.json

  • {"path": ".<anyOf:3>.1", "change": {"ConstAdd": {"added": "end_unmerge"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:3>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "hashes"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:3>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "transaction_id"}}}
    
  • {"path": ".<anyOf:3>.2", "change": {"RequiredAdd": {"property": "hashes"}}}
    
  • {"path": ".<anyOf:4>.1", "change": {"ConstAdd": {"added": "exclude_groups"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:4>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "group_ids"}}}
    
  • {"path": ".<anyOf:4>.2", "change": {"RequiredAdd": {"property": "group_ids"}}}
    
  • {"path": ".<anyOf:5>", "change": {"TupleChange": {"new_length": 4}}}
    
  • {"path": ".<anyOf:5>.0", "change": {"RangeAdd": {"added": "minimum", "value": 0.0}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:5>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "data"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:5>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "datetime"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:5>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "event_id"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:5>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "group_id"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:5>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "message"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:5>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "platform"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:5>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "primary_hash"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:5>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "retention_days"}}}
    
  • {"path": ".<anyOf:5>.2", "change": {"RequiredAdd": {"property": "data"}}}
    
  • {"path": ".<anyOf:5>.2", "change": {"RequiredAdd": {"property": "event_id"}}}
    
  • {"path": ".<anyOf:5>.2", "change": {"RequiredAdd": {"property": "group_id"}}}
    
  • {"path": ".<anyOf:5>.2", "change": {"RequiredAdd": {"property": "message"}}}
    
  • {"path": ".<anyOf:5>.2", "change": {"RequiredAdd": {"property": "primary_hash"}}}
    
  • {"path": ".<anyOf:6>", "change": {"TupleChange": {"new_length": 3}}}
    
  • {"path": ".<anyOf:6>.0", "change": {"ConstAdd": {"added": 2}}}
    
  • {"path": ".<anyOf:6>.1", "change": {"ConstAdd": {"added": "replace_group"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:6>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "event_ids"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:6>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "from_timestamp"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:6>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "new_group_id"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:6>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "to_timestamp"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:6>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "transaction_id"}}}
    
  • {"path": ".<anyOf:6>.2", "change": {"RequiredAdd": {"property": "event_ids"}}}
    
  • {"path": ".<anyOf:6>.2", "change": {"RequiredAdd": {"property": "new_group_id"}}}
    
  • {"path": ".<anyOf:7>.1", "change": {"ConstAdd": {"added": "start_delete_groups"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:7>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "group_ids"}}}
    
  • {"path": ".<anyOf:7>.2", "change": {"RequiredAdd": {"property": "datetime"}}}
    
  • {"path": ".<anyOf:7>.2", "change": {"RequiredAdd": {"property": "group_ids"}}}
    
  • {"path": ".<anyOf:8>.1", "change": {"ConstAdd": {"added": "start_delete_tag"}}}
    
  • {"path": ".<anyOf:9>.1", "change": {"ConstAdd": {"added": "start_merge"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:9>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "datetime"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:9>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "new_group_id"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:9>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "previous_group_ids"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:9>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "transaction_id"}}}
    
  • {"path": ".<anyOf:9>.2", "change": {"RequiredAdd": {"property": "datetime"}}}
    
  • {"path": ".<anyOf:9>.2", "change": {"RequiredAdd": {"property": "new_group_id"}}}
    
  • {"path": ".<anyOf:9>.2", "change": {"RequiredAdd": {"property": "previous_group_ids"}}}
    
  • {"path": ".<anyOf:10>.1", "change": {"ConstAdd": {"added": "start_unmerge"}}}
    
  • {"path": ".<anyOf:11>.1", "change": {"ConstAdd": {"added": "tombstone_events"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:11>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "datetime"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:11>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "event_ids"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:11>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "from_timestamp"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:11>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "old_primary_hash"}}}
    
  • Added a new property, but the consumer has been ignoring additional properties so far. This is probably still fine, but please double-check that the producer does not already send this property with a different type in practice than you defined in this schema.

    {"path": ".<anyOf:11>.2", "change": {"PropertyAdd": {"lhs_additional_properties": true, "added": "to_timestamp"}}}
    
  • {"path": ".<anyOf:11>.2", "change": {"RequiredAdd": {"property": "event_ids"}}}
    
benign changes

schemas/events.v1.schema.json

  • {"path": ".<anyOf:3>.1", "change": {"ConstRemove": {"removed": "end_unmerge_hierarchical"}}}
    
  • Removed a property hierarchical_hash from .<anyOf:3>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:3>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "hierarchical_hash"}}}
    
  • Removed a property primary_hash from .<anyOf:3>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:3>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "primary_hash"}}}
    
  • {"path": ".<anyOf:3>.2", "change": {"RequiredRemove": {"property": "hierarchical_hash"}}}
    
  • {"path": ".<anyOf:3>.2", "change": {"RequiredRemove": {"property": "primary_hash"}}}
    
  • {"path": ".<anyOf:4>.1", "change": {"ConstRemove": {"removed": "end_unmerge"}}}
    
  • Removed a property datetime from .<anyOf:4>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:4>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "datetime"}}}
    
  • Removed a property hashes from .<anyOf:4>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:4>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "hashes"}}}
    
  • Removed a property new_group_id from .<anyOf:4>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:4>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "new_group_id"}}}
    
  • Removed a property previous_group_id from .<anyOf:4>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:4>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "previous_group_id"}}}
    
  • Removed a property transaction_id from .<anyOf:4>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:4>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "transaction_id"}}}
    
  • {"path": ".<anyOf:4>.2", "change": {"RequiredRemove": {"property": "datetime"}}}
    
  • {"path": ".<anyOf:4>.2", "change": {"RequiredRemove": {"property": "hashes"}}}
    
  • {"path": ".<anyOf:4>.2", "change": {"RequiredRemove": {"property": "new_group_id"}}}
    
  • {"path": ".<anyOf:4>.2", "change": {"RequiredRemove": {"property": "previous_group_id"}}}
    
  • {"path": ".<anyOf:5>.0", "change": {"ConstRemove": {"removed": 2}}}
    
  • {"path": ".<anyOf:5>.1", "change": {"ConstRemove": {"removed": "exclude_groups"}}}
    
  • Removed a property group_ids from .<anyOf:5>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:5>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "group_ids"}}}
    
  • {"path": ".<anyOf:5>.2", "change": {"RequiredRemove": {"property": "group_ids"}}}
    
  • {"path": ".<anyOf:6>.0", "change": {"RangeRemove": {"removed": "minimum", "value": 0.0}}}
    
  • Removed a property data from .<anyOf:6>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:6>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "data"}}}
    
  • Removed a property event_id from .<anyOf:6>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:6>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "event_id"}}}
    
  • Removed a property group_id from .<anyOf:6>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:6>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "group_id"}}}
    
  • Removed a property message from .<anyOf:6>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:6>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "message"}}}
    
  • Removed a property platform from .<anyOf:6>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:6>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "platform"}}}
    
  • Removed a property primary_hash from .<anyOf:6>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:6>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "primary_hash"}}}
    
  • Removed a property retention_days from .<anyOf:6>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:6>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "retention_days"}}}
    
  • {"path": ".<anyOf:6>.2", "change": {"RequiredRemove": {"property": "data"}}}
    
  • {"path": ".<anyOf:6>.2", "change": {"RequiredRemove": {"property": "event_id"}}}
    
  • {"path": ".<anyOf:6>.2", "change": {"RequiredRemove": {"property": "group_id"}}}
    
  • {"path": ".<anyOf:6>.2", "change": {"RequiredRemove": {"property": "message"}}}
    
  • {"path": ".<anyOf:6>.2", "change": {"RequiredRemove": {"property": "primary_hash"}}}
    
  • {"path": ".<anyOf:7>.1", "change": {"ConstRemove": {"removed": "replace_group"}}}
    
  • Removed a property event_ids from .<anyOf:7>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:7>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "event_ids"}}}
    
  • Removed a property from_timestamp from .<anyOf:7>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:7>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "from_timestamp"}}}
    
  • Removed a property new_group_id from .<anyOf:7>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:7>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "new_group_id"}}}
    
  • Removed a property to_timestamp from .<anyOf:7>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:7>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "to_timestamp"}}}
    
  • {"path": ".<anyOf:7>.2", "change": {"RequiredRemove": {"property": "event_ids"}}}
    
  • {"path": ".<anyOf:7>.2", "change": {"RequiredRemove": {"property": "new_group_id"}}}
    
  • {"path": ".<anyOf:8>.1", "change": {"ConstRemove": {"removed": "start_delete_groups"}}}
    
  • Removed a property datetime from .<anyOf:8>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:8>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "datetime"}}}
    
  • Removed a property group_ids from .<anyOf:8>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:8>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "group_ids"}}}
    
  • Removed a property transaction_id from .<anyOf:8>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:8>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "transaction_id"}}}
    
  • {"path": ".<anyOf:8>.2", "change": {"RequiredRemove": {"property": "datetime"}}}
    
  • {"path": ".<anyOf:8>.2", "change": {"RequiredRemove": {"property": "group_ids"}}}
    
  • {"path": ".<anyOf:9>.1", "change": {"ConstRemove": {"removed": "start_delete_tag"}}}
    
  • {"path": ".<anyOf:10>.1", "change": {"ConstRemove": {"removed": "start_merge"}}}
    
  • Removed a property datetime from .<anyOf:10>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:10>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "datetime"}}}
    
  • Removed a property new_group_id from .<anyOf:10>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:10>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "new_group_id"}}}
    
  • Removed a property previous_group_ids from .<anyOf:10>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:10>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "previous_group_ids"}}}
    
  • Removed a property transaction_id from .<anyOf:10>.2, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:10>.2", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "transaction_id"}}}
    
  • {"path": ".<anyOf:10>.2", "change": {"RequiredRemove": {"property": "datetime"}}}
    
  • {"path": ".<anyOf:10>.2", "change": {"RequiredRemove": {"property": "new_group_id"}}}
    
  • {"path": ".<anyOf:10>.2", "change": {"RequiredRemove": {"property": "previous_group_ids"}}}
    
  • {"path": ".<anyOf:11>.1", "change": {"ConstRemove": {"removed": "start_unmerge_hierarchical"}}}
    

schemas/generic-events.v1.schema.json

  • Removed a property hierarchical_hashes from .<anyOf:0>.2.data, but it is still accepted via additionalProperties=true

    {"path": ".<anyOf:0>.2.data", "change": {"PropertyRemove": {"lhs_additional_properties": true, "removed": "hierarchical_hashes"}}}
    

⚠️ This PR contains breaking changes. Normally you should avoid that and make
your consumer backwards-compatible (meaning that updated consumers can still
accept old messages). There are a few exceptions:

  • If consumers already require these invariants in practice, and you're
    just adjusting the JSON schema to reality, ignore this warning.

  • If you know what you are doing, this change could potentially be rolled out
    to producers first, but that's not a flow we support.

@armenzg
Copy link
Member Author

armenzg commented Dec 2, 2024

We spoke on Slack about the comments on this PR.
Merging now.

@armenzg armenzg merged commit 75d9496 into main Dec 2, 2024
15 of 16 checks passed
@armenzg armenzg deleted the remove_hierarchical_hashes/armenzg branch December 2, 2024 13:55
armenzg added a commit to getsentry/relay that referenced this pull request Dec 3, 2024
This is to include [this
change](getsentry/sentry-kafka-schemas#353) and
to unblock [this Snuba
PR](getsentry/snuba#6604).

#skip-changelog
armenzg added a commit to getsentry/sentry that referenced this pull request Dec 3, 2024
This is to include [this
change](getsentry/sentry-kafka-schemas#353) and
to unblock [this Snuba
PR](getsentry/snuba#6604).

---------

Co-authored-by: getsantry[bot] <66042841+getsantry[bot]@users.noreply.github.com>
armenzg added a commit to getsentry/snuba that referenced this pull request Dec 3, 2024
Hierarchical grouping was deprecated back in September.

See project: https://github.com/orgs/getsentry/projects/242

The failing test depends on this PR getting merged first:
getsentry/sentry-kafka-schemas#353

---------

Co-authored-by: getsantry[bot] <66042841+getsantry[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.

2 participants