Failed connection with unmanaged extension

cloud
graphaware
cluster

(Mikhail) #1

Hello guys.

I deployed Neo4j Enterprise Causal Cluster (v. 3.5.1) from the AWS Marketplace (3 CORE instanses) with my own unmanaged extension based on GraphAware Framework. The goal of this extension is received POST request with list of actions in a json and apply them to DB.

Everything work,

BUT strange thing is that I couldn't send really big list of actions when using a cluster. Currently when list contains 200-400 items (it's about 100Kb-200Kb) I start receive SocketException in my http client. It means that Neo4j close connection by itself I guess...

There is no such problem with single instance of Neo4j Enterprise or Community Edition. Using them I can send 10 times more actions without errors.

So I assume that the reason in the clasture nature, mb there is some restriction in config or hardcoded restriction in inner cluster communications..

Can you help with this?

There is the stacktrace of that exception:

Connection reset: java.net.SocketException
java.net.SocketException: Connection reset
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115)
at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
at org.apache.http.impl.io.SessionOutputBufferImpl.streamWrite(SessionOutputBufferImpl.java:124)
at org.apache.http.impl.io.SessionOutputBufferImpl.write(SessionOutputBufferImpl.java:160)
at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:113)
at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:120)
at org.apache.http.entity.StringEntity.writeTo(StringEntity.java:167)
at org.apache.http.impl.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:156)
at org.apache.http.impl.conn.CPoolProxy.sendRequestEntity(CPoolProxy.java:160)
at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:238)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at com.ringoid.events.KinesisConsumer.handler(KinesisConsumer.java:117)
at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)


(Christophe Willemsen) #2

Are you making that request to the LEADER only ?


(Mikhail) #3

Hello Christophe, yep


(Mikhail) #4

I found the reason. When Basic Auth is disabled I still can send big batches...

Hm.. what do you think where is error (on neo4j or on my side)?
Did you ever see the same behavior?