Uploaded image for project: 'WildFly Core'
  1. WildFly Core
  2. WFCORE-3056

Model is not validated for write attribute handlers like it is add/remove ones

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • 3.0.0.Beta28
    • Management
    • None
    • Hide

      1. Start WildFly
      2. Start the CLI
      3. Run /subsystem=security/security-domain=jboss-ejb-policy:write-attribute(name=cache-type, value=default10)

      This results in:

      {
          "outcome" => "success",
          "response-headers" => {
              "operation-requires-reload" => true,
              "process-state" => "reload-required"
          }
      }
      

      Upon reload WildFly fails to boot with the following exception:

      17:03:55,295 ERROR [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0055: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0085: Failed to parse configuration
      	at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:143)
      	at org.jboss.as.server.ServerService.boot(ServerService.java:387)
      	at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:370)
      	at java.lang.Thread.run(Thread.java:748)
      Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[446,17]
      Message: "WFLYCTL0129: Invalid value default10 for cache-type; legal values are [\"default\", \"infinispan\"]"
      	at org.jboss.as.controller.SimpleAttributeDefinition.parse(SimpleAttributeDefinition.java:179)
      	at org.jboss.as.controller.SimpleAttributeDefinition.parseAndSetParameter(SimpleAttributeDefinition.java:204)
      	at org.jboss.as.security.SecuritySubsystemParser.parseSecurityDomain(SecuritySubsystemParser.java:229)
      	at org.jboss.as.security.SecuritySubsystemParser.parseSecurityDomains(SecuritySubsystemParser.java:197)
      	at org.jboss.as.security.SecuritySubsystemParser.readElement(SecuritySubsystemParser.java:121)
      	at org.jboss.as.security.SecuritySubsystemParser_2_0.readElement(SecuritySubsystemParser_2_0.java:83)
      	at org.jboss.as.security.SecuritySubsystemParser.readElement(SecuritySubsystemParser.java:108)
      	at org.jboss.as.security.SecuritySubsystemParser.readElement(SecuritySubsystemParser.java:88)
      	at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122)
      	at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69)
      	at org.jboss.as.server.parsing.StandaloneXml_5.parseServerProfile(StandaloneXml_5.java:610)
      	at org.jboss.as.server.parsing.StandaloneXml_5.readServerElement(StandaloneXml_5.java:243)
      	at org.jboss.as.server.parsing.StandaloneXml_5.readElement(StandaloneXml_5.java:142)
      	at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:107)
      	at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:49)
      	at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122)
      	at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:76)
      	at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:126)
      	... 3 more
      
      17:03:55,297 FATAL [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0056: Server boot has failed in an unrecoverable manner; exiting. See previous messages for details.
      
      Show
      1. Start WildFly 2. Start the CLI 3. Run /subsystem=security/security-domain=jboss-ejb-policy:write-attribute(name=cache-type, value=default10) This results in: { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } } Upon reload WildFly fails to boot with the following exception: 17:03:55,295 ERROR [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0055: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0085: Failed to parse configuration at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:143) at org.jboss.as.server.ServerService.boot(ServerService.java:387) at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:370) at java.lang.Thread.run(Thread.java:748) Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[446,17] Message: "WFLYCTL0129: Invalid value default10 for cache-type; legal values are [\"default\", \"infinispan\"]" at org.jboss.as.controller.SimpleAttributeDefinition.parse(SimpleAttributeDefinition.java:179) at org.jboss.as.controller.SimpleAttributeDefinition.parseAndSetParameter(SimpleAttributeDefinition.java:204) at org.jboss.as.security.SecuritySubsystemParser.parseSecurityDomain(SecuritySubsystemParser.java:229) at org.jboss.as.security.SecuritySubsystemParser.parseSecurityDomains(SecuritySubsystemParser.java:197) at org.jboss.as.security.SecuritySubsystemParser.readElement(SecuritySubsystemParser.java:121) at org.jboss.as.security.SecuritySubsystemParser_2_0.readElement(SecuritySubsystemParser_2_0.java:83) at org.jboss.as.security.SecuritySubsystemParser.readElement(SecuritySubsystemParser.java:108) at org.jboss.as.security.SecuritySubsystemParser.readElement(SecuritySubsystemParser.java:88) at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122) at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69) at org.jboss.as.server.parsing.StandaloneXml_5.parseServerProfile(StandaloneXml_5.java:610) at org.jboss.as.server.parsing.StandaloneXml_5.readServerElement(StandaloneXml_5.java:243) at org.jboss.as.server.parsing.StandaloneXml_5.readElement(StandaloneXml_5.java:142) at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:107) at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:49) at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122) at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:76) at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:126) ... 3 more 17:03:55,297 FATAL [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0056: Server boot has failed in an unrecoverable manner; exiting. See previous messages for details.
    • Workaround Exists
    • Hide

      Override validateUpdatedModel() of the attribute's write handler. Example:

      @Override
      protected void validateUpdatedModel(OperationContext context, Resource model) throws OperationFailedException {
          SecurityDomainResourceDefinition.CACHE_TYPE.validateOperation(model.getModel());
      }
      
      Show
      Override validateUpdatedModel() of the attribute's write handler. Example: @Override protected void validateUpdatedModel(OperationContext context, Resource model) throws OperationFailedException { SecurityDomainResourceDefinition.CACHE_TYPE.validateOperation(model.getModel()); }

    Description

      When creating a new subsystem attribute and using .setValidator(new StringAllowedValuesValidator()) as in the below example:

      public static final SimpleAttributeDefinition CACHE_TYPE = new SimpleAttributeDefinitionBuilder(Constants.CACHE_TYPE, ModelType.STRING, true)
              .setAllowExpression(true)
              .setValidator(new StringAllowedValuesValidator("default", INFINISPAN_CACHE_TYPE))
              .build();
      

      The model is not validated during runtime, leading to WildFly not being able to boot after a reload due to an invalid model.

      Attachments

        Activity

          People

            rhn-support-iweiss Ingo Weiss
            rhn-support-iweiss Ingo Weiss
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: