Giter Club home page Giter Club logo

aeron's People

Contributors

0xcafed00d avatar antrongladney avatar brianhorst avatar coderfi avatar dameiss avatar galderz avatar gitter-badger avatar jessefugitt avatar johnpr01 avatar lbradstreet avatar leecampbell avatar mikeb01 avatar mjpt777 avatar mst4 avatar phaynes avatar richardwarburton avatar rlankenau avatar strangelydim avatar tmontgomery avatar vksingh70 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

aeron's Issues

PublisherTool stops sending messages,logs exception upon exit following suspension

Summary:
After the PublisherTool is resumed, no messages are sent,however it remains active. The PublisherTool and the MediaDriverTool log exceptions when Ctrl-C is used to shutdown the PublisherTool.

Procedures:
Start the MediaDriverTool buckwasher using the following command
java -cp samples.jar -Daeron.dir=/dev/shm/ag/aeron uk.co.real_logic.aeron.tools.MediaDriverTool

Start the SubscriberTool on buckwasher using the following commands
java -cp samples.jar -Daeron.dir=/dev/shm/ag/aeron uk.co.real_logic.aeron.tools.SubscriberTool -c 'aeron:udp?remote=192.168.14.34:31111|local=192.168.14.34'

Start the MediaDriverTool on cooper
java -cp samples.jar -Daeron.dir=/dev/shm/ag/aeron uk.co.real_logic.aeron.tools.MediaDriverTool

Start the PublisherTool on cooper
java -cp samples.jar -Daeron.dir=/dev/shm/ag/aeron uk.co.real_logic.aeron.tools.PublisherTool -c 'aeron:udp?remote=192.168.14.34:31111|local=192.168.14.31'

Allowed the subscriber to receive messages from the publisher for a few secs, before suspending the publisher via Ctrl Z. As expected the subscriber did not receive any messages while the publisher was suspended. After 5 secs the publisher was resumed. From the output of the Publisher console, it seems that the publisher sends a few more messages and then stops sending. However it remains active.
The subscriber does NOT receive any additional messages after the publisher is resumed. It reports the connection is inactive. See the output of the publisher below:

-bash-4.1$ java -cp samples.jar -Daeron.dir=/dev/shm/ag/aeron uk.co.real_logic.aeron.tools.PublisherTool -c 'aeron:udp?remote=192.168.14.34:31111|local=192.168.14.31'
INFO publisher-0 publishing 9223372036854775807 messages to: aeron:udp?remote=192.168.14.34:31111|local=192.168.14.31#1[-1682731615]
INFO Thread publisher-0 using random seed -8001883976110746674.
INFO 1.000022: 13.000 msgs/sec 3.3 Kbps
INFO 1.000034: 126.923 Kmsgs/sec 32.5 Mbps
INFO 1.000014: 282.558 Kmsgs/sec 72.3 Mbps
INFO 1.000010: 291.410 Kmsgs/sec 74.6 Mbps
INFO 0.999985: 291.010 Kmsgs/sec 74.5 Mbps
INFO 0.999946: 300.106 Kmsgs/sec 76.8 Mbps
INFO 1.000000: 292.954 Kmsgs/sec 75.0 Mbps
INFO 1.000001: 300.242 Kmsgs/sec 76.9 Mbps
INFO 0.999999: 300.195 Kmsgs/sec 76.8 Mbps
INFO 1.000001: 300.612 Kmsgs/sec 77.0 Mbps
INFO 1.000013: 300.076 Kmsgs/sec 76.8 Mbps
INFO 0.999996: 300.240 Kmsgs/sec 76.9 Mbps
INFO 1.000151: 705.268 Kmsgs/sec 180.5 Mbps
INFO 0.999838: 600.203 Kmsgs/sec 153.7 Mbps
INFO 1.000000: 579.982 Kmsgs/sec 148.5 Mbps
INFO 1.000015: 562.828 Kmsgs/sec 144.1 Mbps
INFO 1.000257: 585.655 Kmsgs/sec 149.9 Mbps
INFO 0.999859: 577.953 Kmsgs/sec 148.0 Mbps

