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)
> >
>

Reply via email to