[JBoss JIRA] (ISPN-5319) TreeCache with concurrent puts becomes inconsistent
by Bernhard Kabelka (JIRA)
[ https://issues.jboss.org/browse/ISPN-5319?page=com.atlassian.jira.plugin.... ]
Bernhard Kabelka commented on ISPN-5319:
----------------------------------------
I am observing a similar problem concerning the data of a single node in case of concurrent puts:
If, say, the node */someFqn* has the data {{"key_1" => "value_1", "key_2" => "value_2"}} and I perform the following put operations
Thread #1: {{treeCache.put( "/someFqn", "key_1", "modified_1" );}}
Thread #2: {{treeCache.put( "/someFqn", "key_2", "modified_2" );}}
Then the data of the node is {{"key_1" => "value_1", "key_2" => "modified_2"}} afterwards, i.e. one of the modifications gets lost. If the two put operations are performed on the same thread, both values are correctly modified.
> TreeCache with concurrent puts becomes inconsistent
> ---------------------------------------------------
>
> Key: ISPN-5319
> URL: https://issues.jboss.org/browse/ISPN-5319
> Project: Infinispan
> Issue Type: Bug
> Affects Versions: 5.3.0.Final, 7.2.0.Final
> Reporter: Jeremy Stone
>
> Concurrent puts using tree cache api store data values in the tree but the structure of tree can become corrupted. Namely: node.getChildren() for a parent node might not include the child node even though the child node exists and has some data.
> This makes it difficult to reliably use the tree cache structure to mirror a corresponding tree-like business data structure (e.g. materialized from a database).
> This can be readily reproduced with a local cache. A unit test is attached to the referenced forum topic.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 10 months
[JBoss JIRA] (ISPN-5684) ISPN000136 concurrent TimeoutException if a HotRod client uses getAll(...) and the owners < numOfNodes
by Galder Zamarreño (JIRA)
[ https://issues.jboss.org/browse/ISPN-5684?page=com.atlassian.jira.plugin.... ]
Galder Zamarreño updated ISPN-5684:
-----------------------------------
Status: Pull Request Sent (was: Coding In Progress)
Git Pull Request: https://github.com/infinispan/infinispan/pull/3670, https://github.com/infinispan/infinispan/pull/3671
> ISPN000136 concurrent TimeoutException if a HotRod client uses getAll(...) and the owners < numOfNodes
> ------------------------------------------------------------------------------------------------------
>
> Key: ISPN-5684
> URL: https://issues.jboss.org/browse/ISPN-5684
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Environment: Current upstream:
> 615b91b (HEAD, upstream/master, master) ISPN-5595 Deployed Cache Store Factory operates on promises
> Reporter: Wolf-Dieter Fink
> Assignee: Galder Zamarreño
> Attachments: TestGetAll.java, TestGetAll2.java
>
>
> If a distributed cache configuration contains less owner than current nodes are within the cluster a HotRod client fail if the copatible mode is enabled.
> The getAll(...) must include keys of different owners to fail constant.
> The ERROR is as followed:
> 19:04:08,991 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (HotRodServerWorker-9-1) ISPN000136: Execution error: org.infinispan.util.concurrent.TimeoutException: Timed out waiting for topology 3
> at org.infinispan.statetransfer.StateTransferLockImpl.waitForTopology(StateTransferLockImpl.java:144)
> at org.infinispan.interceptors.base.BaseStateTransferInterceptor.waitForTopology(BaseStateTransferInterceptor.java:100)
> at org.infinispan.statetransfer.StateTransferInterceptor.visitGetAllCommand(StateTransferInterceptor.java:177)
> at org.infinispan.commands.read.GetAllCommand.acceptVisitor(GetAllCommand.java:59)
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
> at org.infinispan.interceptors.CacheMgmtInterceptor.visitGetAllCommand(CacheMgmtInterceptor.java:127)
> at org.infinispan.commands.read.GetAllCommand.acceptVisitor(GetAllCommand.java:59)
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
> at org.infinispan.interceptors.compat.BaseTypeConverterInterceptor.visitGetAllCommand(BaseTypeConverterInterceptor.java:166)
> at org.infinispan.commands.read.GetAllCommand.acceptVisitor(GetAllCommand.java:59)
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
> at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:102)
> at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:71)
> at org.infinispan.commands.AbstractVisitor.visitGetAllCommand(AbstractVisitor.java:95)
> at org.infinispan.commands.read.GetAllCommand.acceptVisitor(GetAllCommand.java:59)
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
> at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
> at org.infinispan.commands.AbstractVisitor.visitGetAllCommand(AbstractVisitor.java:95)
> at org.infinispan.commands.read.GetAllCommand.acceptVisitor(GetAllCommand.java:59)
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:336)
> at org.infinispan.cache.impl.CacheImpl.getAll(CacheImpl.java:443)
> at org.infinispan.cache.impl.DecoratedCache.getAll(DecoratedCache.java:442)
> at org.infinispan.cache.impl.AbstractDelegatingAdvancedCache.getAll(AbstractDelegatingAdvancedCache.java:207)
> at org.infinispan.server.hotrod.Decoder2x$.customReadValue(Decoder2x.scala:482)
> at org.infinispan.server.hotrod.HotRodDecoder.customDecodeValue(HotRodDecoder.scala:197)
> at org.infinispan.server.hotrod.HotRodDecoder.org$infinispan$server$hotrod$HotRodDecoder$$decodeValue(HotRodDecoder.scala:136)
> at org.infinispan.server.hotrod.HotRodDecoder$$anonfun$decode$1.apply$mcV$sp(HotRodDecoder.scala:50)
> at org.infinispan.server.hotrod.HotRodDecoder.wrapSecurity(HotRodDecoder.scala:206)
> at org.infinispan.server.hotrod.HotRodDecoder.decode(HotRodDecoder.scala:45)
> at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:370)
> at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:168)
> at org.infinispan.server.hotrod.HotRodDecoder.org$infinispan$server$core$transport$StatsChannelHandler$$super$channelRead(HotRodDecoder.scala:31)
> at org.infinispan.server.core.transport.StatsChannelHandler$class.channelRead(StatsChannelHandler.scala:32)
> at org.infinispan.server.hotrod.HotRodDecoder.channelRead(HotRodDecoder.scala:31)
> at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
> at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
> at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130)
> at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
> at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
> at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
> at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
> at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
> at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
> at java.lang.Thread.run(Thread.java:745)
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 10 months
[JBoss JIRA] (ISPN-5698) Missing topology id in trace log message
by Galder Zamarreño (JIRA)
Galder Zamarreño created ISPN-5698:
--------------------------------------
Summary: Missing topology id in trace log message
Key: ISPN-5698
URL: https://issues.jboss.org/browse/ISPN-5698
Project: Infinispan
Issue Type: Bug
Components: State Transfer
Affects Versions: 8.0.0.CR1, 7.2.4.Final
Reporter: Galder Zamarreño
Assignee: Galder Zamarreño
Fix For: 8.0.0.Final, 7.2.5.Final
Missing currentTopologyId in:
{code}
if (trace) log.tracef("Retrying command because of topology change, current topology is %d: %s", command);
{code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 10 months
[JBoss JIRA] (ISPN-5697) KeyValueFilter.accept() used in AdvancedCache.filterEntries(..) gets 'null' as value param when traversing cache store entries
by Carsten Lohmann (JIRA)
[ https://issues.jboss.org/browse/ISPN-5697?page=com.atlassian.jira.plugin.... ]
Carsten Lohmann commented on ISPN-5697:
---------------------------------------
Workaround:
Using a filter that implements {{KeyValueFilterConverter}} (and using no converter or using the same KeyValueFilterConverter object as converter).
> KeyValueFilter.accept() used in AdvancedCache.filterEntries(..) gets 'null' as value param when traversing cache store entries
> ------------------------------------------------------------------------------------------------------------------------------
>
> Key: ISPN-5697
> URL: https://issues.jboss.org/browse/ISPN-5697
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 7.2.4.Final
> Reporter: Carsten Lohmann
>
> When using {{AdvancedCache.filterEntries(filter)}} on a cache with a cache loader (where not all entries are in memory),
> the {{accept(key, value, metadata)}} method of the given KeyValueFilter is invoked with {{null}} as value parameter for the cache loader entries.
> But the javadoc of {{filterEntries}} states:
> {quote}
> Callbacks to the filter will never provide a key or value that will be null.
> {quote}
> In the code:
> In the "{{if (shouldUseLoader(flags)}} \[..\]" block of {{LocalEntryRetriever#retrieveEntries}} the given filter is wrapped as a {{KeyValueFilterAsKeyFilter}} causing {{null}} to be used as value.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 10 months
[JBoss JIRA] (ISPN-5697) KeyValueFilter.accept() used in AdvancedCache.filterEntries(..) gets 'null' as value param when traversing cache store entries
by Carsten Lohmann (JIRA)
Carsten Lohmann created ISPN-5697:
-------------------------------------
Summary: KeyValueFilter.accept() used in AdvancedCache.filterEntries(..) gets 'null' as value param when traversing cache store entries
Key: ISPN-5697
URL: https://issues.jboss.org/browse/ISPN-5697
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 7.2.4.Final
Reporter: Carsten Lohmann
When using {{AdvancedCache.filterEntries(filter)}} on a cache with a cache loader (where not all entries are in memory),
the {{accept(key, value, metadata)}} method of the given KeyValueFilter is invoked with {{null}} as value parameter for the cache loader entries.
But the javadoc of {{filterEntries}} states:
{quote}
Callbacks to the filter will never provide a key or value that will be null.
{quote}
In the code:
In the "{{if (shouldUseLoader(flags)}} \[..\]" block of {{LocalEntryRetriever#retrieveEntries}} the given filter is wrapped as a {{KeyValueFilterAsKeyFilter}} causing {{null}} to be used as value.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 10 months