[1]+ Stopped java -cp samples.jar -Daeron.dir=/dev/shm/ag/aeron uk.co.real_logic.aeron.tools.PublisherTool -c 'aeron:udp?remote=192.168.14.34:31111|local=192.168.14.31'
-bash-4.1$ fg
java -cp samples.jar -Daeron.dir=/dev/shm/ag/aeron uk.co.real_logic.aeron.tools.PublisherTool -c 'aeron:udp?remote=192.168.14.34:31111|local=192.168.14.31'
INFO 7.216771: 17.915 Kmsgs/sec 4.6 Mbps
INFO 0.000469: 0.000 msgs/sec 0 bps
INFO 0.000454: 0.000 msgs/sec 0 bps
INFO 0.003133: 218.343 Kmsgs/sec 55.9 Mbps
INFO 0.000362: 0.000 msgs/sec 0 bps
INFO 0.000314: 0.000 msgs/sec 0 bps
INFO 0.001093: 0.000 msgs/sec 0 bps
INFO 0.777274: 190.397 Kmsgs/sec 48.7 Mbps
INFO 1.000010: 0.000 msgs/sec 0 bps
INFO 1.000002: 0.000 msgs/sec 0 bps
INFO 0.999986: 0.000 msgs/sec 0 bps
INFO 1.000015: 0.000 msgs/sec 0 bps
INFO 0.999985: 0.000 msgs/sec 0 bps
INFO 1.000000: 0.000 msgs/sec 0 bps
INFO 1.000014: 0.000 msgs/sec 0 bps
INFO 0.999986: 0.000 msgs/sec 0 bps
INFO 0.999999: 0.000 msgs/sec 0 bps
INFO 1.000000: 0.000 msgs/sec 0 bps
INFO 1.000000: 0.000 msgs/sec 0 bps
INFO 1.000016: 0.000 msgs/sec 0 bps

While the Publisher was in this state of not sending messages, Ctrl -C was used to shutdown/exit the publisher. As a result the publisher reported the following exception and hung:
Exception in thread "publisher-0" uk.co.real_logic.aeron.exceptions.RegistrationException: Unknown publication: 1
at uk.co.real_logic.aeron.ClientConductor.onError(ClientConductor.java:258)
at uk.co.real_logic.aeron.DriverListenerAdapter.onError(DriverListenerAdapter.java:134)
at uk.co.real_logic.aeron.DriverListenerAdapter.onMessage(DriverListenerAdapter.java:119)
at uk.co.real_logic.agrona.concurrent.broadcast.CopyBroadcastReceiver.receive(CopyBroadcastReceiver.java:84)
at uk.co.real_logic.aeron.DriverListenerAdapter.receiveMessages(DriverListenerAdapter.java:56)
at uk.co.real_logic.aeron.ClientConductor.doWork(ClientConductor.java:104)
at uk.co.real_logic.agrona.concurrent.AgentRunner.run(AgentRunner.java:83)
at java.lang.Thread.run(Thread.java:745)
INFO Exiting. Sent 6976274 messages (223240768 bytes) total. 6976274 verifiable and 0 non-verifiable.

uk.co.real_logic.aeron.exceptions.DriverTimeoutException: Driver has been inactive for over 10000ms
at uk.co.real_logic.aeron.ClientConductor.checkDriverHeartbeat(ClientConductor.java:353)
at uk.co.real_logic.aeron.ClientConductor.onKeepalive(ClientConductor.java:338)
at uk.co.real_logic.aeron.ClientConductor$$Lambda$7/1555093762.run(Unknown Source)
at uk.co.real_logic.agrona.TimerWheel.expireTimers(TimerWheel.java:234)
at uk.co.real_logic.aeron.ClientConductor.processTimers(ClientConductor.java:329)
at uk.co.real_logic.aeron.ClientConductor.doWork(ClientConductor.java:103)
at uk.co.real_logic.agrona.concurrent.AgentRunner.run(AgentRunner.java:83)
at java.lang.Thread.run(Thread.java:745)

The driver also logged an exception and hung:
[671379.155471] EXCEPTION [605/605]: uk.co.real_logic.aeron.driver.exceptions.Co ntrolProtocolException(Unknown publication: 1)
uk.co.real_logic.aeron.driver.DriverConductor.onRemovePublication DriverConducto r.java:453
uk.co.real_logic.aeron.driver.DriverConductor.onClientCommand DriverConductor.ja va:288
uk.co.real_logic.aeron.driver.DriverConductor$$Lambda$35/1334729950.onMessage nu ll:-1
uk.co.real_logic.agrona.concurrent.ringbuffer.ManyToOneRingBuffer.read ManyToOne RingBuffer.java:146
uk.co.real_logic.agrona.concurrent.ringbuffer.ManyToOneRingBuffer.read ManyToOne RingBuffer.java:112

Ctrl-C was used to exit the driver. As a result the publisher was able to shutdown.

NOTE:
The same behavior is seen if the MediaDriverTool,PublisherTool, and SubscriberTool are all on the same machine

Question regarding the expected results:
Even though the client liveness timeout is 5 secs, when the publisher resumes, it is NOT a new publisher or session. Therefore, communication should continue and the connection should NOT be declared inactive. Is this correct?

PublisherTool doesn't calculate number of streams correctly.

When a 5 different streamIds on one URI are specified, PublisherTool believes there is only one stream. The options.getStreams().size() returns the number of StreamDescriptors, which represents all of the stream IDs on an IP:PORT. So a channels option of "udp://localhost:31111#1-5" results in 1 StreamDescriptor.

It might be a good idea to track the total streams in PubSubOptions, or even change StreamDescriptor to represent just one channel + stream id combination.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.