Skip to content

Commit 06ff1f0

Browse files
fix exception after slow consumer buffer exceeded disconnect
1732005898683:Time-limited test[SLOW_CONSUMER]SEP.bufferSlowDisconnect, conn=6874193996209987584,sess=1,bufferUsage=8250,maxBytesInBuffer=8192,replay=N 1732005898683:Time-limited test[GATEWAY_MESSAGE][Disconnect](sbeTemplateId=7|sbeSchemaId=666|sbeSchemaVersion=26|sbeBlockLength=13):libraryId=494556222|connection=6874193996209987584|reason=SLOW_CONSUMER java.lang.Exception: Exception reported for sessionId=1,connectionId=6874193996209987584 at uk.co.real_logic.artio.engine.framer.FixSenderEndPoint.onError(FixSenderEndPoint.java:607) at uk.co.real_logic.artio.engine.framer.FixSenderEndPoint.processReattemptBuffer(FixSenderEndPoint.java:518) at uk.co.real_logic.artio.engine.framer.FixSenderEndPoint.reattempt(FixSenderEndPoint.java:561) at uk.co.real_logic.artio.engine.framer.FixSenderEndPoint.reattempt(FixSenderEndPoint.java:556) at uk.co.real_logic.artio.engine.framer.FixSenderEndPoint.onMessage(FixSenderEndPoint.java:250) at uk.co.real_logic.artio.engine.framer.FixSenderEndPoint.onOutboundMessage(FixSenderEndPoint.java:159) at uk.co.real_logic.artio.engine.framer.FixSenderEndPoints.onMessage(FixSenderEndPoints.java:89) at uk.co.real_logic.artio.engine.framer.Framer.onMessage(Framer.java:1685) at uk.co.real_logic.artio.protocol.ProtocolSubscription.onFixMessage(ProtocolSubscription.java:144) at uk.co.real_logic.artio.protocol.ProtocolSubscription.onFragment(ProtocolSubscription.java:87) at uk.co.real_logic.artio.protocol.ProtocolSubscription.lambda$of$0(ProtocolSubscription.java:55) at io.aeron.ControlledFragmentAssembler.onFragment(ControlledFragmentAssembler.java:121) at io.aeron.Image.controlledPoll(Image.java:385) at io.aeron.Subscription.controlledPoll(Subscription.java:235) at uk.co.real_logic.artio.engine.framer.Framer.sendOutboundMessages(Framer.java:454) at uk.co.real_logic.artio.engine.framer.Framer.doWork(Framer.java:389) at org.agrona.concurrent.AgentInvoker.invoke(AgentInvoker.java:147) at uk.co.real_logic.artio.engine.LockStepFramerEngineScheduler.invokeFramer(LockStepFramerEngineScheduler.java:76) at uk.co.real_logic.artio.system_tests.TestSystem.poll(TestSystem.java:89) at uk.co.real_logic.artio.system_tests.SlowConsumerTest.shouldQuarantineThenDisconnectASlowConsumer(SlowConsumerTest.java:155) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:299) at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:293) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: java.nio.channels.ClosedChannelException at java.base/sun.nio.ch.SocketChannelImpl.ensureOpenAndConnected(SocketChannelImpl.java:215) at java.base/sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:527) at uk.co.real_logic.artio.engine.framer.DefaultTcpChannel.write(DefaultTcpChannel.java:45) at uk.co.real_logic.artio.engine.framer.FixSenderEndPoint.writeBuffer(FixSenderEndPoint.java:334) at uk.co.real_logic.artio.engine.framer.FixSenderEndPoint.processReattemptBuffer(FixSenderEndPoint.java:470) ... 30 more 1732005898686:Time-limited test[GATEWAY_MESSAGE][Disconnect](sbeTemplateId=7|sbeSchemaId=666|sbeSchemaVersion=26|sbeBlockLength=13):libraryId=494556222|connection=6874193996209987584|reason=EXCEPTION 1732005898686:Time-limited test[SLOW_CONSUMER]SEP.becomesSlow, connId=6874193996209987584, becomeSlow=N 1732005898686:Time-limited test[GATEWAY_MESSAGE][SlowStatusNotification](sbeTemplateId=43|sbeSchemaId=666|sbeSchemaVersion=26|sbeBlockLength=13):libraryId=494556222|connectionId=6874193996209987584|status=NOT_SLOW 1732005898686:Time-limited test[FIX_CONNECTION]FixSubscription Disconnect: 6874193996209987584 [SLOW_CONSUMER] 1732005898686:Time-limited test[GATEWAY_MESSAGE]494556222: Session Disconnect @ Library 6874193996209987584, SLOW_CONSUMER 1732005898686:Time-limited test[FIX_CONNECTION]FixSubscription Disconnect: 6874193996209987584 [EXCEPTION] 1732005898686:Time-limited test[GATEWAY_MESSAGE]494556222: Session Disconnect @ Library 6874193996209987584, EXCEPTION
1 parent 8eea6b1 commit 06ff1f0

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

Diff for: artio-core/src/main/java/uk/co/real_logic/artio/engine/framer/FixSenderEndPoint.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ static class Formatters
106106
private boolean requiresRetry;
107107
private int reattemptBytesWritten = NO_REATTEMPT;
108108

109+
private boolean disconnected;
110+
109111
FixSenderEndPoint(
110112
final long connectionId,
111113
final int libraryId,
@@ -245,7 +247,7 @@ public void onMessage(
245247
{
246248
enqueueMessage(directBuffer, offset, bodyLength, metaDataOffset, metaDataLength, seqNum, replay);
247249

248-
if (requiresRetry)
250+
if (requiresRetry && !disconnected)
249251
{
250252
reattempt();
251253
}
@@ -673,6 +675,7 @@ boolean poll(final long timeInMs)
673675
private void disconnectEndpoint(final DisconnectReason reason)
674676
{
675677
receiverEndPoint.completeDisconnect(reason);
678+
disconnected = true;
676679
}
677680

678681
public Action onReplayComplete(final long correlationId)

0 commit comments

Comments
 (0)