You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Tomas Restrepo (JIRA)" <qp...@incubator.apache.org> on 2007/02/17 05:16:05 UTC

[jira] Created: (QPID-378) AMQStateManager issue during connection close

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
         Environment: .NET 2.0
            Reporter: Tomas Restrepo


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.


[jira] Assigned: (QPID-378) AMQStateManager issue during connection close

Posted by "Martin Ritchie (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-378?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Ritchie reassigned QPID-378:
-----------------------------------

    Assignee: Rupert Smith

retest and verify

> 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
>         Environment: .NET 2.0
>            Reporter: Tomas Restrepo
>            Assignee: Rupert Smith
>
> 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.


[jira] Updated: (QPID-378) AMQStateManager issue during connection close

Posted by "Aidan Skinner (JIRA)" <qp...@incubator.apache.org>.
     [ 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.


[jira] Assigned: (QPID-378) AMQStateManager issue during connection close

Posted by "Aidan Skinner (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-378?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aidan Skinner reassigned QPID-378:
----------------------------------

    Assignee: Aidan Skinner  (was: Rupert Smith)

> 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
>             Fix For: M3
>
>
> 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.


[jira] Updated: (QPID-378) AMQStateManager issue during connection close

Posted by "Aidan Skinner (JIRA)" <qp...@incubator.apache.org>.
     [ 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: M3
    Affects Version/s: M3

> 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
>             Fix For: M3
>
>
> 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.