qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Keith Wall (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (QPID-5791) JsonStore implementation does not synchronise update allowing for race with create/delete
Date Thu, 29 May 2014 09:28:01 GMT

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

Keith Wall updated QPID-5791:
-----------------------------

    Description: 
The JsonStore currently does not synchronise its update method, meaning that it is possible
for an #create (or #detele) to race with an #update and end with the following stack trace.

This problem can only affect users of split configuration/message store (introduced by QPID-5087)
where the configuration store is of type JSON.  This has only become default for 0.30.  

{noformat}
2014-05-28 11:20:57,339 ERROR [IoReceiver - /169.124.113.161:33934] (v0_8.AMQProtocolEngine)
- Unexpected exception while processing frame.  Closing connection.
org.apache.qpid.server.store.StoreException: Cannot rename file /home/keith/Qpid-Perftests-TestExecution-StartBroker/qpid-broker/0.29-SNAPSHOT/work/json/default/default.json
to /ho
me/keith/Qpid-Perftests-TestExecution-StartBroker/qpid-broker/0.29-SNAPSHOT/work/json/default/default.bak
        at org.apache.qpid.server.store.JsonFileConfigStore.renameFile(JsonFileConfigStore.java:183)
        at org.apache.qpid.server.store.JsonFileConfigStore.save(JsonFileConfigStore.java:409)
        at org.apache.qpid.server.store.JsonFileConfigStore.create(JsonFileConfigStore.java:372)
        at org.apache.qpid.server.queue.AbstractQueue.onCreate(AbstractQueue.java:247)
        at org.apache.qpid.server.model.AbstractConfiguredObject.doCreation(AbstractConfiguredObject.java:553)
        at org.apache.qpid.server.model.AbstractConfiguredObject.create(AbstractConfiguredObject.java:468)
        at org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory.create(AbstractConfiguredObjectTypeFactory.java:58)
        at org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory.create(AbstractConfiguredObjectTypeFactory.java:31)
        at org.apache.qpid.server.queue.QueueFactory.create(QueueFactory.java:48)
        at org.apache.qpid.server.queue.QueueFactory.create(QueueFactory.java:34)
        at org.apache.qpid.server.model.ConfiguredObjectFactoryImpl.create(ConfiguredObjectFactoryImpl.java:112)
        at org.apache.qpid.server.virtualhost.AbstractVirtualHost.addQueueWithoutDLQ(AbstractVirtualHost.java:605)
        at org.apache.qpid.server.virtualhost.AbstractVirtualHost.addQueue(AbstractVirtualHost.java:598)
        at org.apache.qpid.server.virtualhost.AbstractVirtualHost.createQueue(AbstractVirtualHost.java:582)
        at org.apache.qpid.server.protocol.v0_8.handler.QueueDeclareHandler.createQueue(QueueDeclareHandler.java:217)
        at org.apache.qpid.server.protocol.v0_8.handler.QueueDeclareHandler.methodReceived(QueueDeclareHandler.java:115)
        at org.apache.qpid.server.protocol.v0_8.handler.ServerMethodDispatcherImpl.dispatchQueueDeclare(ServerMethodDispatcherImpl.java:512)
        at org.apache.qpid.framing.amqp_0_9.QueueDeclareBodyImpl.execute(QueueDeclareBodyImpl.java:174)
        at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager$1.run(AMQStateManager.java:121)
        at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager$1.run(AMQStateManager.java:117)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager.methodReceived(AMQStateManager.java:116)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.methodFrameReceived(AMQProtocolEngine.java:591)
        at org.apache.qpid.framing.AMQMethodBodyImpl.handle(AMQMethodBodyImpl.java:97)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.frameReceived(AMQProtocolEngine.java:453)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.dataBlockReceived(AMQProtocolEngine.java:388)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.access$700(AMQProtocolEngine.java:88)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine$2.run(AMQProtocolEngine.java:292)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine$2.run(AMQProtocolEngine.java:275)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:356)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:274)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:88)
        at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:133)
        at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:49)
        at org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161)
        at java.lang.Thread.run(Thread.java:744)
{noformat}



  was:
