Buggy code:
public class ValidateOperationHandler implements OperationStepHandler { public static ValidateOperationHandler INSTANCE = new ValidateOperationHandler ( false ) ; public static ValidateOperationHandler SLAVE_HC_INSTANCE = new ValidateOperationHandler ( true ) ; private static final SimpleAttributeDefinition VALUE = new org . jboss . as . controller . SimpleAttributeDefinitionBuilder ( org . jboss . as . controller . descriptions . ModelDescriptionConstants . VALUE , org . jboss . dmr . ModelType . OBJECT ) . setAllowNull ( false ) . build ( ) ; public static final OperationDefinition DEFINITION = new org . jboss . as . controller . SimpleOperationDefinitionBuilder ( VALIDATE_OPERATION , ControllerResolver . getResolver ( "global" ) ) . setParameters ( ValidateOperationHandler . VALUE ) . setReadOnly ( ) . setRuntimeOnly ( ) . build ( ) ; public static final OperationDefinition DEFINITION_PRIVATE = new org . jboss . as . controller . SimpleOperationDefinitionBuilder ( VALIDATE_OPERATION , ControllerResolver . getResolver ( "global" ) ) . setParameters ( ValidateOperationHandler . VALUE ) . setReadOnly ( ) . setRuntimeOnly ( ) . setPrivateEntry ( ) . build ( ) ; private final boolean slave ; private ValidateOperationHandler ( boolean slave ) { } @ Override public void execute ( OperationContext context , ModelNode operation ) throws OperationFailedException { ModelNode op = operation . require ( ValidateOperationHandler . VALUE . getName ( ) ) ; PathAddress addr = PathAddress . pathAddress ( op . get ( OP_ADDR ) ) ; if ( slave ) { op = op . clone ( ) ; if ( ( ( addr . size ( ) ) > 0 ) && ( addr . getElement ( 0 ) . getKey ( ) . equals ( HOST ) ) ) { addr = addr . subAddress ( 1 ) ; op . get ( OP_ADDR ) . set ( addr . toModelNode ( ) ) ; } } ProxyOperationAddressTranslator translator = null ; ImmutableManagementResourceRegistration proxyReg = null ; PathAddress proxyAddr = PathAddress . EMPTY_ADDRESS ; for ( PathElement element : addr ) { proxyAddr = proxyAddr . append ( element ) ; ImmutableManagementResourceRegistration reg = context . getResourceRegistration ( ) . getSubModel ( proxyAddr ) ; if ( reg . isRemote ( ) ) { translator = ( element . getKey ( ) . equals ( SERVER ) ) ? ProxyOperationAddressTranslator . SERVER : ProxyOperationAddressTranslator . HOST ; proxyReg = reg ; break ; } } if ( proxyReg != null ) { ModelNode proxyOp = operation . clone ( ) ; proxyOp . get ( OP_ADDR ) . set ( proxyAddr . toModelNode ( ) ) ; proxyOp . get ( ValidateOperationHandler . VALUE . getName ( ) , OP_ADDR ) . set ( translator . translateAddress ( addr ) . toModelNode ( ) ) ; final ModelNode result = new ModelNode ( ) ; <START_BUG> context . addStep ( result , proxyOp , proxyReg . getOperationHandler ( EMPTY_ADDRESS , VALIDATE_OPERATION ) , IMMEDIATE ) ; <END_BUG> context . completeStep ( new OperationContext . RollbackHandler ( ) { @ Override public void handleRollback ( OperationContext context , ModelNode operation ) { context . getFailureDescription ( ) . set ( result . get ( FAILURE_DESCRIPTION ) ) ; } } ) ; } else { try { new org . jboss . as . controller . operations . validation . OperationValidator ( context . getResourceRegistration ( ) , false , false ) . validateOperation ( op ) ; } catch ( IllegalArgumentException e ) { context . getFailureDescription ( ) . set ( e . getMessage ( ) ) ; } context . completeStep ( NOOP_ROLLBACK_HANDLER ) ; } } }

Fix:
context . addStep ( result , proxyOp , proxyReg . getOperationHandler ( EMPTY_ADDRESS , VALIDATE_OPERATION ) , MODEL , true ) ;