ssorj / quiver Goto Github PK
View Code? Open in Web Editor NEWTools for testing the performance of messaging clients and servers
License: Apache License 2.0
Tools for testing the performance of messaging clients and servers
License: Apache License 2.0
Eliminate some codec overhead (probably not very significant but still) by using the standard AMPQ message property for timestamps. Marginally simplifies the arrow clients.
We can currently configure credit but can't control how the client implementations handle that credit. It would be nice to be able to tell vertx-proton for instance to batch grant credit instead of a flow per message. The code can be hacked to do this but a nice configuration option would make things nicer.
I am not, yet, sure if this is a bug ... however, when I try running quiver, it is failing with timeout errors:
quiver amqp://:5672/q0
quiver-arrow: Error: Receiver timed out
quiver-arrow: Error: Sender timed out
quiver: Error: Exiting with code 1
I have tried a couple of different ways and targets with this: Artemis 2.5.0 on VM and on a Physical Hardware, Qpid Dispatch Router on a VM. I checked the network and it is reliable. I also verified, when using the Broker, that messages do arrive on the queue.
A new client for .NET has been released at Qpid and could use some testing with Quiver tooling to evaluate performance with different peers.
The first release is available on nuget here:
https://www.nuget.org/packages/Apache.Qpid.Proton.Client/1.0.0-M1
Just pulled the latest quiver and it refused to install without numpy. It'll be important for quiver to install easily no matter what subset of clients/brokers etc. are available. Simplest way to detect dependencies would be just try to build everything and report the failures but carry on and install whatever succeeds.
There seems to not to be a way of passing username and password. Or at least it is not documented.
Looks like the project currently creates a single Uber jar for all the JMS clients which seems to be creating some trouble when trying to use snapshots of the various clients. I think the trouble might lay in the fact that with only one jar you won't know what version of the dependencies each client brings in ultimately ends up in the final jar. For instance upstream Qpid JMS is on Netty 4.1.5.final but I believe the Artemis core client will fight to bring in an old 4.0.x version of Netty which will probably result in errors at runtime for Qpid JMS.
By having a single uber jar for each JMS client you will have better version isolation for the various dependencies each one brings in.
It would be nice if there was an OCP template provided which can be used to run single quiver "jobs".
When working with customers, they normally want to performance test / validate their setups, quiver is a good fit for this use case. But when running in OCP, we need to create our own image/template.
Verbose flag is only for quiver. I would expect this to also apply to the clients it is trying to use. Currently, for the java clients are hardcoded to warn and above:
Hello,
I am trying to integrate Quiver as a test agent into Maestro and I noticed that the package for Fedora 27 is missing on COPR. Would it be possible to trigger a build and package it for Fedora 27 as well?
Thanks
In order to allow fair comparisons of resource utilization and/or latencies between runs that push different load against a system, would be great to have a target throughput benchmark mode.
Given that sustainable throughput would produce tons of small latency values would be good to have
microseconds timestamp precision too (if the OS allow it).
#38 is addressing the former while https://github.com/franz1981/quiver/tree/micros_latencies need some refinement on python side to cover the latter.
test_sasl .............................................................. FAILED 2.8s
--- Error ---
Command 'quiver-arrow send 127.0.0.1:64364/q0 --impl qpid-jms --count 1 --verbose' returned non-zero exit status 1.
--- Output ---
quiver-server: Calling '/home/runner/work/quiver/quiver/build/quiver/impls/quiver-server-builtin host=127.0.0.1 port=64364 path=q0 ready-file=/tmp/plano-nibjg8ea scheme=amqp cert=/home/runner/work/quiver/quiver/build/quiver/python/quiver/test_tls_certs/tserver-certificate.pem key=/home/runner/work/quiver/quiver/build/quiver/python/quiver/test_tls_certs/tserver-private-key.pem key- user=myuser ***'
quiver-arrow: Making directory '/tmp/quiver-tlt4o_ne'
quiver-arrow: Saving output files to '/tmp/quiver-tlt4o_ne'
quiver-arrow: Calling '/home/runner/work/quiver/quiver/build/quiver/impls/quiver-arrow-qpid-jms connection-mode=client channel-mode=active operation=send id=quiver-sender-8ca05c28 scheme=amqp host=127.0.0.1 port=64364 path=q0 duration=0 count=1 body-size=100 credit-window=1000 transaction-size=0 durable=0 username=myuser '
quiver-arrow-qpid-jms: Calling '/usr/bin/env -- java -Darrow.jms.url=amqp://127.0.0.1:64364?jms.clientID=quiver-sender-8ca05c28&jms.prefetchPolicy.all=1000&jms.username=myuser&jms. -Djava.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory -Dorg.slf4j.simpleLogger.defaultLogLevel=warn -classpath /home/runner/work/quiver/quiver/build/quiver/java/quiver-qpid-jms.jar net.ssorj.quiver.QuiverArrowJms connection-mode=client channel-mode=active operation=send id=quiver-sender-8ca05c28 scheme=amqp host=127.0.0.1 port=64364 path=q0 duration=0 count=1 body-size=100 credit-window=1000 transaction-size=0 durable=0 username=myuser ***'
[main] ERROR org.apache.qpid.jms.JmsConnection - Failed to connect to remote at: amqp://127.0.0.1:64364
java.lang.RuntimeException: org.apache.qpid.jms.exceptions.JMSSecuritySaslException: Client failed to authenticate using SASL: PLAIN
at net.ssorj.quiver.Client.run(QuiverArrowJms.java:157)
at net.ssorj.quiver.QuiverArrowJms.doMain(QuiverArrowJms.java:79)
at net.ssorj.quiver.QuiverArrowJms.main(QuiverArrowJms.java:31)
Caused by: org.apache.qpid.jms.exceptions.JMSSecuritySaslException: Client failed to authenticate using SASL: PLAIN
at org.apache.qpid.jms.provider.exceptions.ProviderConnectionSecuritySaslException.toJMSException(ProviderConnectionSecuritySaslException.java:51)
at org.apache.qpid.jms.provider.exceptions.ProviderConnectionSecuritySaslException.toJMSException(ProviderConnectionSecuritySaslException.java:24)
at org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:80)
at org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:112)
at org.apache.qpid.jms.JmsConnection.connect(JmsConnection.java:176)
at org.apache.qpid.jms.JmsConnectionFactory.createConnection(JmsConnectionFactory.java:213)
at org.apache.qpid.jms.JmsConnectionFactory.createConnection(JmsConnectionFactory.java:200)
at net.ssorj.quiver.Client.run(QuiverArrowJms.java:113)
... 2 more
Caused by: org.apache.qpid.jms.provider.exceptions.ProviderConnectionSecuritySaslException: Client failed to authenticate using SASL: PLAIN
at org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.recordFailure(AmqpSaslAuthenticator.java:160)
at org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.handleSaslFail(AmqpSaslAuthenticator.java:138)
at org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.handleSaslOutcome(AmqpSaslAuthenticator.java:109)
at org.apache.qpid.jms.provider.amqp.AmqpProvider$1.onSaslOutcome(AmqpProvider.java:281)
at org.apache.qpid.proton.engine.impl.SaslImpl.handleOutcome(SaslImpl.java:451)
at org.apache.qpid.proton.engine.impl.SaslImpl.handleOutcome(SaslImpl.java:49)
at org.apache.qpid.proton.amqp.security.SaslOutcome.invoke(SaslOutcome.java:75)
at org.apache.qpid.proton.engine.impl.SaslImpl.handle(SaslImpl.java:345)
at org.apache.qpid.proton.engine.impl.SaslFrameParser.input(SaslFrameParser.java:375)
at org.apache.qpid.proton.engine.impl.SaslImpl$SaslTransportWrapper.reallyProcessInput(SaslImpl.java:688)
at org.apache.qpid.proton.engine.impl.SaslImpl$SaslTransportWrapper.process(SaslImpl.java:659)
at org.apache.qpid.proton.engine.impl.SaslImpl$SwitchingSaslTransportWrapper.process(SaslImpl.java:832)
at org.apache.qpid.proton.engine.impl.HandshakeSniffingTransportWrapper.process(HandshakeSniffingTransportWrapper.java:101)
at org.apache.qpid.proton.engine.impl.TransportImpl.process(TransportImpl.java:1572)
at org.apache.qpid.jms.provider.amqp.AmqpProvider.onData(AmqpProvider.java:866)
at org.apache.qpid.jms.transports.netty.NettyTcpTransport$NettyTcpTransportHandler.channelRead0(NettyTcpTransport.java:563)
at org.apache.qpid.jms.transports.netty.NettyTcpTransport$NettyTcpTransportHandler.channelRead0(NettyTcpTransport.java:556)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.base/java.lang.Thread.run(Thread.java:829)
quiver-arrow: Error: Sender exited with code 1
quiver-server: Exiting with code -15
RESULT: 1 test failed (7 skipped)
make: *** [Makefile:128: test] Error 1
[jross@localhost quiver (master)]$ quiver-test quiver.tests:test_anonymous_tls
quiver-test: Running tests from module 'quiver.tests'
test_anonymous_tls ..................................................... FAILED 6.8s
--- Error ---
> Command 'quiver-arrow send amqps://127.0.0.1:62497/q0 --impl qpid-proton-cpp --count 1 --verbose' returned non-zero exit status 1.
--- Output ---
> quiver-server: Calling '/home/jross/code/quiver/build/quiver/impls/quiver-server-builtin host=127.0.0.1 port=62497 path=q0 ready-file=/run/user/1000/plano-9jpbrusg scheme=amqps cert=/home/jross/code/quiver/build/quiver/python/quiver/test_tls_certs/tserver-certificate.pem key=/home/jross/code/quiver/build/quiver/python/quiver/test_tls_certs/tserver-private-key.pem key-password=password'
> quiver-arrow: Making directory '/tmp/quiver-ehm5917i'
> quiver-arrow: Saving output files to '/tmp/quiver-ehm5917i'
> quiver-arrow: Calling '/home/jross/code/quiver/build/quiver/impls/quiver-arrow-qpid-jms connection-mode=client channel-mode=active operation=send id=quiver-sender-430578f5 scheme=amqps host=127.0.0.1 port=62497 path=q0 duration=0 count=1 body-size=100 credit-window=1000 transaction-size=0 durable=0'
> quiver-arrow-qpid-jms: Calling '/usr/bin/env -- java -Darrow.jms.url=amqps://127.0.0.1:62497?jms.clientID=quiver-sender-430578f5&jms.prefetchPolicy.all=1000&transport.verifyHost=false&transport.trustAll=true&amqp.saslMechanisms=ANONYMOUS -Djava.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory -Dorg.slf4j.simpleLogger.defaultLogLevel=warn -classpath /home/jross/code/quiver/build/quiver/java/quiver-qpid-jms.jar net.ssorj.quiver.QuiverArrowJms connection-mode=client channel-mode=active operation=send id=quiver-sender-430578f5 scheme=amqps host=127.0.0.1 port=62497 path=q0 duration=0 count=1 body-size=100 credit-window=1000 transaction-size=0 durable=0'
> quiver-arrow: Calling 'xz --compress -0 --threads 0 /tmp/quiver-ehm5917i/sender-transfers.csv'
> quiver-arrow: Making directory '/tmp/quiver-gt2emy_i'
> quiver-arrow: Saving output files to '/tmp/quiver-gt2emy_i'
> quiver-arrow: Calling '/home/jross/code/quiver/build/quiver/impls/quiver-arrow-qpid-jms connection-mode=client channel-mode=active operation=receive id=quiver-receiver-c0d76b5b scheme=amqps host=127.0.0.1 port=62497 path=q0 duration=0 count=1 body-size=100 credit-window=1000 transaction-size=0 durable=0'
> quiver-arrow-qpid-jms: Calling '/usr/bin/env -- java -Darrow.jms.url=amqps://127.0.0.1:62497?jms.clientID=quiver-receiver-c0d76b5b&jms.prefetchPolicy.all=1000&transport.verifyHost=false&transport.trustAll=true&amqp.saslMechanisms=ANONYMOUS -Djava.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory -Dorg.slf4j.simpleLogger.defaultLogLevel=warn -classpath /home/jross/code/quiver/build/quiver/java/quiver-qpid-jms.jar net.ssorj.quiver.QuiverArrowJms connection-mode=client channel-mode=active operation=receive id=quiver-receiver-c0d76b5b scheme=amqps host=127.0.0.1 port=62497 path=q0 duration=0 count=1 body-size=100 credit-window=1000 transaction-size=0 durable=0'
> quiver-arrow: Calling 'xz --compress -0 --threads 0 /tmp/quiver-gt2emy_i/receiver-transfers.csv'
> quiver-arrow: Making directory '/tmp/quiver-pvihjf1f'
> quiver-arrow: Saving output files to '/tmp/quiver-pvihjf1f'
> quiver-arrow: Calling '/home/jross/code/quiver/build/quiver/impls/quiver-arrow-qpid-proton-cpp connection-mode=client channel-mode=active operation=send id=quiver-sender-f37452b4 scheme=amqps host=127.0.0.1 port=62497 path=q0 duration=0 count=1 body-size=100 credit-window=1000 transaction-size=0 durable=0'
> quiver-arrow: error: amqp:connection:framing-error: SSL Failure: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
> quiver-arrow: Error: Sender exited with code 1
> quiver-server: Exiting with code -15
RESULT: 1 test failed (0 skipped)
When running 'vertx-proton', i always get a non-descriptive error. Artemis logs:
12:31:32,898 WARN [org.apache.activemq.artemis.core.client] AMQ212037: Connection failure has been detected: null [code=REMOTE_DISCONNECT]
Quiver logs:
This might be a docker issue (NOTE: have not tested outside of Docker), as the logs from netty complain about getting the mac address.
Currently, peer-to-peer mode requires sending from the client sender to the server receiver. There are use case the reverse is useful, e.g when one of the peers cant be a server and yet you want it to be the receiver.
(Noticed while working on adding support for vertx-proton servers at https://github.com/gemmellr/quiver/tree/vertx-proton-server and trying to have qpid-jms receive from it).
When testing 'activemq-jms', i always get the below exception. Is the AMQ6 server running on localhost required to run this impl?
See logs: https://gist.github.com/garethahealy/d2fd3da80d228dd21f4fca223cdf2afc
When using the docker image, on OCP, i get DNS issues when trying to use the svc name.
i.e.:
$ oc get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
broker-amq-amqp ClusterIP 172.30.202.38 <none> 5672/TCP 1h
broker-amq-jolokia ClusterIP 172.30.210.19 <none> 8161/TCP 1h
broker-amq-mqtt ClusterIP 172.30.252.11 <none> 1883/TCP 1h
broker-amq-stomp ClusterIP 172.30.146.201 <none> 61613/TCP 1h
broker-amq-tcp ClusterIP 172.30.122.52 <none> 61616/TCP 1h
$ oc process -f https://raw.githubusercontent.com/ssorj/quiver/0.2.0/packaging/openshift/openshift-pod-template.yml \
DOCKER_IMAGE=docker.io/ssorj/quiver:latest \
DOCKER_CMD="[\"quiver\", \"//broker-amq-amqp:5672/vertx-proton\", \"--impl\", \"vertx-proton\", \"--verbose\"]" \
| oc create -f -
Gives me; "UnknownHostException: failed to resolve 'broker-amq-amqp' after 3 queries"
If i try with the IP of the svc, it works:
$ oc process -f https://raw.githubusercontent.com/ssorj/quiver/0.2.0/packaging/openshift/openshift-pod-template.yml \
DOCKER_IMAGE=docker.io/ssorj/quiver:latest \
DOCKER_CMD="[\"quiver\", \"//172.30.202.38:5672/vertx-proton\", \"--impl\", \"vertx-proton\", \"--verbose\"]" \
| oc create -f -
Other impls all work via the svc name. Do i need to pass extra args for vertx-proton?
There are a few changes/improvements that could be made:
Fedora 24
dnf install -y 'dnf-command(copr)' && \
dnf copr enable -y jross/ssorj && \
dnf install -y qpid-proton-c && \
dnf install -y quiver
Error: nothing provides libqpid-proton.so.8()(64bit) needed by quiver-0-0.1.20161116.8bc457a.fc24.x86_64
The current JMS clients have all started jumping to Jakarta JMS except for ActiveMQ 5 which is still a JMS 1.1 client and is not actively developed these days beyond where it was years ago. Moving on to Jakarta would allow the client to be updated to latest releases beyond the older ones stuck on the (javax) JMS API dependencies
test_pair_qpid_protonj2_to_rhea ........................................ FAILED 2.3s
--- Error ---
> Command 'quiver --sender qpid-protonj2 --receiver rhea --count 1 --verbose' returned non-zero exit status 1.
--- Output ---
> quiver: Calling 'quiver-arrow receive amqp://localhost:56727/quiver --impl rhea --duration 30s --count 1 --rate 0 --body-size 100 --credit 1000 --transaction-size 0 --timeout 10 --verbose --output /tmp/quiver-n8eylbeo --server --passive'
> quiver-arrow: Making directory '/tmp/quiver-n8eylbeo'
> quiver-arrow: Saving output files to '/tmp/quiver-n8eylbeo'
> quiver-arrow: Calling '/home/jross/code/quiver/build/quiver/impls/quiver-arrow-rhea connection-mode=server channel-mode=passive operation=receive id=quiver-receiver-179834c9 scheme=amqp host=localhost port=56727 path=quiver duration=30 count=1 rate=0 body-size=100 credit-window=1000 transaction-size=0 durable=0'
> (node:1963217) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
> (Use `node --trace-deprecation ...` to show where the warning was created)
> quiver: Calling 'quiver-arrow send amqp://localhost:56727/quiver --impl qpid-protonj2 --duration 30s --count 1 --rate 0 --body-size 100 --credit 1000 --transaction-size 0 --timeout 10 --verbose --output /tmp/quiver-n8eylbeo'
> [connection-1] disconnected
> quiver-arrow: Making directory '/tmp/quiver-n8eylbeo'
> quiver-arrow: Saving output files to '/tmp/quiver-n8eylbeo'
> quiver-arrow: Calling '/home/jross/code/quiver/build/quiver/impls/quiver-arrow-qpid-protonj2 connection-mode=client channel-mode=active operation=send id=quiver-sender-adad2660 scheme=amqp host=localhost port=56727 path=quiver duration=30 count=1 rate=0 body-size=100 credit-window=1000 transaction-size=0 durable=0'
> quiver-arrow-qpid-protonj2: Calling '/usr/bin/env -- java -classpath /home/jross/code/quiver/build/quiver/java/quiver-protonj2.jar -Dorg.slf4j.simpleLogger.defaultLogLevel=warn net.ssorj.quiver.QuiverArrowProtonJ2 connection-mode=client channel-mode=active operation=send id=quiver-sender-adad2660 scheme=amqp host=localhost port=56727 path=quiver duration=30 count=1 rate=0 body-size=100 credit-window=1000 transaction-size=0 durable=0'
> node:events:498
> throw er; // Unhandled 'error' event
> ^
>
> TypeError: Cannot read properties of undefined (reading 'SendTime')
> at Container.<anonymous> (/home/jross/code/quiver/build/quiver/impls/quiver-arrow-rhea:207:48)
> at Container.emit (node:events:520:28)
> at Container.dispatch (/home/jross/.local/lib/node_modules/rhea/lib/container.js:41:33)
> at Connection.dispatch (/home/jross/.local/lib/node_modules/rhea/lib/connection.js:261:40)
> at Session.dispatch (/home/jross/.local/lib/node_modules/rhea/lib/session.js:456:41)
> at Receiver.link.dispatch (/home/jross/.local/lib/node_modules/rhea/lib/link.js:62:38)
> at Incoming.on_transfer (/home/jross/.local/lib/node_modules/rhea/lib/session.js:365:22)
> at Session.on_transfer (/home/jross/.local/lib/node_modules/rhea/lib/session.js:759:19)
> at Connection.<computed> [as on_transfer] (/home/jross/.local/lib/node_modules/rhea/lib/connection.js:836:30)
> at c.dispatch (/home/jross/.local/lib/node_modules/rhea/lib/types.js:946:33)
> Emitted 'error' event on Container instance at:
> at Container.dispatch (/home/jross/.local/lib/node_modules/rhea/lib/container.js:41:33)
> at Connection.dispatch (/home/jross/.local/lib/node_modules/rhea/lib/connection.js:261:40)
> at Connection.input (/home/jross/.local/lib/node_modules/rhea/lib/connection.js:574:18)
> at Socket.emit (node:events:520:28)
> at addChunk (node:internal/streams/readable:315:12)
> at readableAddChunk (node:internal/streams/readable:289:9)
> at Socket.Readable.push (node:internal/streams/readable:228:10)
> at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
> org.apache.qpid.protonj2.client.exceptions.ClientConnectionRemotelyClosedException: Remote closed connection unexpectedly
> at org.apache.qpid.protonj2.client.impl.ClientExceptionSupport.convertToConnectionClosedException(ClientExceptionSupport.java:157)
> at org.apache.qpid.protonj2.client.impl.ClientTransportListener.transportError(ClientTransportListener.java:69)
> at org.apache.qpid.protonj2.client.transport.TcpTransport.handleTransportFailure(TcpTransport.java:342)
> at org.apache.qpid.protonj2.client.transport.TcpTransport$NettyDefaultHandler.channelInactive(TcpTransport.java:455)
> at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)
> at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)
> at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)
> at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1405)
> at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)
> at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)
> at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:901)
> at io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:813)
> at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
> at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
> at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:391)
> at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995)
> at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
> at java.base/java.lang.Thread.run(Thread.java:833)
> Caused by: java.io.IOException: Remote closed connection unexpectedly
> ... 16 more
> quiver-arrow: Error: Receiver exited with code 1
> quiver: Error: Command 'quiver-arrow receive amqp://localhost:56727/quiver --impl rhea --duration 30s --count 1 --rate 0 --body-size 100 --credit 1000 --transaction-size 0 --timeout 10 --verbose --output /tmp/quiver-n8eylbeo --server --passive' returned non-zero exit status 1.
> quiver: Stopping process 1963228 (quiver-arrow)
> quiver-arrow: Exiting with code -15
> quiver-arrow: Stopping process 1963230 (/home/jross/code/quiver/build/quiver/impls/quiver-arrow-qpid-protonj2)
> quiver: Stopping process 1963216 (quiver-arrow)
> quiver: Error: Exiting with code 1
> ---------------------- Sender ----------------------- --------------------- Receiver ---------------------- --------
> Time [s] Count [m] Rate [m/s] CPU [%] RSS [M] Time [s] Count [m] Rate [m/s] CPU [%] RSS [M] Lat [ms]
> ----------------------------------------------------- ----------------------------------------------------- --------
> - - - - - 2.1 0 0 4 0.0 0
It would be useful if quiver understood amqps://
urls in order to form TLS connections to the server peers. In additional, it would be useful if they was a way of turning off certificate and hostname verification.
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.