The JsonStore currently does not synchronise its update method, meaning that it is possible
for an #create (or #detele) to race with an #update and end with the following stack trace.

This problem can only affect users of split configuration/message store where the configuration
store is of type JSON.  This has only become default for 0.30.  

{noformat}
2014-05-28 11:20:57,339 ERROR [IoReceiver - /169.124.113.161:33934] (v0_8.AMQProtocolEngine)
- Unexpected exception while processing frame.  Closing connection.
org.apache.qpid.server.store.StoreException: Cannot rename file /home/keith/Qpid-Perftests-TestExecution-StartBroker/qpid-broker/0.29-SNAPSHOT/work/json/default/default.json
to /ho
me/keith/Qpid-Perftests-TestExecution-StartBroker/qpid-broker/0.29-SNAPSHOT/work/json/default/default.bak
        at org.apache.qpid.server.store.JsonFileConfigStore.renameFile(JsonFileConfigStore.java:183)
        at org.apache.qpid.server.store.JsonFileConfigStore.save(JsonFileConfigStore.java:409)
        at org.apache.qpid.server.store.JsonFileConfigStore.create(JsonFileConfigStore.java:372)
        at org.apache.qpid.server.queue.AbstractQueue.onCreate(AbstractQueue.java:247)
        at org.apache.qpid.server.model.AbstractConfiguredObject.doCreation(AbstractConfiguredObject.java:553)
        at org.apache.qpid.server.model.AbstractConfiguredObject.create(AbstractConfiguredObject.java:468)
        at org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory.create(AbstractConfiguredObjectTypeFactory.java:58)
        at org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory.create(AbstractConfiguredObjectTypeFactory.java:31)
        at org.apache.qpid.server.queue.QueueFactory.create(QueueFactory.java:48)
        at org.apache.qpid.server.queue.QueueFactory.create(QueueFactory.java:34)
        at org.apache.qpid.server.model.ConfiguredObjectFactoryImpl.create(ConfiguredObjectFactoryImpl.java:112)
        at org.apache.qpid.server.virtualhost.AbstractVirtualHost.addQueueWithoutDLQ(AbstractVirtualHost.java:605)
        at org.apache.qpid.server.virtualhost.AbstractVirtualHost.addQueue(AbstractVirtualHost.java:598)
        at org.apache.qpid.server.virtualhost.AbstractVirtualHost.createQueue(AbstractVirtualHost.java:582)
        at org.apache.qpid.server.protocol.v0_8.handler.QueueDeclareHandler.createQueue(QueueDeclareHandler.java:217)
        at org.apache.qpid.server.protocol.v0_8.handler.QueueDeclareHandler.methodReceived(QueueDeclareHandler.java:115)
        at org.apache.qpid.server.protocol.v0_8.handler.ServerMethodDispatcherImpl.dispatchQueueDeclare(ServerMethodDispatcherImpl.java:512)
        at org.apache.qpid.framing.amqp_0_9.QueueDeclareBodyImpl.execute(QueueDeclareBodyImpl.java:174)
        at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager$1.run(AMQStateManager.java:121)
        at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager$1.run(AMQStateManager.java:117)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager.methodReceived(AMQStateManager.java:116)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.methodFrameReceived(AMQProtocolEngine.java:591)
        at org.apache.qpid.framing.AMQMethodBodyImpl.handle(AMQMethodBodyImpl.java:97)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.frameReceived(AMQProtocolEngine.java:453)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.dataBlockReceived(AMQProtocolEngine.java:388)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.access$700(AMQProtocolEngine.java:88)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine$2.run(AMQProtocolEngine.java:292)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine$2.run(AMQProtocolEngine.java:275)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:356)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:274)
        at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:88)
        at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:133)
        at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:49)
        at org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161)
        at java.lang.Thread.run(Thread.java:744)
{noformat}




