[ https://issues.apache.org/jira/browse/PROTON-2785?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Robbie Gemmell resolved PROTON-2785. ------------------------------------ Fix Version/s: proton-c-0.40.0 Resolution: Fixed > [Go] Message of certain size fail to be marshalled by amqp module > ----------------------------------------------------------------- > > Key: PROTON-2785 > URL: https://issues.apache.org/jira/browse/PROTON-2785 > Project: Qpid Proton > Issue Type: Bug > Reporter: Martin > Priority: Major > Fix For: proton-c-0.40.0 > > Attachments: qpid-reproducer.go > > > We used to use golang bindings of qpid-proton of quite old version (v0.33.0) > in our project. After upgrade to v0.39.0 message transfer fails on panics > during message marshaling. Basically messages of certain size and higher (218 > bytes in my lab environment) panics on second send. The first one always > passes without an issue: > {code:java} > [stack@tripleo-standalone sensubility]$ go run reproducer.go --address > amqp://127.0.0.1:5666 > [0] Sending two messages of size 217 bytes. > [1] Sending two messages of size 220 bytes. > [0] Sent message ACKed. > [0] Sent message ACKed. > [1] Sent message ACKed. > panic: cannot marshal string: overflow: not enough space to encodegoroutine > 35 [running]: > github.com/apache/qpid-proton/go/pkg/amqp.marshal({0x53d080?, 0xc00019a030?}, > 0x7f5938001d20) > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/amqp/marshal.go:295 > +0x9e5 > github.com/apache/qpid-proton/go/pkg/amqp.putData({0x53d080, 0xc00019a030}, > 0xc00012bd10?) > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/amqp/message.go:508 > +0x48 > github.com/apache/qpid-proton/go/pkg/amqp.(*message).put(0xc00019c280, > 0xc00012bd48?) > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/amqp/message.go:560 > +0x2b8 > github.com/apache/qpid-proton/go/pkg/amqp.(*MessageCodec).Encode(0x7f5934000c90?, > {0x5a47b0?, 0xc00019c280?}, {0x0, 0x0, 0x0}) > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/amqp/message.go:380 > +0x97 > github.com/apache/qpid-proton/go/pkg/electron.(*sender).send(0xc0000bc000, > 0xc000194150) > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/electron/sender.go:197 > +0x11d > github.com/apache/qpid-proton/go/pkg/electron.(*sender).trySend(0xc0000bc000) > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/electron/sender.go:187 > +0x25 > github.com/apache/qpid-proton/go/pkg/electron.(*sender).startSend(...) > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/electron/sender.go:179 > github.com/apache/qpid-proton/go/pkg/electron.(*sender).SendAsyncTimeout.func1() > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/electron/sender.go:230 > +0xbb > github.com/apache/qpid-proton/go/pkg/proton.(*Engine).Run(0xc0001261b0) > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/proton/engine.go:376 > +0x134 > github.com/apache/qpid-proton/go/pkg/electron.(*connection).run(0xc0001320f0) > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/electron/connection.go:241 > +0x3f > created by github.com/apache/qpid-proton/go/pkg/electron.NewConnection in > goroutine 1 > > /home/stack/go/pkg/mod/github.com/apache/qpid-proton@v0.0.0-20231031074257-058dcaa83a7e/go/pkg/electron/connection.go:224 > +0x545 > exit status 2{code} > > We used to transfer much larger messages, so this is quite problematic for > us. The AMQP components we use for message transfer is qdrouterd mesh, but it > is reproducible on single qdr too. > {code:java} > [root@tripleo-standalone ~]# podman exec -it qdr qdstat -v > 2023-12-22 10:26:29.995103 UTC > Standalone_n6PHE7MhBoAhzi8Router Statistics > attr value > ============================================================= > Version 1.17.1 > Mode standalone > Router Id Standalone_n6PHE7MhBoAhzi8 > Worker Threads 4 > Uptime 002:21:05:22 > VmSize 332 MiB > Area 0 > Link Routes 0 > Auto Links 0 > Links 2 > Nodes 0 > Addresses 4 > Connections 1 > Presettled Count 278 > Dropped Presettled Count 3 > Accepted Count 1894 > Rejected Count 0 > Released Count 0 > Modified Count 0 > Deliveries Delayed > 1sec 0 > Deliveries Delayed > 10sec 0 > Deliveries Stuck > 10sec 0 > Deliveries to Fallback 0 > Links Blocked 0 > Ingress Count 2173 > Egress Count 2172 > Transit Count 0 > Deliveries from Route Container 0 > Deliveries to Route Container 0 > [root@tripleo-standalone ~]# {code} > Minimal reproducer is attached: [^qpid-reproducer.go] > -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org