You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Alex Rudyy (JIRA)" <ji...@apache.org> on 2014/06/02 18:17:02 UTC

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

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

Alex Rudyy resolved QPID-5791.
------------------------------

    Resolution: Fixed

> 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: Alex Rudyy
>            Priority: Minor
>             Fix For: 0.29
>
>
> 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