[JBoss JIRA] (ISPN-11630) Server and client get out of sync after multimap get with metadata operation
by Pedro Ruivo (Jira)
[ https://issues.redhat.com/browse/ISPN-11630?page=com.atlassian.jira.plugi... ]
Pedro Ruivo updated ISPN-11630:
-------------------------------
Git Pull Request: https://github.com/infinispan/infinispan/pull/8208, https://github.com/infinispan/infinispan/pull/8383 (was: https://github.com/infinispan/infinispan/pull/8208)
> Server and client get out of sync after multimap get with metadata operation
> ----------------------------------------------------------------------------
>
> Key: ISPN-11630
> URL: https://issues.redhat.com/browse/ISPN-11630
> Project: Infinispan
> Issue Type: Bug
> Components: Hot Rod, Multimap
> Affects Versions: 11.0.0.Dev04, 10.1.6.Final
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Labels: testsuite_stability
> Fix For: 11.0.0.CR1, 10.1.9.Final
>
>
> The Hot Rod server includes metadata information with the {{GET_MULTIMAP_WITH_METADATA_REQUEST}} response even if the status is {{KEY_DOES_NOT_EXIST_STATUS}}, but the client does not expect any other information after the header, so it tries to read the metadata information as the start of a new response and fails:
> {noformat}
> 08:50:15,468 TRACE (testng-Test:[]) [Codec] [] Wrote header for messageId=47333 to PooledUnsafeDirectByteBuf(ridx: 0, widx: 14, cap: 19). Operation code: 0x69(GET_MULTIMAP_WITH_METADATA_REQUEST). Flags: 0x1. Topology id: -1
> 08:50:15,468 TRACE (HotRod-Test-ServerIO-2061-1:[]) [Encoder2x] Write topology response header with no change
> 08:50:15,468 TRACE (Test-Client-Async-454-1:[]) [Codec] Received response for messageId=47333
> 08:50:15,468 TRACE (Test-Client-Async-454-1:[]) [HeaderDecoder] Decoding header for GetKeyWithMetadataMultimapOperation{(default), key=[B0x4A016B, flags=1, connection=127.0.0.1/127.0.0.1:38741} on [id: 0x36567c12, L:/127.0.0.1:36216 - R:127.0.0.1/127.0.0.1:38741]
> 08:50:15,468 TRACE (Test-Client-Async-454-1:[]) [HeaderDecoder] Decoding payload for GetKeyWithMetadataMultimapOperation{(default), key=[B0x4A016B, flags=1, connection=127.0.0.1/127.0.0.1:38741} on [id: 0x36567c12, L:/127.0.0.1:36216 - R:127.0.0.1/127.0.0.1:38741]
> 08:50:15,468 TRACE (Test-Client-Async-454-1:[]) [Codec] Socket dump: A1E5F102\j020003FFFFFFFFFFFFFFFF00
> 08:50:15,468 TRACE (Test-Client-Async-454-1:[]) [RetryOnFailureOperation] (1) GetKeyWithMetadataMultimapOperation{(default), key=[B0x4A016B, flags=1, connection=127.0.0.1/127.0.0.1:38741} Requesting [id: 0x36567c12, L:/127.0.0.1:36216 - R:127.0.0.1/127.0.0.1:38741] close due to exception
> org.infinispan.client.hotrod.exceptions.InvalidResponseException: ISPN004003: Invalid magic number. Expected 0xa1 and received 0x3
> at org.infinispan.client.hotrod.impl.protocol.Codec20.readMessageId(Codec20.java:147) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.HeaderDecoder.decode(HeaderDecoder.java:86) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.HintedReplayingDecoder.callDecode(HintedReplayingDecoder.java:94) ~[classes/:?]
> at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[netty-codec-4.1.45.Final.jar:4.1.45.Final]
> {noformat}
> Because the client can't parse the remaining buffer as a response, it tries to close the connection, but sometimes even closing throws an {{AssertionError}}, causing random failures in test {{RemoteMultimapCacheAPITest.testGetWithMetadataNotExist}}:
> {noformat}
> 08:50:15,469 TRACE (Test-Client-Async-454-1:[]) [ChannelRecord] Closing channel [id: 0x36567c12, L:/127.0.0.1:36216 ! R:127.0.0.1/127.0.0.1:38741]
> 08:50:15,469 TRACE (testng-Test:[]) [ChannelFactory] Releasing channel [id: 0x36567c12, L:/127.0.0.1:36216 ! R:127.0.0.1/127.0.0.1:38741]
> 08:50:15,469 TRACE (testng-Test:[]) [ChannelPool] Requesting [id: 0x36567c12, L:/127.0.0.1:36216 ! R:127.0.0.1/127.0.0.1:38741] close due to exception
> java.lang.AssertionError: Error releasing [id: 0x36567c12, L:/127.0.0.1:36216 ! R:127.0.0.1/127.0.0.1:38741]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelPool.release(ChannelPool.java:168) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelRecord.release(ChannelRecord.java:77) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory.releaseChannel(ChannelFactory.java:312) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.operations.HotRodOperation.releaseChannel(HotRodOperation.java:103) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.operations.RetryOnFailureOperation.invoke(RetryOnFailureOperation.java:80) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelPool.activateChannel(ChannelPool.java:215) [classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelPool.acquire(ChannelPool.java:84) [classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory.fetchChannelAndInvoke(ChannelFactory.java:262) [classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory.fetchChannelAndInvoke(ChannelFactory.java:300) [classes/:?]
> at org.infinispan.client.hotrod.impl.operations.AbstractKeyOperation.fetchChannelAndInvoke(AbstractKeyOperation.java:41) [classes/:?]
> at org.infinispan.client.hotrod.impl.operations.RetryOnFailureOperation.execute(RetryOnFailureOperation.java:62) [classes/:?]
> at org.infinispan.client.hotrod.impl.multimap.RemoteMultimapCacheImpl.getWithMetadata(RemoteMultimapCacheImpl.java:106) [classes/:?]
> at org.infinispan.client.hotrod.RemoteMultimapCacheAPITest.testGetWithMetadataNotExist(RemoteMultimapCacheAPITest.java:59) [test-classes/:?]
> 08:50:15,479 ERROR (testng-Test:[]) [TestSuiteProgress] Test failed: org.infinispan.client.hotrod.RemoteMultimapCacheAPITest.testGetWithMetadataNotExist
> java.lang.AssertionError: Error releasing [id: 0x36567c12, L:/127.0.0.1:36216 ! R:127.0.0.1/127.0.0.1:38741]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelPool.release(ChannelPool.java:168) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelRecord.release(ChannelRecord.java:77) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory.releaseChannel(ChannelFactory.java:312) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.operations.HotRodOperation.releaseChannel(HotRodOperation.java:103) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.operations.RetryOnFailureOperation.invoke(RetryOnFailureOperation.java:80) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelPool.activateChannel(ChannelPool.java:215) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelPool.acquire(ChannelPool.java:84) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory.fetchChannelAndInvoke(ChannelFactory.java:262) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory.fetchChannelAndInvoke(ChannelFactory.java:300) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.operations.AbstractKeyOperation.fetchChannelAndInvoke(AbstractKeyOperation.java:41) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.operations.RetryOnFailureOperation.execute(RetryOnFailureOperation.java:62) ~[classes/:?]
> at org.infinispan.client.hotrod.impl.multimap.RemoteMultimapCacheImpl.getWithMetadata(RemoteMultimapCacheImpl.java:106) ~[classes/:?]
> at org.infinispan.client.hotrod.RemoteMultimapCacheAPITest.testGetWithMetadataNotExist(RemoteMultimapCacheAPITest.java:59) ~[test-classes/:?]
> {noformat}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 7 months
[JBoss JIRA] (ISPN-11885) ChannelPool can get in inconsistent state with concurrent release and close of a channel
by Will Burns (Jira)
[ https://issues.redhat.com/browse/ISPN-11885?page=com.atlassian.jira.plugi... ]
Will Burns updated ISPN-11885:
------------------------------
Git Pull Request: https://github.com/infinispan/infinispan/pull/8381 (was: https://github.com/infinispan/infinispan/pull/8358)
> ChannelPool can get in inconsistent state with concurrent release and close of a channel
> ----------------------------------------------------------------------------------------
>
> Key: ISPN-11885
> URL: https://issues.redhat.com/browse/ISPN-11885
> Project: Infinispan
> Issue Type: Bug
> Components: Hot Rod
> Affects Versions: 10.1.8.Final
> Reporter: Will Burns
> Assignee: Will Burns
> Priority: Major
> Fix For: 11.0.0.CR1
>
>
> While working on https://github.com/infinispan/infinispan/pull/8358 I found that the changes introduced allowed for a test failure to occur much more often. Upon investigation the issue is that the channel pool can close a channel and then release it which gets it in an inconsistent state.
> Looking closer it appears to be a bug in the ChannelPool class when a connection is closed before release completes.
> {code}
> 23:42:12,203 TRACE (DistributionRetryTest-Client-Async-1-2:[]) [ChannelPool] Closed channel [id: 0x27befd37, L:/127.0.0.1:37412 ! R:127.0.0.1/127.0.0.1:33943], created = 0, idle = false, active = 0
> 23:42:12,203 TRACE (testng-DistributionRetryTest:[]) [ChannelPool] Released channel [id: 0x27befd37, L:/127.0.0.1:37412 ! R:127.0.0.1/127.0.0.1:33943], active = -1
> {code}
> Here is the trace of it working where is is released before being closed.
> {code}
> 23:46:42,649 TRACE (testng-DistributionRetryTest:[]) [ChannelPool] Released channel [id: 0xeb9159ef, L:/127.0.0.1:39342 - R:127.0.0.1/127.0.0.1:41537], active = 0
> 23:46:42,792 TRACE (testng-DistributionRetryTest:[]) [ChannelPool] Activated record [id: 0x0b71d548, L:/127.0.0.1:51392 - R:127.0.0.1/127.0.0.1:37881], created = 1, active = 1
> 23:46:42,793 TRACE (DistributionRetryTest-Client-Async-1-3:[]) [ChannelPool] Closed channel [id: 0xeb9159ef, L:/127.0.0.1:39342 ! R:127.0.0.1/127.0.0.1:41537], created = 0, idle = true, active = 0
> {code}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 7 months
[JBoss JIRA] (ISPN-11897) Internal Caches with persistence don't need availability checks
by Will Burns (Jira)
Will Burns created ISPN-11897:
---------------------------------
Summary: Internal Caches with persistence don't need availability checks
Key: ISPN-11897
URL: https://issues.redhat.com/browse/ISPN-11897
Project: Infinispan
Issue Type: Bug
Components: Loaders and Stores
Reporter: Will Burns
Assignee: Will Burns
Fix For: 11.0.0.CR1
The internal caches may have persistance, which is done via a SingleFileStore. They also have availability enabled, which causes them to be queried every 1 second which is a bit of overkill. We should be able to just disable this check since it is a file based store.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 7 months
[JBoss JIRA] (ISPN-11849) ParamKeyValueFilterConverterFactory missing from Server Extensions
by Will Burns (Jira)
[ https://issues.redhat.com/browse/ISPN-11849?page=com.atlassian.jira.plugi... ]
Will Burns updated ISPN-11849:
------------------------------
Status: Resolved (was: Pull Request Sent)
Resolution: Done
> ParamKeyValueFilterConverterFactory missing from Server Extensions
> ------------------------------------------------------------------
>
> Key: ISPN-11849
> URL: https://issues.redhat.com/browse/ISPN-11849
> Project: Infinispan
> Issue Type: Bug
> Components: Server
> Affects Versions: 11.0.0.Dev05
> Reporter: Ryan Emerson
> Assignee: Ryan Emerson
> Priority: Major
> Fix For: 11.0.0.CR1
>
>
> Currently the {{Extensions}} class is missing a lookup for {{ParamKeyValueFilterConverterFactory}} service implementations, which means that the {{iteration-filter-converter-factory}} is never available in the server.
> The {{HotRodCacheQueries}} tests currently pass with the embedded driver as the services are on the classpath of the server, however if the tests are executed in CONTAINER mode they will fail.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 7 months
[JBoss JIRA] (ISPN-11837) ContainerInfinispanServerDriver missing cluster size check
by Will Burns (Jira)
[ https://issues.redhat.com/browse/ISPN-11837?page=com.atlassian.jira.plugi... ]
Will Burns updated ISPN-11837:
------------------------------
Status: Resolved (was: Pull Request Sent)
Resolution: Done
> ContainerInfinispanServerDriver missing cluster size check
> ----------------------------------------------------------
>
> Key: ISPN-11837
> URL: https://issues.redhat.com/browse/ISPN-11837
> Project: Infinispan
> Issue Type: Bug
> Components: Test Suite
> Affects Versions: 11.0.0.Dev05
> Reporter: Ryan Emerson
> Assignee: Ryan Emerson
> Priority: Major
> Fix For: 11.0.0.CR1
>
>
> The tests in {{server/tests}} that are executed in CONTAINER mode do not currently check to ensure that a cluster of {{InfinispanServerTestConfiguration#numServers}} is formed before the tests begin. This means that it's possible for some of the {{ClusteredIT}} tests to pass even if no cluster is formed between the containers.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 7 months