[
https://issues.jboss.org/browse/ISPN-4125?page=com.atlassian.jira.plugin....
]
Adrian Nistor commented on ISPN-4125:
-------------------------------------
It seems that while my previous analysis is correct that mysql messes with unicode char
0xFEFF, it is still possible to avoid it in versions > 5.5.
There are two steps for this:
1. Append "useUnicode=yes&characterEncoding=UTF-8" to your jdbc url to
activate unicode support. eg:
jdbc:mysql://localhost:3306/ispn?useUnicode=yes&characterEncoding=UTF-8
2. change the definition of your id column to be : "VARCHAR(255) CHARACTER SET utf8
COLLATE utf8_unicode_ci"
Since a workaround is available I will close this issue and leave proper and safe handling
of the issue to ISPN-4159.
ClassCastException if cache.keyset() is invoked for a
string-keyed-jdbc-store in C/S mode
-----------------------------------------------------------------------------------------
Key: ISPN-4125
URL:
https://issues.jboss.org/browse/ISPN-4125
Project: Infinispan
Issue Type: Bug
Components: Remote Querying
Affects Versions: 6.0.0.Final
Reporter: Wolf-Dieter Fink
Assignee: Adrian Nistor
Labels: 621, 630
Fix For: 7.0.0.Alpha2, 7.0.0.Final
Attachments: reproducer.zip
If the cache is empty cache.keyset() invocation returns an empty set.
If it is invoked after entities are added it failes with the Exception below.
The same test work if a binary-keyed-jdbc-store is used!
The HotRod client is based on the hot-rod C/S quickstart.
The configuration is:
<subsystem xmlns="urn:infinispan:server:core:6.0"
default-cache-container="clustered">
<cache-container name="clustered"
default-cache="string" statistics="true">
<transport executor="infinispan-transport"
lock-timeout="60000"/>
<replicated-cache name="string" mode="ASYNC"
start="EAGER">
<locking isolation="READ_COMMITTED"
acquire-timeout="20000" concurrency-level="500"
striping="false"/>
<transaction mode="NONE"/>
<string-keyed-jdbc-store
datasource="java:jboss/datasources/JDGDatasource" passivation="false"
preload="true" purge="false" shared="false">
<!-- property
name="databaseType">ORACLE</property -->
<string-keyed-table prefix="qs">
<id-column name="id"
type="VARCHAR(255)"/>
<data-column name="datum"
type="BLOB(2000)"/>
<timestamp-column name="version"
type="BIGINT"/>
</string-keyed-table>
<write-behind modification-queue-size="1024"
shutdown-timeout="25000" flush-lock-timeout="15000"
thread-pool-size="5" />
</string-keyed-jdbc-store>
<expiration interval="10000" />
</replicated-cache>
ERROR [org.infinispan.server.hotrod.HotRodDecoder:76] (HotRodServerWorker-88) ISPN005009:
Unexpected error before any request parameters read: java.lang.ClassCastException:
java.lang.String cannot be cast to [B
at
org.infinispan.server.hotrod.AbstractEncoder1x$$anonfun$writeResponse$5.apply(AbstractEncoder1x.scala:113)
[infinispan.jar:7.0.0-SNAPSHOT]
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at
org.infinispan.server.hotrod.AbstractEncoder1x.writeResponse(AbstractEncoder1x.scala:113)
[infinispan.jar:7.0.0-SNAPSHOT]
at org.infinispan.server.hotrod.HotRodEncoder.encode(HotRodEncoder.scala:48)
[infinispan.jar:7.0.0-SNAPSHOT]
at
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.doEncode(OneToOneEncoder.java:66)
[netty-3.6.6.Final.jar:]
at
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59)
[netty-3.6.6.Final.jar:]
at org.jboss.netty.channel.Channels.write(Channels.java:704) [netty-3.6.6.Final.jar:]
at org.jboss.netty.channel.Channels.write(Channels.java:671) [netty-3.6.6.Final.jar:]
at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:248)
[netty-3.6.6.Final.jar:]
at
org.infinispan.server.core.AbstractProtocolDecoder.writeResponse(AbstractProtocolDecoder.scala:163)
[infinispan.jar:7.0.0-SNAPSHOT]
at org.infinispan.server.hotrod.HotRodDecoder.customDecodeKey(HotRodDecoder.scala:138)
[infinispan.jar:7.0.0-SNAPSHOT]
at
org.infinispan.server.core.AbstractProtocolDecoder.decodeKey(AbstractProtocolDecoder.scala:105)
[infinispan.jar:7.0.0-SNAPSHOT]
at
org.infinispan.server.core.AbstractProtocolDecoder.decode(AbstractProtocolDecoder.scala:53)
[infinispan.jar:7.0.0-SNAPSHOT]
at
org.infinispan.server.core.AbstractProtocolDecoder.decode(AbstractProtocolDecoder.scala:29)
[infinispan.jar:7.0.0-SNAPSHOT]
at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:500)
[netty-3.6.6.Final.jar:]
at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:435)
[netty-3.6.6.Final.jar:]
at
org.infinispan.server.core.AbstractProtocolDecoder.messageReceived(AbstractProtocolDecoder.scala:377)
[infinispan.jar:7.0.0-SNAPSHOT]
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
[netty-3.6.6.Final.jar:]
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
[netty-3.6.6.Final.jar:]
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
[netty-3.6.6.Final.jar:]
at
org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
[netty-3.6.6.Final.jar:]
at
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)
[netty-3.6.6.Final.jar:]
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
[netty-3.6.6.Final.jar:]
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
[netty-3.6.6.Final.jar:]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_51]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira