synchronization of sending to zeromq by paladim · Pull Request #5536 · tronprotocol/java-tron
solution to the sending problem in NativeMessageQueue#publishTrigger "write data to zeromq failed, error: 256
#5535, passed manual testing
System information
OS : Linux
JVM : Red Hat, Inc. 1.8.0_382 amd64
Git : 9e95599
Version : 4.7.2
Code : 18031
Expected behaviour
I get an error when topics are enabled (my example transaction, solidityevent topics)
Actual behaviour
Error: "write data to zeromq failed, error: 256"
Steps to reproduce the behaviour
sync full node and enable native message queue for transaction and solidityevent topics
run zeromq client, python example
socket.setsockopt(zmq.SUBSCRIBE, "".encode("utf-8"))
Backtrace
more logs have been added to the my code
18:33:20.419 ERROR [Thread-5] [o.t.c.l.n.NativeMessageQueue](NativeMessageQueue.java:80) write data to zeromq failed, data: *, topic:transactionTrigger, error:256
java.lang.ArrayIndexOutOfBoundsException: 256
at zmq.pipe.YQueue.push(YQueue.java:84)
at zmq.pipe.YPipe.write(YPipe.java:48)
at zmq.pipe.Pipe.write(Pipe.java:289)
at zmq.socket.pubsub.Dist.write(Dist.java:177)
at zmq.socket.pubsub.Dist.distribute(Dist.java:162)
at zmq.socket.pubsub.Dist.sendToMatching(Dist.java:138)
at zmq.socket.pubsub.XPub.xsend(XPub.java:253)
at zmq.SocketBase.send(SocketBase.java:828)
at zmq.SocketBase.send(SocketBase.java:791)
at org.zeromq.ZMQ$Socket.send(ZMQ.java:3325)
at org.zeromq.ZMQ$Socket.send(ZMQ.java:3239)
at org.tron.common.logsfilter.nativequeue.NativeMessageQueue.publishTrigger(NativeMessageQueue.java:75)
at org.tron.common.logsfilter.EventPluginLoader.postTransactionTrigger(EventPluginLoader.java:497)
at org.tron.common.logsfilter.capsule.TransactionLogTriggerCapsule.processTrigger(TransactionLogTriggerCapsule.java:270)
at org.tron.core.db.Manager.lambda$new$1(Manager.java:293)
at java.lang.Thread.run(Thread.java:750)
18:33:20.419 ERROR [pool-48-thread-1] [o.t.c.l.n.NativeMessageQueue](NativeMessageQueue.java:80) write data to zeromq failed, data: *, topic:solidityEventTrigger, error:256
java.lang.ArrayIndexOutOfBoundsException: 256
at zmq.pipe.YQueue.push(YQueue.java:84)
at zmq.pipe.YPipe.write(YPipe.java:48)
at zmq.pipe.Pipe.write(Pipe.java:289)
at zmq.socket.pubsub.Dist.write(Dist.java:177)
at zmq.socket.pubsub.Dist.distribute(Dist.java:162)
at zmq.socket.pubsub.Dist.sendToMatching(Dist.java:138)
at zmq.socket.pubsub.XPub.xsend(XPub.java:253)
at zmq.SocketBase.send(SocketBase.java:828)
at zmq.SocketBase.send(SocketBase.java:791)
at org.zeromq.ZMQ$Socket.send(ZMQ.java:3325)
at org.zeromq.ZMQ$Socket.send(ZMQ.java:3239)
at org.tron.common.logsfilter.nativequeue.NativeMessageQueue.publishTrigger(NativeMessageQueue.java:75)
at org.tron.common.logsfilter.EventPluginLoader.postSolidityEventTrigger(EventPluginLoader.java:487)
at org.tron.core.db.Manager.postSolidityEventContractTrigger(Manager.java:1856)
at org.tron.core.db.Manager.postSolidityTrigger(Manager.java:2060)
at org.tron.core.db.Manager.pushBlock(Manager.java:1303)
at org.tron.core.net.TronNetDelegate.processBlock(TronNetDelegate.java:260)
at org.tron.core.net.service.sync.SyncService.processSyncBlock(SyncService.java:301)
at org.tron.core.net.service.sync.SyncService.lambda$handleSyncBlock$9(SyncService.java:287)
at java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1597)
at org.tron.core.net.service.sync.SyncService.handleSyncBlock(SyncService.java:266)
at org.tron.core.net.service.sync.SyncService.lambda$init$1(SyncService.java:85)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)