]
Manik Surtani commented on ISPN-809:
------------------------------------
You could use Key2StringMapper - which is in the JDBCCacheStore. Perhaps we'd need to
move this interface and the impls in the JDBCCacheStore to the core module so it can be
shared across all cache stores.
CassandraCacheStore needs special handling of array type keys
-------------------------------------------------------------
Key: ISPN-809
URL:
https://jira.jboss.org/browse/ISPN-809
Project: Infinispan
Issue Type: Bug
Components: Loaders and Stores
Affects Versions: 4.2.0.CR2
Reporter: Jonas Lasson
Assignee: Tristan Tarrant
Priority: Critical
Fix For: 4.2.0.CR3
Currently the Cassandra store is creating CassandraKeys based on the keys .toString
method, see below:
private String hashKey(Object key) {
return entryKeyPrefix + key.toString();
}
When HotRod server is used the key will be a ByteArrayKey, which has a toString that is
non deterministic and outputs (3 examples with the same byte array):
ByteArrayKey{data=ByteArray{size=8, hashCode=33d626a4, array=[2, 62, 5, 74, 79, 78, 65,
83, ..]}}
ByteArrayKey{data=ByteArray{size=8, hashCode=2ada52a1, array=[2, 62, 5, 74, 79, 78, 65,
83, ..]}}
ByteArrayKey{data=ByteArray{size=8, hashCode=5576b9ea, array=[2, 62, 5, 74, 79, 78, 65,
83, ..]}}
As you can see the hashCode is differing even though the byte array is the same.
This is because ByteArrayKey.toString is using Util.printArray(byte[],true) where true
means that a hashCode should be printed as well.
Unfortenaly, the hashcode is calculated with byte[].hashCode() which is not considering
the data in the byte array.
There are several solutions to the problem:
* Have another mechanism to export unique ids from the key instead of toString (with a
possible toString fallback)
* Fix so that ByteArrayKey.toString returns deterministic data. (Still bad solution as
the keys will be very long and not make sense).
* Special handling for ByteArrayKey to calculate the key based on the bytes in the byte
array.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: