strangelydim / aeron Goto Github PK
View Code? Open in Web Editor NEWThis project forked from real-logic/aeron
Efficient reliable unicast and multicast message transport
License: Apache License 2.0
This project forked from real-logic/aeron
Efficient reliable unicast and multicast message transport
License: Apache License 2.0
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?
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.