]
Martin Gencur commented on ISPN-3190:
-------------------------------------
In other words, it turns out that we always need to define and specify the marshaller when
using whatever Memcached client. This complicates things in Infinispan Server, users would
need to add a specific module with the Marshaller and enable it.
Memcached server throwing NullPointerException if the mashaller is
not explicitly set
-------------------------------------------------------------------------------------
Key: ISPN-3190
URL:
https://issues.jboss.org/browse/ISPN-3190
Project: Infinispan
Issue Type: Bug
Components: Server
Affects Versions: 5.3.0.CR1
Reporter: Martin Gencur
Assignee: Galder ZamarreƱo
Fix For: 5.3.0.Final
According to the tutorial at
https://docs.jboss.org/author/display/ISPN/Interoperability+between+Embed...
it is not necessary to specify a special marshaller under normal circumstances. However,
the Memcached server seems to require it in any case and the Memcached client's
"get" operation fails because we did not set any marshaller for the
compatibility mode and it remained null. Note that I'm not using SpyMemcached.
My understanding is that even if I use SpyMemcached to retrieve the entry, it will be
found and retrieved but without the marshaller I simply won't understand the returned
value. But something will be returned. Is my assumption correct?
{code}
2013-06-05 14:12:19,054 TRACE (MemcachedServerWorker-6)
[org.infinispan.container.EntryFactoryImpl] Retrieved from container
ImmortalCacheEntry{key=4, value=MetadataImmortalCacheValue {value=v1,
metadata=EmbeddedMetadata{lifespan=-1, maxIdle=-1, version=ServerEntryVersion(1)}}}
2013-06-05 14:12:19,054 TRACE (MemcachedServerWorker-6)
[org.infinispan.interceptors.CallInterceptor] Executing command: GetKeyValueCommand
{key=4, flags=[OPERATION_MEMCACHED]}.
2013-06-05 14:12:19,054 TRACE (MemcachedServerWorker-6)
[org.infinispan.commands.read.GetKeyValueCommand] Found entry ImmortalCacheEntry{key=4,
value=MetadataImmortalCacheValue {value=v1, metadata=EmbeddedMetadata{lifespan=-1,
maxIdle=-1, version=ServerEntryVersion(1)}}}
2013-06-05 14:12:19,055 ERROR (MemcachedServerWorker-6)
[org.infinispan.interceptors.InvocationContextInterceptor] ISPN000136: Execution error
java.lang.NullPointerException
at
org.infinispan.server.memcached.MemcachedTypeConverter.marshall(MemcachedTypeConverter.scala:58)
at
org.infinispan.server.memcached.MemcachedTypeConverter.unboxValue(MemcachedTypeConverter.scala:45)
at
org.infinispan.server.memcached.MemcachedTypeConverter.unboxValue(MemcachedTypeConverter.scala:37)
at
org.infinispan.interceptors.compat.TypeConverterInterceptor.visitGetKeyValueCommand(TypeConverterInterceptor.java:93)
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:62)
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:120)
at
org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:128)
at
org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:92)
at
org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:96)
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:62)
at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:343)
at org.infinispan.CacheImpl.getCacheEntry(CacheImpl.java:399)
at org.infinispan.DecoratedCache.getCacheEntry(DecoratedCache.java:514)
at org.infinispan.server.memcached.MemcachedDecoder.get(MemcachedDecoder.scala:122)
at
org.infinispan.server.core.AbstractProtocolDecoder.decodeKey(AbstractProtocolDecoder.scala:121)
at
org.infinispan.server.core.AbstractProtocolDecoder.decode(AbstractProtocolDecoder.scala:75)
at
org.infinispan.server.core.AbstractProtocolDecoder.decode(AbstractProtocolDecoder.scala:49)
at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:500)
at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:435)
at
org.infinispan.server.core.AbstractProtocolDecoder.messageReceived(AbstractProtocolDecoder.scala:385)
at
org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
at
org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:107)
at
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:88)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
{code}
--
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: