Bug 967984

Summary: Support For Child Elements of <loader> Missing When Defining Custom Cache Loader
Product: [JBoss] JBoss Data Grid 6 Reporter: Jonathan Mason <jmason>
Component: Infinispan, ServerAssignee: Tristan Tarrant <ttarrant>
Status: VERIFIED --- QA Contact: Martin Gencur <mgencur>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.1.0CC: dereed, jawilson, jdg-bugs
Target Milestone: ---   
Target Release: 6.2.0   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Red Hat JBoss Data Grid server is not able to parse XML configuration for a custom cache loader if the configuration contains child elements, such as custom properties, inside &lt;loader&gt; element. As a result, JBoss Data Grid server fails to start. </para> <para> The support for child elements of &lt;loader&gt; element has been implemented. As a result, a custom cache loader inside JBoss Data Grid server allows for nested configuration tags and can successfully start with such a configuration.
Story Points: ---
Clone Of:
: 973763 (view as bug list) Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 973763    

Description Jonathan Mason 2013-05-28 17:47:20 UTC
Description of problem:

When defining a custom cache loader via configuration file, JBoss Data Grid (JDG) fails to boot due to parsing errors (child elements of <loader>). Looking at org.jboss.as.clustering.infinispan.subsystem.InfinispanSubsystemXMLReader_5_2#parseCustomLoader, it seems that there is not support for child elements for <loader>.


Version-Release number of selected component (if applicable):
JBoss Data Grid 6.1 (based on Infinispan 5.2)


How reproducible:
Easily


Steps to Reproduce:

1). Define a cache with a customer loader like such:

<local-cache name="AppProps" start="EAGER">
     <transaction mode="NONE"/>
     <loader class="com.ferguson.xp.SimpleCacheLoader">
	<property name="p1">v1</property>
     </loader>
</local-cache>


Actual results:

JDG fails to boot with XML parsing errors:

14:33:18,864 ERROR [org.jboss.as.server] JBAS015956: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: JBAS014676: Failed to parse configuration
...
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[116,27]
Message: JBAS014789: Unexpected element '{urn:infinispan:server:core:5.2}property' encountered
	at org.jboss.as.controller.parsing.ParseUtils.unexpectedElement(ParseUtils.java:85) [jboss-as-controller-7.1.3.Final-redhat-4.jar:7.1.3.Final-redhat-4]
...


Expected results:

JDG can sucessfully parse elements and boot up cleanly


Additional info:

Comment 2 Jakub Markos 2013-07-24 09:15:27 UTC
Works in 6.2.0.DR1 (fixed by https://github.com/infinispan/infinispan-server/commit/e9691aa1d4eb6ac67aadea23d7912002974eb24f + new test in our testsuite).

Comment 4 dereed 2014-01-09 17:25:37 UTC
Fixed the doc text by changing "store" to "loader".

(The configuration did already work for a cache store, it was missing for a cache loader).