Are some event payloads ignored? Is this documented anywhere?

I’m writing a Sentry SDK for Haskell (the current one is too outdated), and have set-up some property-based tests, which are failing whenever the following event-payload is generated:

{
  "platform": "haskell",
  "extra": {},
  "server_name": null,
  "environment": null,
  "fingerprint": [],
  "modules": {},
  "release": null,
  "transaction": null,
  "logger": null,
  "dist": null,
  "event_id": "00000000000000000000000000000004",
  "timestamp": "2020-10-17T12:24:32.158554Z",
  "level": "fatal",
  "tags": {}
}

The call to /store/ doesn’t fail, but the resultant call to /api/0/organizations/sentry/eventids/00000000000000000000000000000004/ always results in a 404, irrespective of how long I wait.

That’s not the only event payload that’s going missing. Randomly stuff just goes missing with no particular pattern between payloads. This is worrying!

I don’t think we do sampling at this level. Can you share more logs? Especially from nginx, relay and web instances?

/cc @untitaker and @jauer in case I’m missing something obvious here.

If you’re saying this is totally random, does this happen for event payloads where the event_id does not start with 0?

We usually do not ignore or drop event payloads, even if they contain virtually no data. However, the event_id has a special meaning. How are you testing this – against sentry.io or a local Sentry instance?

Most importantly, you cannot reuse an event ID. If you send an event, delete it and then send another one with the same event_id, it will remain deleted. There are certain “optimizations” in our pipeline, due to which you may temporarily see this event, but after some time it will be gone.

1 Like

Thanks. I believe the PBT was reusing a bunch of event-ids especially when it was trying to generate UUIDs close to 0000-0000-0000-0000-000000

@BYK @untitaker @jauer is there any way to purge all data in all Sentry data-stores before a test run?

Are you using sentry.io or a custom Docker-based setup?

Generally, I would recommend to generate random event IDs, or no IDs at all and use the UUID returned by the API for testing.

Edit: Please note that this has also been answered in Delete all issues in a project

Using the on-prem/docker setup.

Is it possible to capture an event without generating a UUID on the client-site? The docs at https://develop.sentry.dev/sdk/event-payloads/#required-attributes say that event_id is a required field while storing an event.

If that is to be treated as a recommendation and not a requirement, what are the pros & cons of generating a UUID on the client-site vs letting the server generate one?