Daniil Kirilyuk created QPID-8665:
-------------------------------------

             Summary: [Broker-J] Changing queue exclusive mode throws exception
                 Key: QPID-8665
                 URL: https://issues.apache.org/jira/browse/QPID-8665
             Project: Qpid
          Issue Type: Bug
          Components: Broker-J
    Affects Versions: qpid-java-broker-9.1.0
            Reporter: Daniil Kirilyuk
             Fix For: qpid-java-broker-9.1.1


If queue has a consumer and exclusive mode is set to CONNECTION, then changing 
queue exclusive mode to PRINCIPAL or CONTAINER will throw exception below. Then 
no consumer is able to consume messages from queue and broker's webgui fails to 
show Edit Queue dialog again.

Steps to reproduce:
 * set queue exclusive mode to CONNECTION in broker's webgui
 * connect to queue
 * set queue exclusive mode to PRINCIPAL or CONTAINER in broker's webgui
 * exception should be thrown

{noformat}
2024-01-16T09:30:55,432Z INFO  [VirtualHostNode-default-Config] (q.m.q.update) 
- [mng:uO4gG/VX(admin@/127.0.0.1:45136)] 
[vh(/default)/qu(broadcast.CAREX_TESTCALMMACC1.Public)] QUE-1017 : Update : 
"broadcast.CAREX_TESTCALMMACC1.Public" : FAILURE : 
{alternateBinding=null,exclusive=PRINCIPAL}
2024-01-16T09:30:55,435Z WARN  [qtp398517223-54] 
(o.a.q.s.m.p.ManagementException) - Unexpected Exception
java.lang.ClassCastException: class java.lang.String cannot be cast to class 
java.security.Principal (java.lang.String and java.security.Principal are in 
module java.base of loader 'bootstrap')
        at 
org.apache.qpid.server.queue.AbstractQueue.getOwner(AbstractQueue.java:776)
        at jdk.internal.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
org.apache.qpid.server.model.ConfiguredObjectMethodAttributeOrStatistic.getValue(ConfiguredObjectMethodAttributeOrStatistic.java:68)
        at 
org.apache.qpid.server.model.ConfiguredObjectMethodAttribute.getValue(ConfiguredObjectMethodAttribute.java:29)
        at 
org.apache.qpid.server.model.AbstractConfiguredObject.getAttribute(AbstractConfiguredObject.java:1792)
        at 
org.apache.qpid.server.model.AbstractConfiguredObject$9.lambda$getAttributes$0(AbstractConfiguredObject.java:1916)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
        at 
org.apache.qpid.server.model.AbstractConfiguredObject$9.getAttributes(AbstractConfiguredObject.java:1906)
        at 
org.apache.qpid.server.store.JsonFileConfigStore.update(JsonFileConfigStore.java:420)
        at 
org.apache.qpid.server.configuration.store.StoreConfigurationChangeListener.bulkChangeEnd(StoreConfigurationChangeListener.java:98)
        at 
org.apache.qpid.server.model.AbstractConfiguredObject.bulkChangeEnd(AbstractConfiguredObject.java:3030)
        at 
org.apache.qpid.server.model.AbstractConfiguredObject.changeAttributes(AbstractConfiguredObject.java:3065)
        at 
org.apache.qpid.server.queue.AbstractQueue.changeAttributes(AbstractQueue.java:3369)
        at 
org.apache.qpid.server.model.AbstractConfiguredObject$19.setAttributes(AbstractConfiguredObject.java:2914)
        at 
org.apache.qpid.server.model.AbstractConfiguredObject$19.execute(AbstractConfiguredObject.java:2896)
        at 
org.apache.qpid.server.model.AbstractConfiguredObject$19.execute(AbstractConfiguredObject.java:2889)
        at 
org.apache.qpid.server.configuration.updater.TaskExecutorImpl$TaskLoggingWrapper.execute(TaskExecutorImpl.java:248)
        at 
org.apache.qpid.server.configuration.updater.TaskExecutorImpl$CallableWrapper.lambda$call$0(TaskExecutorImpl.java:317)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
        at 
org.apache.qpid.server.configuration.updater.TaskExecutorImpl$CallableWrapper.call(TaskExecutorImpl.java:313)
        at 
com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)
        at 
com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:75)
{noformat}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to