Bug 1060301 - Unable to create a cache store that requires two or more store properties
Summary: Unable to create a cache store that requires two or more store properties
Alias: None
Product: JBoss Data Grid 6
Classification: JBoss
Component: JON Plugin
Version: 6.2.0
Hardware: Unspecified
OS: Unspecified
Target Milestone: CR1
: 6.2.1
Assignee: Tristan Tarrant
QA Contact: Martin Gencur
Depends On: 1076047
TreeView+ depends on / blocked
Reported: 2014-01-31 18:11 UTC by Larry O'Leary
Modified: 2018-12-06 15:49 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed:
Type: Bug

Attachments (Terms of Use)
jon-server-side-error-more-props-during-cache-store-creation (87.01 KB, text/plain)
2014-02-17 13:09 UTC, Tomas Sykora
no flags Details

System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 1060299 0 unspecified VERIFIED Unable to create a cache store using default configuration due to optional property being null 2021-02-22 00:41:40 UTC
Red Hat Issue Tracker ISPN-4010 0 Major Resolved Allow configuring the LevelDB cache store through JON 2014-06-27 01:53:53 UTC

Internal Links: 1060299

Description Larry O'Leary 2014-01-31 18:11:57 UTC
Description of problem:
When creating a cache store that contains multiples properties defined in the store's 'Properties' configuration element, the creation of the store fails. It appears the data type sent by the management plug-in does not match that of the required type expected by the management API.

This issue prevents a user from creating or modifying a cache store that contains additional properties. Therefore they are unable to use the "managed" part of their subscription in these cases.

Version-Release number of selected component (if applicable):
JDG Plugin Pack Update-01 for JBoss ON 3.2.0
   Infinispan Plugin 6.0.1.Final-redhat-2

How reproducible:

Steps to Reproduce:
1.  Install and start JON 3.2 system.
2.  Install JDG Plugin Pack Update-01 for JBoss ON 3.2.0.
3.  Install and start JDG server using clustered.xml configuration
4.  Import JDG 6.2 server into inventory.
5.  Configure JDG connection settings.
6.  Create a new Infinispan Cache:

    From JDG ( / infinispan / Cache Containers / clustered -> Create Child > Cache
    *   *New Resource Name*: `MyCacheA`
    *   *Kind of cache*: *distributed-cache*
    *   *Start*: *LAZY*
    *   *Batching*: *No*
    *   *Indexing*: *NONE*
    *   *Mode*: *SYNC*

7.  Create a new Cache Store:

    From JDG ( / infinispan / Cache Containers / clustered / Cache / MyCacheA -> Create Child > Store
    *   *New Resource Name*: `MyCacheStoreA`
    *   *Kind of store*:    *Generic Store*
    *   *Class*:    `org.infinispan.loaders.leveldb.LevelDBCacheStore`
    *   *Properties*:
        *   `cacheSize` = `5`
        *   `location` = `leveldb/F2/data`
        *   `expiredLocation` = `leveldb/F2/expired`

Actual results:
Cache creation fails and child history report contains the following error:
    JBAS014688: Wrong type for properties. Expected [PROPERTY] but was OBJECT, rolled-back=true

Expected results:
Cache creation should be successful.

Additional info:
If you only add a single property name/value pair to the "properties" list the cache IS created successfully. The error only occurs when there are two or more properties.

Comment 1 Larry O'Leary 2014-01-31 18:13:04 UTC
This bug relates to bug 1060299 as they both appear to deal with incorrect configuration being sent to the management API by the JDG management plug-in.

Comment 4 Tomas Sykora 2014-02-17 10:55:08 UTC
No, this functionality was added in 6.2.

Comment 5 Tomas Sykora 2014-02-17 13:09:51 UTC
Created attachment 864079 [details]

Comment 6 Tomas Sykora 2014-02-17 13:10:43 UTC
I confirm this is real issue. I can experience this unwanted behaviour with environment set up mentioned by customer.

Added an attachment with underlying error from JON server.log which might or might not be connected to this issue. 

An interesting thing is that error is thrown even in case of only ONE property is filled in 'Properties' list... a particular store is created successfully with this set-up.

Anyway, more properties in 'Properties' list cause problems.

CCing William to let him know about this issue as well.

Comment 7 Tomas Sykora 2014-03-14 13:11:26 UTC
This should be now ok -- in 6.2.1 CR1 we were able to successfully configure and create LevelDB cache store for a particular cache resource. There is a new possibility of cache child resource creation (directly LevelDB store).

Note that after a configuration, the JDG server needs to be restarted to make changes in standalone.xml file live and apply. 

Note2 that JDG need to be patched properly to use LevelDB JNI implementation.

We were able to store entries into the store, restart JDG server and fetch entries from the store, so we verified that data were actually really stored there.

Good news for this work flow (requirement).

Comment 8 Tomas Sykora 2014-03-31 12:05:41 UTC
6.2.1 CR3 update.

Now we are able to configure generic cache store via JON even with 2 or more set up properties.

Note that property CLASS is now fully required for generic store. For creation of LevelDB related stores, customers should be guide to use different operation: create child -> levelDB store.

Note that this needs to have properly patched JDG. (Fusesource libs, leveldb)

Setting this as VERIFIED. Thanks for the fix!

Note You need to log in before you can comment on or make changes to this bug.