[
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: [email protected]
For additional commands, e-mail: [email protected]