:validate-operation operation produces unclear failure message;
pollutes server log with exceptions
---------------------------------------------------------------------------------------------------
Key: WFCORE-1928
URL:
https://issues.jboss.org/browse/WFCORE-1928
Project: WildFly Core
Issue Type: Bug
Components: CLI, Domain Management
Affects Versions: 3.0.0.Alpha11
Reporter: Michal Jurc
Assignee: Kabir Khan
Operation {{:validate-operation}} produces {{java.util.NoSuchElementException}} when no
parameter is passed to it, polluting the server log with warning with stack trace.
{{jboss-cli}}:
{code}[standalone@localhost:9990 /] :validate-operation
{
"outcome" => "failed",
"failure-description" => "WFLYCTL0158: Operation handler failed:
java.util.NoSuchElementException: No child 'value' exists",
"rolled-back" => true
}
{code}
{code}08:58:13,409 ERROR [org.jboss.as.controller.management-operation]
(management-handler-thread - 17) WFLYCTL0013: Operation ("validate-operation")
failed - address: ([]): java.util.NoSuchElementException: No child 'value' exists
at org.jboss.dmr.ModelValue.requireChild(ModelValue.java:387)
at org.jboss.dmr.ObjectModelValue.requireChild(ObjectModelValue.java:302)
at org.jboss.dmr.ModelNode.require(ModelNode.java:875)
at
org.jboss.as.controller.operations.common.ValidateOperationHandler.execute(ValidateOperationHandler.java:91)
at
org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:940)
at
org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:683)
at
org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:382)
at
org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1363)
at
org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:410)
at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:232)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.doExecute(ModelControllerClientOperationHandler.java:213)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.access$300(ModelControllerClientOperationHandler.java:136)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:157)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:149)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1.execute(ModelControllerClientOperationHandler.java:153)
at
org.jboss.as.protocol.mgmt.ManagementRequestContextImpl$1.doExecute(ManagementRequestContextImpl.java:70)
at
org.jboss.as.protocol.mgmt.ManagementRequestContextImpl$AsyncTaskRunner.run(ManagementRequestContextImpl.java:160)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
{code}
Upon passing this operation an illegal parameter, {{java.lang.IllegalArgumentException}}
is produced instead of well formed failure message.
{{jboss-cli}}:
{code}[standalone@localhost:9990 /] :validate-operation(value=nonsense)
{
"outcome" => "failed",
"failure-description" => "WFLYCTL0158: Operation handler failed:
java.lang.IllegalArgumentException",
"rolled-back" => true
}
{code}
{{server.log}}:
{code}09:01:10,367 ERROR [org.jboss.as.controller.management-operation]
(management-handler-thread - 19) WFLYCTL0013: Operation ("validate-operation")
failed - address: ([]): java.lang.IllegalArgumentException
at org.jboss.dmr.ModelValue.getChild(ModelValue.java:115)
at org.jboss.dmr.ModelNode.get(ModelNode.java:861)
at
org.jboss.as.controller.operations.common.ValidateOperationHandler.execute(ValidateOperationHandler.java:92)
at
org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:940)
at
org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:683)
at
org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:382)
at
org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1363)
at
org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:410)
at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:232)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.doExecute(ModelControllerClientOperationHandler.java:213)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.access$300(ModelControllerClientOperationHandler.java:136)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:157)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:149)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1.execute(ModelControllerClientOperationHandler.java:153)
at
org.jboss.as.protocol.mgmt.ManagementRequestContextImpl$1.doExecute(ManagementRequestContextImpl.java:70)
at
org.jboss.as.protocol.mgmt.ManagementRequestContextImpl$AsyncTaskRunner.run(ManagementRequestContextImpl.java:160)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
{code}
This usage, however, does not pollute the server log with warning with stack trace:
{{jboss-cli}}:
{code}[standalone@localhost:9990 /] :validate-operation(value={"nonsense" =>
"nonsense"})
Failed to handle ':validate-operation(value={"nonsense" =>
"nonsense"})': java.lang.IllegalArgumentException
{code}