-
-
Notifications
You must be signed in to change notification settings - Fork 58
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: Offline Support #392
Conversation
Will review this in a bit. In the mean time, getsentry/sentry-dotnet#280 is probably useful to read through. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couldn't finish the review, but commenting what I have
I've got some more changes incoming because I have to correctly handle different statuses from the underlying transport.
|
Will finish reviewing this PR by eow, asked some other folks at Sentry to take a look to make sure we are not missing anything here. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't spot this piece in the PR but are the directories where the file dumps isolated per process instance? Is there a chance two instances would pick up anothers payloads?
Seems that the URL stored enodes the auth token (and project Id?) So even if they did, they'd just be uploading the dumps from another process, is that right?
Electron doesn't support multiple instances using the same |
Closes #369
BaseUploader
so there's only a single queueStore
so it can parseDate
objectsPersistedRequestQueue
which stores an array of queue item metadata in aStore
and request bodies in separate filesElectronOfflineNetTransport
that extends theElectronNetTransport
and makes it the default transport.sendRequest
fails, it pushes the failed request into the queue.Tests
Electron network emulation with
{ offline: true }
doesn't appear to work from the main process and invalid URLs take too long to timeout for reliable tests. Instead we have special DSNs which the server responds differently to.Still to do:
PersistedRequestQueue
with overlappingadd
/pop
PersistedRequestQueue
since it's difficult to test all its features via e2eOther
This PR also introduces caching for Electron binaries because we were getting 503 Egress exceeded errors.