Hi Sajith, Thanks for the suggestion. Will try to implement the serialization in such a way with writeObject() which prevents the recursive manner .
Best Regards, On Fri, Jul 31, 2015 at 6:43 AM, Sajith Ariyarathna <[email protected]> wrote: > Hi Ramindu, > > I think you are talking about this [1] StreamEvent class. > > StackOverflowError can happen when serializing large linked-list type > objects. This [2] answer may shed some light on your problem. In the last > part of the answer, quote > > ... But serialization is vulnerable to stack overflow for certain kinds of >> structures; for example, a long linked list with no special writeObject() >> methods will be serialized by recursively writing each link. If you've got >> a 100,000 links (nodes), you're going to try to use 100,000 stack frames, >> and quite likely fail with a StackOverflowError. >> > It's possible to define a writeObject() method for such a list class >> that, when the first link (node) is serialized, simply walks the list and >> serializes each link (node) iteratively; this will prevent the default >> recursive mechanism from being used. > > > So, implementing writeObject() method for the linked-list (which has > StreamEvent nodes) will solve your problem. > > [1] > https://github.com/wso2/siddhi/blob/master/modules/siddhi-core/src/main/java/org/wso2/siddhi/core/event/stream/StreamEvent.java > [2] http://stackoverflow.com/a/439016/1577286 > > Thanks. > > On Thu, Jul 30, 2015 at 6:29 PM, Ramindu De Silva <[email protected]> > wrote: > >> Hi All, >> >> Currently we are using StreamEvents of the following structure in Siddhi >> when processing events within a Window. >> >> StreamEvent{ >> StreamEvent next >> Object[] beforeWindowData >> Object[] onAfterWindowData >> etc. >> } >> >> Each event is linked to the next event by the attribute 'next' so that a >> chain of events is available for doing complex operations on the set of >> events within a window. However, because of this, as the window size grows, >> a very large nested object is created similar to a LinkedList. >> >> This causes StackOverflowErrors when serializing this particular deeply >> nested object. (Serializing of this object is needed for synching state >> between CEP servers, persisting/saving state etc.) This seems to be >> occurring because Java ObjectOutputStream serializes nested objects in a >> recursive manner by using the Java stack. >> >> Is there a way to serialize a deeply nested object, while preserving the >> chain of objects? >> >> Any suggestion resolving this issue will be greatly appreciated. >> >> Best Regards, >> >> -- >> *Ramindu De Silva* >> Software Engineer >> WSO2 Inc.: http://wso2.com >> lean.enterprise.middleware >> >> email: [email protected] <[email protected]> >> mob: +94 772339350 >> mob: +94 782731766 >> >> _______________________________________________ >> Dev mailing list >> [email protected] >> http://wso2.org/cgi-bin/mailman/listinfo/dev >> >> > > > -- > Sajith Ariyarathna > Software Engineer; WSO2, Inc.; http://wso2.com/ > mobile: +94 77 6602284, +94 71 3951048 > -- *Ramindu De Silva* Software Engineer WSO2 Inc.: http://wso2.com lean.enterprise.middleware email: [email protected] <[email protected]> mob: +94 772339350 mob: +94 782731766
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