> JsonStore implementation does not synchronise update allowing for race with create/delete
> -----------------------------------------------------------------------------------------
>
>                 Key: QPID-5791
>                 URL: https://issues.apache.org/jira/browse/QPID-5791
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: 0.26, 0.28, 0.29
>            Reporter: Keith Wall
>            Assignee: Keith Wall
>            Priority: Minor
>
> The JsonStore currently does not synchronise its update method, meaning that it is possible
for an #create (or #detele) to race with an #update and end with the following stack trace.
> This problem can only affect users of split configuration/message store (introduced by
QPID-5087) where the configuration store is of type JSON.  This has only become default for
0.30.  
> {noformat}
> 2014-05-28 11:20:57,339 ERROR [IoReceiver - /169.124.113.161:33934] (v0_8.AMQProtocolEngine)
- Unexpected exception while processing frame.  Closing connection.
> org.apache.qpid.server.store.StoreException: Cannot rename file /home/keith/Qpid-Perftests-TestExecution-StartBroker/qpid-broker/0.29-SNAPSHOT/work/json/default/default.json
to /ho
> me/keith/Qpid-Perftests-TestExecution-StartBroker/qpid-broker/0.29-SNAPSHOT/work/json/default/default.bak
>         at org.apache.qpid.server.store.JsonFileConfigStore.renameFile(JsonFileConfigStore.java:183)
>         at org.apache.qpid.server.store.JsonFileConfigStore.save(JsonFileConfigStore.java:409)
>         at org.apache.qpid.server.store.JsonFileConfigStore.create(JsonFileConfigStore.java:372)
>         at org.apache.qpid.server.queue.AbstractQueue.onCreate(AbstractQueue.java:247)
>         at org.apache.qpid.server.model.AbstractConfiguredObject.doCreation(AbstractConfiguredObject.java:553)
>         at org.apache.qpid.server.model.AbstractConfiguredObject.create(AbstractConfiguredObject.java:468)
>         at org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory.create(AbstractConfiguredObjectTypeFactory.java:58)
>         at org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory.create(AbstractConfiguredObjectTypeFactory.java:31)
>         at org.apache.qpid.server.queue.QueueFactory.create(QueueFactory.java:48)
>         at org.apache.qpid.server.queue.QueueFactory.create(QueueFactory.java:34)
>         at org.apache.qpid.server.model.ConfiguredObjectFactoryImpl.create(ConfiguredObjectFactoryImpl.java:112)
>         at org.apache.qpid.server.virtualhost.AbstractVirtualHost.addQueueWithoutDLQ(AbstractVirtualHost.java:605)
>         at org.apache.qpid.server.virtualhost.AbstractVirtualHost.addQueue(AbstractVirtualHost.java:598)
>         at org.apache.qpid.server.virtualhost.AbstractVirtualHost.createQueue(AbstractVirtualHost.java:582)
>         at org.apache.qpid.server.protocol.v0_8.handler.QueueDeclareHandler.createQueue(QueueDeclareHandler.java:217)
>         at org.apache.qpid.server.protocol.v0_8.handler.QueueDeclareHandler.methodReceived(QueueDeclareHandler.java:115)
>         at org.apache.qpid.server.protocol.v0_8.handler.ServerMethodDispatcherImpl.dispatchQueueDeclare(ServerMethodDispatcherImpl.java:512)
>         at org.apache.qpid.framing.amqp_0_9.QueueDeclareBodyImpl.execute(QueueDeclareBodyImpl.java:174)
>         at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager$1.run(AMQStateManager.java:121)
>         at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager$1.run(AMQStateManager.java:117)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at javax.security.auth.Subject.doAs(Subject.java:415)
>         at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager.methodReceived(AMQStateManager.java:116)
>         at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.methodFrameReceived(AMQProtocolEngine.java:591)
>         at org.apache.qpid.framing.AMQMethodBodyImpl.handle(AMQMethodBodyImpl.java:97)
>         at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.frameReceived(AMQProtocolEngine.java:453)
>         at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.dataBlockReceived(AMQProtocolEngine.java:388)
>         at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.access$700(AMQProtocolEngine.java:88)
>         at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine$2.run(AMQProtocolEngine.java:292)
>         at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine$2.run(AMQProtocolEngine.java:275)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at javax.security.auth.Subject.doAs(Subject.java:356)
>         at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:274)
>         at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:88)
>         at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:133)
>         at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:49)
>         at org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161)
>         at java.lang.Thread.run(Thread.java:744)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

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


Mime
View raw message