You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Keith Wall (JIRA)" <ji...@apache.org> on 2014/05/29 11:26:01 UTC

[jira] [Created] (QPID-5791) JsonStore implementation does not synchronise update allowing for race with create/delete

Keith Wall created QPID-5791:
--------------------------------

             Summary: 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 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