Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-10275

Incomplete memcache protocol implementation - Unknown operation: touch

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: 9.4.11.Final
    • Fix Version/s: 10.0.0.CR3
    • Component/s: Memcached
    • Labels:
      None
    • Steps to Reproduce:
      Hide

      execute a touch operation agains an Infinispan Server memcache socket-binding.

      Expected Behaviour
      The object's expiration time should be reset (or similar)

      Actual Behaviour
      2019-06-06 10:45:31,082 ERROR [org.infinispan.server.memcached.MemcachedDecoder] (Memcached-ServerIO-3-2) ISPN005003: Exception reported: org.infinispan.server.memcached.UnknownOperationException: Unknown operation: touch
      at org.infinispan.server.memcached.MemcachedDecoder.toRequest(MemcachedDecoder.java:1068)
      at org.infinispan.server.memcached.MemcachedDecoder.readHeader(MemcachedDecoder.java:322)
      at org.infinispan.server.memcached.MemcachedDecoder.decodeHeader(MemcachedDecoder.java:202)
      at org.infinispan.server.memcached.MemcachedDecoder.decodeDispatch(MemcachedDecoder.java:180)
      at org.infinispan.server.memcached.MemcachedDecoder.decode(MemcachedDecoder.java:133)
      at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:489)
      at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)
      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:265)
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
      at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
      at org.infinispan.server.core.transport.StatsChannelHandler.channelRead(StatsChannelHandler.java:26)
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
      at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
      at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
      at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
      at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:646)
      at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:581)
      at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:498)
      at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:460)
      at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
      at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
      at java.lang.Thread.run(Thread.java:748)

      Show
      execute a touch operation agains an Infinispan Server memcache socket-binding. Expected Behaviour The object's expiration time should be reset (or similar) Actual Behaviour 2019-06-06 10:45:31,082 ERROR [org.infinispan.server.memcached.MemcachedDecoder] (Memcached-ServerIO-3-2) ISPN005003: Exception reported: org.infinispan.server.memcached.UnknownOperationException: Unknown operation: touch at org.infinispan.server.memcached.MemcachedDecoder.toRequest(MemcachedDecoder.java:1068) at org.infinispan.server.memcached.MemcachedDecoder.readHeader(MemcachedDecoder.java:322) at org.infinispan.server.memcached.MemcachedDecoder.decodeHeader(MemcachedDecoder.java:202) at org.infinispan.server.memcached.MemcachedDecoder.decodeDispatch(MemcachedDecoder.java:180) at org.infinispan.server.memcached.MemcachedDecoder.decode(MemcachedDecoder.java:133) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:489) at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:265) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) at org.infinispan.server.core.transport.StatsChannelHandler.channelRead(StatsChannelHandler.java:26) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:646) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:581) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:498) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:460) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:748)

      Description

      Using Infinispan Server as clustered memcached alternative we ran into the problem that the memcache protocol implementation is missing the touch operation.

      Protocol Definition: https://github.com/memcached/memcached/blob/master/doc/protocol.txt

      Missing Operation in Source Code: https://github.com/infinispan/infinispan/blob/master/server/memcached/src/main/java/org/infinispan/server/memcached/MemcachedDecoder.java#L1028

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                NadirX Tristan Tarrant
                Reporter:
                michael.palata Michael Palata
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: