} catch (JSONException parse) {
EventBuilder eventBuilder = new EventBuilder()
.withMessage("HttpException could not be parsed.")
.withExtra("exception message", parse.getMessage())
.withLevel(Event.Level.ERROR)
.withSentryInterface(new ExceptionInterface(parse));
Sentry.capture(eventBuilder);
}
Given above snippet, I receive below exception:
E/i*.s*.b*.DiskBuffer: Error writing Event to offline storage: 6c0d6dda-1172-40e7-aeab-7e383a19f224
java.io.NotSerializableException: io.sentry.event.interfaces.SentryStackTraceElement
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1224)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1418)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1214)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1549)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1549)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at java.util.ArrayDeque.writeObject(ArrayDeque.java:871)
at java.lang.reflect.Method.invoke(Native Method)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:977)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1536)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1549)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at java.util.HashMap.writeObject(HashMap.java:1418)
at java.lang.reflect.Method.invoke(Native Method)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:977)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1536)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1549)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:454)
at io.sentry.event.Event.writeObject(Event.java:290)
at java.lang.reflect.Method.invoke(Native Method)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:977)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1536)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at io.sentry.buffer.DiskBuffer.add(DiskBuffer.java:83)
at io.sentry.connection.BufferedConnection$2.send(BufferedConnection.java:168)
at io.sentry.SentryClient.sendEvent(SentryClient.java:127)
at io.sentry.SentryClient.sendEvent(SentryClient.java:164)
at io.sentry.Sentry.capture(Sentry.java:160)
Sentry-Android
Version 1.2.0
I believe it just needs to implement Serializable, or I am missing something?
Thanks.
No, it looks like you're correct. I'll fix & push a release. I'm confused why this worked for me, I just tested Android disk buffering locally...
This is actually very odd, I've been sending Android events (which always buffer first) all day. I don't understand what's different about your example.
There must be more code at play here, because simply creating an EventBuilder shouldn't write an event to disk. For sanity's sake can you paste the rest of your Sentry related code?
Sorry, I missed some code... Right after creating the EventBuilder I send it in an Sentry.capture(eventBuilder). Editing it, above with correct code.
Well making is serializable seems like the correct fix, but now I'm confused about why/how my stuff is working. 馃槵
If needed I can give more context to the issue, but I believe that's all that matters, I even commented out other code in the same block.
AAAND, I am confused too. Somehow, worked for other events, but then this bit me in bare foot.
@Hazer 1.2.1 is going out to Maven Central, let me know if it doesn't fix.