Skip to content

Commit

Permalink
fix exception after slow consumer buffer exceeded disconnect
Browse files Browse the repository at this point in the history
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
  • Loading branch information
wojciech-adaptive committed Nov 19, 2024
1 parent 8eea6b1 commit 06ff1f0
Showing 1 changed file with 4 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ static class Formatters
private boolean requiresRetry;
private int reattemptBytesWritten = NO_REATTEMPT;

private boolean disconnected;

FixSenderEndPoint(
final long connectionId,
final int libraryId,
Expand Down Expand Up @@ -245,7 +247,7 @@ public void onMessage(
{
enqueueMessage(directBuffer, offset, bodyLength, metaDataOffset, metaDataLength, seqNum, replay);

if (requiresRetry)
if (requiresRetry && !disconnected)
{
reattempt();
}
Expand Down Expand Up @@ -673,6 +675,7 @@ boolean poll(final long timeInMs)
private void disconnectEndpoint(final DisconnectReason reason)
{
receiverEndPoint.completeDisconnect(reason);
disconnected = true;
}

public Action onReplayComplete(final long correlationId)
Expand Down

0 comments on commit 06ff1f0

Please sign in to comment.