[
https://issues.apache.org/jira/browse/QPID-378?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aidan Skinner updated QPID-378:
-------------------------------
Fix Version/s: (was: M4)
> AMQStateManager issue during connection close
> ---------------------------------------------
>
> Key: QPID-378
> URL: https://issues.apache.org/jira/browse/QPID-378
> Project: Qpid
> Issue Type: Bug
> Components: Dot Net Client
> Affects Versions: M3
> Environment: .NET 2.0
> Reporter: Tomas Restrepo
> Assignee: Aidan Skinner
>
> Occasionally, while testing the .NET client against the Java Broker, an error
> will be raised during connection shutdown:
> failed: Qpid.Messaging.QpidException : Error closing connection:
> Qpid.AMQException: Error: System.InvalidOperationException: Collection was
> modified; enumeration operation may not execute.
> at System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext()
> at Qpid.Client.State.AMQStateManager.ChangeState(AMQState newState) in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\State\AMQStateManager.cs:line 131
> at
> Qpid.Client.Handler.ConnectionOpenOkMethodHandler.MethodReceived(AMQStateManager
> stateManager, AMQMethodEvent evt) in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\Handler\ConnectionOpenOkMethodHandler.cs:line
> 30
> at Qpid.Client.State.AMQStateManager.MethodReceived(AMQMethodEvent evt) in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\State\AMQStateManager.cs:line 152
> at Qpid.Client.Protocol.AMQProtocolListener.OnMessage(IDataBlock message)
> in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\Protocol\AMQProtocolListener.cs:line
> 111 ---> System.InvalidOperationException: Collection was modified;
> enumeration operation may not execute.
> at System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext()
> at Qpid.Client.State.AMQStateManager.ChangeState(AMQState newState) in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\State\AMQStateManager.cs:line 131
> at
> Qpid.Client.Handler.ConnectionOpenOkMethodHandler.MethodReceived(AMQStateManager
> stateManager, AMQMethodEvent evt) in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\Handler\ConnectionOpenOkMethodHandler.cs:line
> 30
> at Qpid.Client.State.AMQStateManager.MethodReceived(AMQMethodEvent evt) in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\State\AMQStateManager.cs:line 152
> at Qpid.Client.Protocol.AMQProtocolListener.OnMessage(IDataBlock message)
> in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\Protocol\AMQProtocolListener.cs:line
> 111
> --- End of inner exception stack trace ---
> at Qpid.Client.State.StateWaiter.WaituntilStateHasChanged() in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\State\StateWaiter.cs:line 94
> at Qpid.Client.State.AMQStateManager.AttainState(AMQState s) in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\State\AMQStateManager.cs:line 220
> at Qpid.Client.AMQConnection.CloseConnection() in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\AMQConnection.cs:line 263
> at Qpid.Client.AMQConnection.Close() in
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\AMQConnection.cs:line 242
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\AMQConnection.cs(246,0):
> at Qpid.Client.AMQConnection.Close()
> E:\Opensource\qpid\dotnet\Qpid.Client\Client\AMQConnection.cs(428,0):
> at Qpid.Client.AMQConnection.Dispose()
> The code that's causing the exception is this:
> foreach (IStateListener l in _stateListeners)
> {
> l.StateChanged(oldState, newState);
> }
> I think it might be a raise condition of sorts or likely that the state
> manager is not thread safe and is something is modifying the list of state
> listeners during shutdown.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.