Isn't this fixed already? See Stephen's commits on September 11, 2015. https://github.com/apache/incubator-tinkerpop/commits/3.0.2-incubating/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
On Tue, Dec 1, 2015 at 9:50 AM, Dylan Millikin <[email protected]> wrote: > Hi Stéphane, > > Thanks for the feedback. I haven't had the time to take a deeper look but a > 5mn googlefu gave me this which might (or might not) be a lead: > https://github.com/EsotericSoftware/kryo/issues/336 > If we set a failing test we can maybe see if those changes are relevant or > not. > > Do you want to give those a try locally and report back? Also if you don't > mind creating a JIRA issue for this that would be great. > > Cheers, > > Dylan. > > > > > > On Tue, Dec 1, 2015 at 1:58 PM, <[email protected]> wrote: > > > Hi everybody, > > > > > > > > Our company is developing a system based on Gremlin server and we are > > facing an issue for which, I think, I have identified the root cause. > > > > Our problem occurs when requesting a graph that returns beyond a certain > > amount of data, actually 4096 bytes, through a websocket connection. > > > > I think that the issue is located in the serialization mechanism, in the > > method *serializeResponseAsBinary*(…) of the > *org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 > > class*. > > > > > > > > In this method, we create a local *java.io.ByteArrayOutputStream* object > > which is then passed to the constructor of a new instance of an > > *org.apache.tinkerpop.shaded.kryo.io.Output*. Subsequent operations > > serialize data in this Output object and at the end the > > *serializeResponseAsBinary*(…) method returns a newly allocated > > *io.netty.buffer.ByteBuf* object containing the bytes accumulated in the > > Output instance. This encoded response message is built as this: > > > > > > > > ByteBuf encodedMessage = null; > > > > final OutputStream baos = new ByteArrayOutputStream(); > > > > final Output output = new Output(baos); > > > > … > > > > encodedMessage = allocator.buffer((*int*) output.total()); > > > > encodedMessage.writeBytes(*output**.toBytes()*); > > > > … > > > > return encodedMessage; > > > > > > > > The problem is that the *output.toBytes()* method only returns the bytes > > contained in an internal recyclable buffer and does not take into account > > the bytes that may have been previously flushed into the internal > > OutputStream (in our case the ByteArrayOutputStream provided to the > > constructor). Thus, at the end, the encoded response message contains > > partial data that appear as a corrupted stream to the deserialization > > process. > > > > > > > > What do you think about this problem ? Is there anyone that already faced > > this issue ? Do you think it would be possible to fix it quickly ? > > > > > > > > Regards, > > > > [image: http://www.orange.com/sirius/logos_mail/orange_logo.gif] > > <http://www.orange.com/> > > > > *Stéphane Gobancé * > > > > *Prestataire externe* > > > > GyGraph / PnS > > > > Tél : 04 97 46 05 65 > > > > *[email protected] <[email protected]>* > > > > Altran pour Orange > > > > > > > > > _________________________________________________________________________________________________________________________ > > > > Ce message et ses pieces jointes peuvent contenir des informations > confidentielles ou privilegiees et ne doivent donc > > pas etre diffuses, exploites ou copies sans autorisation. Si vous avez > recu ce message par erreur, veuillez le signaler > > a l'expediteur et le detruire ainsi que les pieces jointes. Les messages > electroniques etant susceptibles d'alteration, > > France Telecom - Orange decline toute responsabilite si ce message a ete > altere, deforme ou falsifie. Merci > > > > This message and its attachments may contain confidential or privileged > information that may be protected by law; > > they should not be distributed, used or copied without authorization. > > If you have received this email in error, please notify the sender and > delete this message and its attachments. > > As emails may be altered, France Telecom - Orange shall not be liable if > this message was modified, changed or falsified. > > Thank you. > > > > > -- Have a good one, Jason
