Indeed, all you need to do is set -Dgemfire.ALLOW_PERSISTENT_TRANSACTIONS to true
On Tue, Feb 21, 2017 at 5:22 PM Michael Stolz <mst...@pivotal.io> wrote: > This looks like the persistence with transactions issue that Gemfire has. > There is a system property to allow it to work > > -- > Mike Stolz > Principal Engineer - Gemfire Product Manager > Mobile: 631-835-4771 <(631)%20835-4771> > > On Feb 6, 2017 4:41 PM, "Galen O'Sullivan (JIRA)" <j...@apache.org> wrote: > > > Galen O'Sullivan created GEODE-2435: > > --------------------------------------- > > > > Summary: Redis adapter MULTI behavior is different from > Redis > > Key: GEODE-2435 > > URL: https://issues.apache.org/jira/browse/GEODE-2435 > > Project: Geode > > Issue Type: Bug > > Reporter: Galen O'Sullivan > > > > > > {{WATCH}} isn't implemented properly, but this is about returning an > error > > instead of nil when we have a {{MULTI}} fail: > > {code} > > $ redis-cli -p 11212 > > 127.0.0.1:11212> set a b > > OK > > 127.0.0.1:11212> watch a > > (error) ERR Keys cannot be watched or unwatched because GemFire watches > > all keys by default for transactions > > 127.0.0.1:11212> lpush la boo > > (integer) 1 > > (2.09s) > > 127.0.0.1:11212> multi > > OK > > 127.0.0.1:11212> lpush la z > > QUEUED > > 127.0.0.1:11212> lpush la x > > QUEUED > > {code} > > At this point, we {{lpush la foo}} in a different client, then: > > {code} > > 127.0.0.1:11212> exec > > 1) (error) ERR The server had an internal error please try again > > 2) (error) ERR The server had an internal error please try again > > 127.0.0.1:11212> > > {code} > > > > whereas a Redis instance will simply return nil instead of an error. > > > > Looking in the logs, I see this: > > {code} > > [error 2017/02/06 13:21:39.493 PST server2 > <GeodeRedisServer-WorkerThread-2> > > tid=0x2a] GeodeRedisServer-Unexpected error handler for [id: 0x3ddf9f21, > / > > 127.0.0.1:58862 => /127.0.0.1:11212] > > java.lang.UnsupportedOperationException: Operations on persist-backup > > regions are not allowed because this thread has an active transaction > > at org.apache.geode.internal.cache.TXRegionState.<init>( > > TXRegionState.java:60) > > at org.apache.geode.internal.cache.TXBucketRegionState.< > > init>(TXBucketRegionState.java:29) > > at org.apache.geode.internal.cache.TXState.writeRegion( > > TXState.java:252) > > at org.apache.geode.internal.cache.TXState.txWriteRegion( > > TXState.java:1110) > > at org.apache.geode.internal.cache.TXState.txReadEntry( > > TXState.java:1365) > > at org.apache.geode.internal.cache.TXState.txReadEntry( > > TXState.java:1344) > > at org.apache.geode.internal.cache.TXState. > > getDeserializedValue(TXState.java:1414) > > at org.apache.geode.internal.cache.TXStateProxyImpl. > > getDeserializedValue(TXStateProxyImpl.java:352) > > at org.apache.geode.internal.cache.LocalRegion.get( > > LocalRegion.java:1394) > > at org.apache.geode.internal.cache.PartitionedRegionDataStore. > > getLocally(PartitionedRegionDataStore.java:2047) > > at org.apache.geode.internal.cache.PartitionedRegion. > > getFromBucket(PartitionedRegion.java:4022) > > at org.apache.geode.internal.cache.PartitionedRegion. > > findObjectInSystem(PartitionedRegion.java:3399) > > at org.apache.geode.internal.cache.TXState.findObject( > > TXState.java:1540) > > at org.apache.geode.internal.cache.TXStateProxyImpl. > > findObject(TXStateProxyImpl.java:614) > > at org.apache.geode.internal.cache.PartitionedRegion.get( > > PartitionedRegion.java:3160) > > at org.apache.geode.internal.cache.LocalRegion.get( > > LocalRegion.java:1330) > > at org.apache.geode.internal.cache.AbstractRegion.get( > > AbstractRegion.java:282) > > at org.apache.geode.redis.internal.executor.list. > > ListExecutor.pushElements(ListExecutor.java:70) > > at org.apache.geode.redis.internal.executor.list. > > PushExecutor.executeCommand(PushExecutor.java:47) > > at org.apache.geode.redis.internal.ExecutionHandlerContext. > > executeWithTransaction(ExecutionHandlerContext.java:244) > > at org.apache.geode.redis.internal.ExecutionHandlerContext. > > executeCommand(ExecutionHandlerContext.java:191) > > at org.apache.geode.redis.internal.ExecutionHandlerContext. > > channelRead(ExecutionHandlerContext.java:137) > > at io.netty.channel.DefaultChannelHandlerContext. > > invokeChannelRead(DefaultChannelHandlerContext.java:368) > > at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead( > > DefaultChannelHandlerContext.java:353) > > at io.netty.handler.codec.ByteToMessageDecoder.channelRead( > > ByteToMessageDecoder.java:173) > > at io.netty.channel.DefaultChannelHandlerContext. > > invokeChannelRead(DefaultChannelHandlerContext.java:368) > > at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead( > > DefaultChannelHandlerContext.java:353) > > at io.netty.channel.DefaultChannelPipeline.fireChannelRead( > > DefaultChannelPipeline.java:780) > > at > io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read( > > AbstractNioByteChannel.java:100) > > at io.netty.channel.nio.NioEventLoop.processSelectedKey( > > NioEventLoop.java:497) > > at > io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized( > > NioEventLoop.java:465) > > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:359) > > at io.netty.util.concurrent.SingleThreadEventExecutor$2. > > run(SingleThreadEventExecutor.java:101) > > at java.lang.Thread.run(Thread.java:745) > > {code} > > > > > > > > -- > > This message was sent by Atlassian JIRA > > (v6.3.15#6346) > > >