qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Moravec (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (QPID-5072) [C++ broker] SessionManager does not forget sessions when broker drops connection after journal error, leading to memory leak
Date Fri, 04 Oct 2013 13:13:46 GMT

     [ https://issues.apache.org/jira/browse/QPID-5072?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Pavel Moravec closed QPID-5072.
-------------------------------


Closing it. I found a memory leak in store plugin during verification, that I will log as
independent JIRA.

> [C++ broker] SessionManager does not forget sessions when broker drops connection after
journal error, leading to memory leak
> -----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-5072
>                 URL: https://issues.apache.org/jira/browse/QPID-5072
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>    Affects Versions: 0.22
>            Reporter: Pavel Moravec
>            Assignee: Pavel Moravec
>             Fix For: 0.25
>
>         Attachments: bz991413.patch, memoryLeak-in-sessionManager.sh, test_00903524_threaded.java
>
>
> Description of problem:
> Broker rejects session re-subscription (on a new AMQP+TCP connection) after the previous
was dropped due to a journal error. This bug in broker:
> - is in fact a memory leak, as session manager map is not cleared when requested
> - it affects Java client during failover, when original journal problem has been already
resolved, but the client can't even attach the same session.
> Version-Release number of selected component (if applicable):
> any (teste 0.18 and also 0.22 broker)
> How reproducible:
> 100%
> Steps to Reproduce:
> 1) run attached Java reproducer on a fresh broker:
> java test_00903524_threaded 1
> 2) check qpidd logs for errors
> Actual results:
> 2013-08-02 11:39:04 [Protocol] error Unexpected exception: Enqueue capacity threshold
exceeded on queue "testQueue". (/builddir/build/BUILD/qpid-0.22/cpp/src/qpid/legacystore/JournalImpl.cpp:594)
> 2013-08-02 11:39:04 [Protocol] error Connection qpid.10.34.1.141:5672-10.34.1.141:42635
closed by error: Enqueue capacity threshold exceeded on queue "testQueue". (/builddir/build/BUILD/qpid-0.22/cpp/src/qpid/legacystore/JournalImpl.cpp:594)(501)
> 2013-08-02 11:39:14 [Protocol] error Channel exception: session-busy: Session already
attached: guest@QPID.36332225-5c5b-4077-b8ec-820555253a89 (/builddir/build/BUILD/qpid-0.22/cpp/src/qpid/broker/SessionManager.cpp:55)
> 2013-08-02 11:39:14 [Protocol] error Channel exception: not-attached: Channel 1 is not
attached (/builddir/build/BUILD/qpid-0.22/cpp/src/qpid/amqp_0_10/SessionHandler.cpp:39)
> ..
> (few thousands of the latest error)
> Expected results:
> just the journal error be seen (and multiple times), not the "Session already attached"
one or "Channel 1 is not attached" one.
> Additional info:
> The broker management _deletes_ the session, as the broker logs:
> 2013-08-02 11:39:04 [Management] trace Management object marked deleted: org.apache.qpid.broker:session:36332225-5c5b-4077-b8ec-820555253a89
>    org.apache.qpid.broker:session:36332225-5c5b-4077-b8ec-820555253a89 (deleted)
> 2013-08-02 11:39:10 [Management] trace Deleting V1 properties 0-68-1--14(org.apache.qpid.broker:session:36332225-5c5b-4077-b8ec-820555253a89)
len=164
> 2013-08-02 11:39:10 [Management] trace Deleting V1 statistics 0-68-1--14(org.apache.qpid.broker:session:36332225-5c5b-4077-b8ec-820555253a89)
len=127
> 2013-08-02 11:39:10 [Management] trace Deleting V2 map={_create_ts:1375436343054221056,
_delete_ts:1375436344249095890, _object_id:{_agent_epoch:68, _object_name:org.apache.qpid.broker:session:36332225-5c5b-4077-b8ec-820555253a89},
_schema_id:{_class_name:session, _hash:1aaa08d0-c118-ff78-0956-47b9ac9c6849, _package_name:org.apache.qpid.broker,
_type:_data}, _update_ts:1375436343054221056, _values:{TxnCommits:0, TxnCount:0, TxnRejects:0,
TxnStarts:0, attached:True, channelId:0, clientCredit:0, connectionRef:{_agent_epoch:68, _object_name:org.apache.qpid.broker:connection:qpid.10.34.1.141:5672-10.34.1.141:42635},
detachedLifespan:0, name:36332225-5c5b-4077-b8ec-820555253a89, unackedMessages:0, vhostRef:{_object_name:org.apache.qpid.broker:vhost:org.apache.qpid.broker:broker:amqp-broker,/}}}
> But session manager inside does not forget the sessions/channels..
> Reproduction for memory leak:
> run attached script
> Weird is, even fixing the bug for Java client, some steady memory increase is still present..



--
This message was sent by Atlassian JIRA
(v6.1#6144)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message