[jira] [Created] (GEODE-8693) C++ native client Function.execute() with onServers does not throw exception if one of the servers goes down while executing the function.
Alberto Gomez created GEODE-8693: Summary: C++ native client Function.execute() with onServers does not throw exception if one of the servers goes down while executing the function. Key: GEODE-8693 URL: https://issues.apache.org/jira/browse/GEODE-8693 Project: Geode Issue Type: Bug Components: native client Reporter: Alberto Gomez According to the Apache Geode Native C++ API documentation, the FunctionService.onServers() function will throw an Exception if one of the servers goes down while dispatching or executing the function on the server. Nevertheless, currently no exception is thrown in that case. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Assigned] (GEODE-8693) C++ native client Function.execute() with onServers does not throw exception if one of the servers goes down while executing the function.
[ https://issues.apache.org/jira/browse/GEODE-8693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alberto Gomez reassigned GEODE-8693: Assignee: Alberto Gomez > C++ native client Function.execute() with onServers does not throw exception > if one of the servers goes down while executing the function. > -- > > Key: GEODE-8693 > URL: https://issues.apache.org/jira/browse/GEODE-8693 > Project: Geode > Issue Type: Bug > Components: native client >Reporter: Alberto Gomez >Assignee: Alberto Gomez >Priority: Major > > According to the Apache Geode Native C++ API documentation, the > FunctionService.onServers() function will throw an Exception if one of the > servers goes down while dispatching or executing the function on the server. > Nevertheless, currently no exception is thrown in that case. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8664) JGroups exception is not propagated
[ https://issues.apache.org/jira/browse/GEODE-8664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229166#comment-17229166 ] ASF GitHub Bot commented on GEODE-8664: --- gaussianrecurrence opened a new pull request #5725: URL: https://github.com/apache/geode/pull/5725 - If while calling DistributionImpl.start there was either a MembershipConfigurationException or MemberStartupException exceptions, its original cause was not propagated, therefore being unable to properly tackling issues on startup. - This commit propagates the cause for both exceptions. - Also 2 JUint test were added to make sure this is working. --- Thank you for submitting a contribution to Apache Geode. In order to streamline the review of the contribution we ask you to ensure the following steps have been taken: ### For all changes: - [x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message? - [x] Has your PR been rebased against the latest commit within the target branch (typically `develop`)? - [x] Is your initial contribution a single, squashed commit? - [ ] Does `gradlew build` run cleanly? - [x] Have you written or updated unit tests to verify your changes? - [x] **(N/A)** If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)? ### Note: Please ensure that once the PR is submitted, check Concourse for build issues and submit an update to your PR as soon as possible. If you need help, please send an email to d...@geode.apache.org. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > JGroups exception is not propagated > --- > > Key: GEODE-8664 > URL: https://issues.apache.org/jira/browse/GEODE-8664 > Project: Geode > Issue Type: Bug > Components: membership, messaging >Affects Versions: 1.12.0, 1.13.0 >Reporter: Mario Salazar de Torres >Assignee: Mario Salazar de Torres >Priority: Minor > Attachments: GEODE-8664.patch > > > *AS A* geode contributor > *I WANT* exceptions thrown in DistributionImpl.start to be propagated > *SO THAT* more information is provided while tackling issues. > > > *Additional information:* > After looking at an issue while starting a locator having to do with > JGroupMessenger I noticed that exceptions from Membership.start are not > correctly propagated in DistributionImpl.start method. > To ilustrate the problem I attach below the reported exception while starting > the locator: > > {noformat} > locator is exiting due to an exception > org.apache.geode.GemFireConfigException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:184) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135) > at > org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3033) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290) > at > org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743) > at > org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388) > at > org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716) > at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623) > at > org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217){noformat} > > Thing is with that kind of information there's no way to know why the problem > is happening, so the idea would be to propagate the exceptions, so it looks > more like this: > {noformat} > locator is exiting due to an exception > org.apach
[jira] [Updated] (GEODE-8664) JGroups exception is not propagated
[ https://issues.apache.org/jira/browse/GEODE-8664?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] ASF GitHub Bot updated GEODE-8664: -- Labels: pull-request-available (was: ) > JGroups exception is not propagated > --- > > Key: GEODE-8664 > URL: https://issues.apache.org/jira/browse/GEODE-8664 > Project: Geode > Issue Type: Bug > Components: membership, messaging >Affects Versions: 1.12.0, 1.13.0 >Reporter: Mario Salazar de Torres >Assignee: Mario Salazar de Torres >Priority: Minor > Labels: pull-request-available > Attachments: GEODE-8664.patch > > > *AS A* geode contributor > *I WANT* exceptions thrown in DistributionImpl.start to be propagated > *SO THAT* more information is provided while tackling issues. > > > *Additional information:* > After looking at an issue while starting a locator having to do with > JGroupMessenger I noticed that exceptions from Membership.start are not > correctly propagated in DistributionImpl.start method. > To ilustrate the problem I attach below the reported exception while starting > the locator: > > {noformat} > locator is exiting due to an exception > org.apache.geode.GemFireConfigException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:184) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135) > at > org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3033) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290) > at > org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743) > at > org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388) > at > org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716) > at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623) > at > org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217){noformat} > > Thing is with that kind of information there's no way to know why the problem > is happening, so the idea would be to propagate the exceptions, so it looks > more like this: > {noformat} > locator is exiting due to an exception > org.apache.geode.SystemConnectException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:186) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135) > at > org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3034) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290) > at > org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743) > at > org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388) > at > org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716) > at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623) > at org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217) > Caused by: java.lang.Exception: failed to open a port in range 53-53 > at org.jgroups.protocols.UDP.createMulticastSocketWithBindPort(UDP.java:503) > at org.jgroups.protocols.UDP.createSockets(UDP.java:348) > at org.jgroups.protocols.UDP.start(UDP.java:266) > at org.jgroups.stack.P
[jira] [Resolved] (GEODE-8691) Add test to cover native redis hits and misses statistics
[ https://issues.apache.org/jira/browse/GEODE-8691?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jens Deppe resolved GEODE-8691. --- Fix Version/s: 1.14.0 Resolution: Fixed > Add test to cover native redis hits and misses statistics > - > > Key: GEODE-8691 > URL: https://issues.apache.org/jira/browse/GEODE-8691 > Project: Geode > Issue Type: Test > Components: redis >Reporter: Jens Deppe >Priority: Major > Labels: pull-request-available > Fix For: 1.14.0 > > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8626) Omitting field-mapping tag of cache.xml when using Simple JDBC Connector
[ https://issues.apache.org/jira/browse/GEODE-8626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229278#comment-17229278 ] ASF GitHub Bot commented on GEODE-8626: --- masaki-yamakawa commented on a change in pull request #5637: URL: https://github.com/apache/geode/pull/5637#discussion_r520637876 ## File path: geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JdbcConnectorServiceImpl.java ## @@ -210,4 +224,152 @@ private TableMetaDataView getTableMetaDataView(RegionMapping regionMapping, + regionMapping.getDataSourceName() + "\": ", ex); } } + + @Override + public TableMetaDataView getTableMetaDataView(RegionMapping regionMapping) { +DataSource dataSource = getDataSource(regionMapping.getDataSourceName()); +if (dataSource == null) { + throw new JdbcConnectorException("No datasource \"" + regionMapping.getDataSourceName() + + "\" found when getting table meta data \"" + regionMapping.getRegionName() + "\""); Review comment: Thank you. I would like to fix it as you suggested. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Omitting field-mapping tag of cache.xml when using Simple JDBC Connector > > > Key: GEODE-8626 > URL: https://issues.apache.org/jira/browse/GEODE-8626 > Project: Geode > Issue Type: Improvement > Components: jdbc >Reporter: Masaki Yamakawa >Priority: Minor > Labels: pull-request-available > > When configuring Simple JDBC Connector with gfsh, I don't need to create > field-mapping, the default field-mapping will be created from pdx and table > meta data. > On the other hand, when using cache.xml(cluster.xml), pdx and table meta data > cannot be used, and field-mapping must be described in cache.xml. > I would like to create field-mapping defaults based on pdx and table meta > data when using cache.xml. > If field-mapping is specified in cache.xml, the xml setting has priority, and > only if there are no field-mapping tags. > cache.xml will be as follows: > {code:java} > > data-source="TestDataSource" > table="employees" > pdx-name="org.apache.geode.connectors.jdbc.Employee" > ids="id"> > > > > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8626) Omitting field-mapping tag of cache.xml when using Simple JDBC Connector
[ https://issues.apache.org/jira/browse/GEODE-8626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229277#comment-17229277 ] ASF GitHub Bot commented on GEODE-8626: --- masaki-yamakawa commented on a change in pull request #5637: URL: https://github.com/apache/geode/pull/5637#discussion_r520637605 ## File path: geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/GfshJdbcMappingIntegrationTest.java ## @@ -0,0 +1,208 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.connectors.jdbc; + +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import org.apache.geode.cache.CacheFactory; +import org.apache.geode.cache.configuration.JndiBindingsType; +import org.apache.geode.cache.configuration.RegionConfig; +import org.apache.geode.cache.execute.Function; +import org.apache.geode.cache.execute.ResultCollector; +import org.apache.geode.connectors.jdbc.internal.cli.CreateMappingFunction; +import org.apache.geode.connectors.jdbc.internal.cli.CreateMappingPreconditionCheckFunction; +import org.apache.geode.connectors.jdbc.internal.configuration.FieldMapping; +import org.apache.geode.connectors.jdbc.internal.configuration.RegionMapping; +import org.apache.geode.distributed.DistributedMember; +import org.apache.geode.internal.cache.InternalCache; +import org.apache.geode.management.configuration.RegionType; +import org.apache.geode.management.internal.cli.commands.CreateJndiBindingCommand; +import org.apache.geode.management.internal.cli.functions.CreateJndiBindingFunction; +import org.apache.geode.management.internal.cli.functions.CreateRegionFunctionArgs; +import org.apache.geode.management.internal.cli.functions.RegionCreateFunction; +import org.apache.geode.management.internal.configuration.converters.RegionConverter; +import org.apache.geode.management.internal.functions.CliFunctionResult; +import org.apache.geode.management.internal.util.ManagementUtils; + +public class GfshJdbcMappingIntegrationTest extends JdbcMappingIntegrationTest { + + @Override + protected InternalCache createCacheAndCreateJdbcMapping(String cacheXmlTestName) + throws Exception { +InternalCache cache = +(InternalCache) new CacheFactory().set("locators", "").set("mcast-port", "0").create(); +Set targetMembers = findMembers(cache, null, null); + +CliFunctionResult createRegionFuncResult = executeCreateRegionFunction(targetMembers); Review comment: OK, I will try to implement the test using gfsh commands. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Omitting field-mapping tag of cache.xml when using Simple JDBC Connector > > > Key: GEODE-8626 > URL: https://issues.apache.org/jira/browse/GEODE-8626 > Project: Geode > Issue Type: Improvement > Components: jdbc >Reporter: Masaki Yamakawa >Priority: Minor > Labels: pull-request-available > > When configuring Simple JDBC Connector with gfsh, I don't need to create > field-mapping, the default field-mapping will be created from pdx and table > meta data. > On the other hand, when using cache.xml(cluster.xml), pdx and table meta data > cannot be used, and field-mapping must be described in cache.xml. > I would like to create field-mapping defaults based on pdx and table meta > data when using cache.xml. > If field-mapping is specified in cache.xml, the xml setting has priority, and > only if there are no field-mapping tags. > cache.xml will be as follows: > {code:java} > > data-source="TestDataSource" > table="employees" > pdx-name="org.apache.geode.connectors.jdbc.Employee"
[jira] [Commented] (GEODE-8626) Omitting field-mapping tag of cache.xml when using Simple JDBC Connector
[ https://issues.apache.org/jira/browse/GEODE-8626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229279#comment-17229279 ] ASF GitHub Bot commented on GEODE-8626: --- masaki-yamakawa commented on a change in pull request #5637: URL: https://github.com/apache/geode/pull/5637#discussion_r520638425 ## File path: geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingPreconditionCheckFunctionTest.java ## @@ -306,45 +292,10 @@ public void executeFunctionThrowsGivenPdxSerializableWithNoZeroArgConstructor() "Could not generate a PdxType for the class org.apache.geode.connectors.jdbc.internal.cli.CreateMappingPreconditionCheckFunctionTest$PdxClassDummyNoZeroArg because it did not have a public zero arg constructor. Details: java.lang.NoSuchMethodException: org.apache.geode.connectors.jdbc.internal.cli.CreateMappingPreconditionCheckFunctionTest$PdxClassDummyNoZeroArg.()"); } - @Test Review comment: I will add the test using the `ReflectionBasedAutoSerializer` and verify the field mapping. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Omitting field-mapping tag of cache.xml when using Simple JDBC Connector > > > Key: GEODE-8626 > URL: https://issues.apache.org/jira/browse/GEODE-8626 > Project: Geode > Issue Type: Improvement > Components: jdbc >Reporter: Masaki Yamakawa >Priority: Minor > Labels: pull-request-available > > When configuring Simple JDBC Connector with gfsh, I don't need to create > field-mapping, the default field-mapping will be created from pdx and table > meta data. > On the other hand, when using cache.xml(cluster.xml), pdx and table meta data > cannot be used, and field-mapping must be described in cache.xml. > I would like to create field-mapping defaults based on pdx and table meta > data when using cache.xml. > If field-mapping is specified in cache.xml, the xml setting has priority, and > only if there are no field-mapping tags. > cache.xml will be as follows: > {code:java} > > data-source="TestDataSource" > table="employees" > pdx-name="org.apache.geode.connectors.jdbc.Employee" > ids="id"> > > > > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8692) ArrayIndexOutOfBoundsException may be thrown in RegionAdvisor.processProfilesQueuedDuringInitialization
[ https://issues.apache.org/jira/browse/GEODE-8692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229324#comment-17229324 ] ASF GitHub Bot commented on GEODE-8692: --- sabbey37 commented on pull request #5722: URL: https://github.com/apache/geode/pull/5722#issuecomment-724801298 > Looks good. Can you add a unit test and add coverage of the new code to it? Just added a couple of unit tests @dschneider-pivotal. Let me know what you think. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > ArrayIndexOutOfBoundsException may be thrown in > RegionAdvisor.processProfilesQueuedDuringInitialization > --- > > Key: GEODE-8692 > URL: https://issues.apache.org/jira/browse/GEODE-8692 > Project: Geode > Issue Type: Bug >Reporter: Sarah Abbey >Assignee: Sarah Abbey >Priority: Minor > Labels: pull-request-available > > If {{RegionAdvisor.buckets == null}} at the time the value of {{serials}} is > generated, an {{ArrayIndexOutOfBoundsException}} may be thrown in > {{RegionAdvisor.processProfilesQueuedDuringInitialization}} if buckets have > been initialized at that point. > Code where {{ArrayIndexOutOfBoundsException}} might be thrown in > {{RegionAdvisor.processProfilesQueuedDuringInitialization():}} > {code:java} > for (int i = 0; i < buckets.length; i++) { > BucketAdvisor ba = buckets[i].getBucketAdvisor(); > int serial = qbp.serials[i]; <<< Exception thrown here > if (serial != ILLEGAL_SERIAL) { > ba.removeIdWithSerial(qbp.memberId, serial, qbp.destroyed); > } > } > {code} > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8684) Setting a session's maxInactiveInterval does not work when the commit valve is disabled
[ https://issues.apache.org/jira/browse/GEODE-8684?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229338#comment-17229338 ] ASF GitHub Bot commented on GEODE-8684: --- sabbey37 commented on a change in pull request #5724: URL: https://github.com/apache/geode/pull/5724#discussion_r520697519 ## File path: geode-assembly/src/distributedTest/java/org/apache/geode/session/tests/Tomcat9CachingClientServerValveDisabledTest.java ## @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.session.tests; + +import static org.apache.geode.session.tests.ContainerInstall.ConnectionType.CACHING_CLIENT_SERVER; +import static org.apache.geode.session.tests.TomcatInstall.TomcatVersion.TOMCAT9; + +import java.util.function.IntSupplier; + +public class Tomcat9CachingClientServerValveDisabledTest extends TomcatClientServerTest { Review comment: Should we add a ValveDisabled test for other versions of Tomcat? Or is it unnecessary? This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Setting a session's maxInactiveInterval does not work when the commit valve > is disabled > --- > > Key: GEODE-8684 > URL: https://issues.apache.org/jira/browse/GEODE-8684 > Project: Geode > Issue Type: Bug > Components: http session >Affects Versions: 1.14.0 >Reporter: Jens Deppe >Assignee: Jens Deppe >Priority: Major > Labels: pull-request-available > > I was using the {{CommandServlet}}, in an external test, and noticed that > when the commit valve is disabled, attempting to set the session's > maxInactiveInterval does not cause the session's maxInactiveInterval to be > changed and it remains at the default. > My setup consisted of 2 Geode servers and a single Tomcat instance (9.0.39). > I was checking the sessions with the following gfsh query: > {code:java} > query --query="select e.key,e.value.maxInactiveInterval from > /gemfire_modules_sessions.entries as e > {code} > My {{context.xml}} includes the following: > {code:xml} >className="org.apache.geode.modules.session.catalina.Tomcat8DeltaSessionManager" > enableLocalCache="false" > enableCommitValve="false" > regionAttributesId="PARTITION_REDUNDANT" > /> > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (GEODE-8694) Use fork of Redis in Gemfire org to run Redis tests in CI
Sarah Abbey created GEODE-8694: -- Summary: Use fork of Redis in Gemfire org to run Redis tests in CI Key: GEODE-8694 URL: https://issues.apache.org/jira/browse/GEODE-8694 Project: Geode Issue Type: Improvement Components: redis Reporter: Sarah Abbey Currently, we are using a contributor's personal fork of Redis to run tests against Geode Redis in CI. This should be switched to the fork of Redis in the Gemfire org. Ideally, we will eventually be able to run tests from the root Redis repo (currently we are unable to since we are not implementing all the necessary commands). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (GEODE-8694) Use fork of Redis in Gemfire org to run Redis tests in CI
[ https://issues.apache.org/jira/browse/GEODE-8694?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sarah Abbey updated GEODE-8694: --- Priority: Trivial (was: Major) > Use fork of Redis in Gemfire org to run Redis tests in CI > - > > Key: GEODE-8694 > URL: https://issues.apache.org/jira/browse/GEODE-8694 > Project: Geode > Issue Type: Improvement > Components: redis >Reporter: Sarah Abbey >Priority: Trivial > > Currently, we are using a contributor's personal fork of Redis to run tests > against Geode Redis in CI. This should be switched to the fork of Redis in > the Gemfire org. Ideally, we will eventually be able to run tests from the > root Redis repo (currently we are unable to since we are not implementing all > the necessary commands). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Assigned] (GEODE-8694) Use fork of Redis in Gemfire org to run Redis tests in CI
[ https://issues.apache.org/jira/browse/GEODE-8694?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sarah Abbey reassigned GEODE-8694: -- Assignee: Sarah Abbey > Use fork of Redis in Gemfire org to run Redis tests in CI > - > > Key: GEODE-8694 > URL: https://issues.apache.org/jira/browse/GEODE-8694 > Project: Geode > Issue Type: Improvement > Components: redis >Reporter: Sarah Abbey >Assignee: Sarah Abbey >Priority: Trivial > > Currently, we are using a contributor's personal fork of Redis to run tests > against Geode Redis in CI. This should be switched to the fork of Redis in > the Gemfire org. Ideally, we will eventually be able to run tests from the > root Redis repo (currently we are unable to since we are not implementing all > the necessary commands). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8694) Use fork of Redis in Gemfire org to run Redis tests in CI
[ https://issues.apache.org/jira/browse/GEODE-8694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229375#comment-17229375 ] ASF GitHub Bot commented on GEODE-8694: --- sabbey37 opened a new pull request #5726: URL: https://github.com/apache/geode/pull/5726 Currently, we are using a contributor's personal fork of Redis to run tests against Geode Redis in CI. This should be switched to the fork of Redis in the Gemfire org. Ideally, we will eventually be able to run tests from the root Redis repo (currently we are unable to since we are not implementing all the necessary commands). Thank you for submitting a contribution to Apache Geode. In order to streamline the review of the contribution we ask you to ensure the following steps have been taken: ### For all changes: - [ x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message? - [ x] Has your PR been rebased against the latest commit within the target branch (typically `develop`)? - [ x] Is your initial contribution a single, squashed commit? - [ x] Does `gradlew build` run cleanly? - [ x] Have you written or updated unit tests to verify your changes? - [ x] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)? ### Note: Please ensure that once the PR is submitted, check Concourse for build issues and submit an update to your PR as soon as possible. If you need help, please send an email to d...@geode.apache.org. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Use fork of Redis in Gemfire org to run Redis tests in CI > - > > Key: GEODE-8694 > URL: https://issues.apache.org/jira/browse/GEODE-8694 > Project: Geode > Issue Type: Improvement > Components: redis >Reporter: Sarah Abbey >Assignee: Sarah Abbey >Priority: Trivial > > Currently, we are using a contributor's personal fork of Redis to run tests > against Geode Redis in CI. This should be switched to the fork of Redis in > the Gemfire org. Ideally, we will eventually be able to run tests from the > root Redis repo (currently we are unable to since we are not implementing all > the necessary commands). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (GEODE-8694) Use fork of Redis in Gemfire org to run Redis tests in CI
[ https://issues.apache.org/jira/browse/GEODE-8694?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] ASF GitHub Bot updated GEODE-8694: -- Labels: pull-request-available (was: ) > Use fork of Redis in Gemfire org to run Redis tests in CI > - > > Key: GEODE-8694 > URL: https://issues.apache.org/jira/browse/GEODE-8694 > Project: Geode > Issue Type: Improvement > Components: redis >Reporter: Sarah Abbey >Assignee: Sarah Abbey >Priority: Trivial > Labels: pull-request-available > > Currently, we are using a contributor's personal fork of Redis to run tests > against Geode Redis in CI. This should be switched to the fork of Redis in > the Gemfire org. Ideally, we will eventually be able to run tests from the > root Redis repo (currently we are unable to since we are not implementing all > the necessary commands). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229377#comment-17229377 ] ASF GitHub Bot commented on GEODE-8686: --- DonalEvans merged pull request #5707: URL: https://github.com/apache/geode/pull/5707 This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Resolved] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Donal Evans resolved GEODE-8686. Fix Version/s: 1.14.0 Resolution: Fixed > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.14.0 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229378#comment-17229378 ] ASF subversion and git services commented on GEODE-8686: Commit 70b1ee8b98f1458620539c4a962e82f8ef35707b in geode's branch refs/heads/develop from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=70b1ee8 ] GEODE-8686: Prevent potential deadlock during GII and tombstone GC (#5707) - Do not call AbstractRegionMap.removeTombstone() outside of TombstoneService class - Add test to confirm that tombstones are correctly scheduled and collected with this change Authored-by: Donal Evans > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.14.0 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-7710) JMXMBeanReconnectDUnitTest fails intermittently because one locator is missing the LockServiceMXBean
[ https://issues.apache.org/jira/browse/GEODE-7710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229385#comment-17229385 ] Geode Integration commented on GEODE-7710: -- Seen in [DistributedTestOpenJDK8 #610|https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-main/jobs/DistributedTestOpenJDK8/builds/610] ... see [test results|http://files.apachegeode-ci.info/builds/apache-develop-main/1.14.0-build.0474/test-results/distributedTest/1604985408/] or download [artifacts|http://files.apachegeode-ci.info/builds/apache-develop-main/1.14.0-build.0474/test-artifacts/1604985408/distributedtestfiles-OpenJDK8-1.14.0-build.0474.tgz]. > JMXMBeanReconnectDUnitTest fails intermittently because one locator is > missing the LockServiceMXBean > > > Key: GEODE-7710 > URL: https://issues.apache.org/jira/browse/GEODE-7710 > Project: Geode > Issue Type: Bug > Components: tests >Affects Versions: 1.13.0 >Reporter: Kirk Lund >Assignee: Kirk Lund >Priority: Major > Labels: flaky > Time Spent: 5h > Remaining Estimate: 0h > > Multiple tests in JMXMBeanReconnectDUnitTest may fail an await due to one of > the locators missing the LockServiceMXBean for the cluster config service. > {noformat} > but could not find: > > <[GemFire:service=LockService,name=__CLUSTER_CONFIG_LS,type=Member,member=locator1]> > {noformat} > These test failures are caused by *GEODE-7739*. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8664) JGroups exception is not propagated
[ https://issues.apache.org/jira/browse/GEODE-8664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229389#comment-17229389 ] ASF GitHub Bot commented on GEODE-8664: --- moleske commented on a change in pull request #5725: URL: https://github.com/apache/geode/pull/5725#discussion_r520744117 ## File path: geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java ## @@ -204,4 +207,30 @@ public void testSendToEmptyListIsRejected() throws Exception { distribution.send(emptyList, m); verify(membership, never()).send(any(), any()); } + + @Test + public void testExceptionNestedOnStartConfigError() throws Exception { +Throwable cause = new RuntimeException("Exception cause"); +Throwable exception = new MembershipConfigurationException("Test exception", cause); +doThrow(exception).when(membership).start(); +try { Review comment: JUnit has [ExpectedException](https://junit.org/junit4/javadoc/4.12/org/junit/rules/ExpectedException.html) which I think works better than `try` `catch` statements. There are some examples in the Geode code base if you want some inspiration This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > JGroups exception is not propagated > --- > > Key: GEODE-8664 > URL: https://issues.apache.org/jira/browse/GEODE-8664 > Project: Geode > Issue Type: Bug > Components: membership, messaging >Affects Versions: 1.12.0, 1.13.0 >Reporter: Mario Salazar de Torres >Assignee: Mario Salazar de Torres >Priority: Minor > Labels: pull-request-available > Attachments: GEODE-8664.patch > > > *AS A* geode contributor > *I WANT* exceptions thrown in DistributionImpl.start to be propagated > *SO THAT* more information is provided while tackling issues. > > > *Additional information:* > After looking at an issue while starting a locator having to do with > JGroupMessenger I noticed that exceptions from Membership.start are not > correctly propagated in DistributionImpl.start method. > To ilustrate the problem I attach below the reported exception while starting > the locator: > > {noformat} > locator is exiting due to an exception > org.apache.geode.GemFireConfigException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:184) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135) > at > org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3033) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290) > at > org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743) > at > org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388) > at > org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716) > at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623) > at > org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217){noformat} > > Thing is with that kind of information there's no way to know why the problem > is happening, so the idea would be to propagate the exceptions, so it looks > more like this: > {noformat} > locator is exiting due to an exception > org.apache.geode.SystemConnectException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:186) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.
[jira] [Commented] (GEODE-8664) JGroups exception is not propagated
[ https://issues.apache.org/jira/browse/GEODE-8664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229394#comment-17229394 ] ASF GitHub Bot commented on GEODE-8664: --- gaussianrecurrence commented on a change in pull request #5725: URL: https://github.com/apache/geode/pull/5725#discussion_r520747246 ## File path: geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java ## @@ -204,4 +207,30 @@ public void testSendToEmptyListIsRejected() throws Exception { distribution.send(emptyList, m); verify(membership, never()).send(any(), any()); } + + @Test + public void testExceptionNestedOnStartConfigError() throws Exception { +Throwable cause = new RuntimeException("Exception cause"); +Throwable exception = new MembershipConfigurationException("Test exception", cause); +doThrow(exception).when(membership).start(); +try { Review comment: Thanks for the comment! TBH I’ve never used JUnit or mockito before, so any comments are welcome! This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > JGroups exception is not propagated > --- > > Key: GEODE-8664 > URL: https://issues.apache.org/jira/browse/GEODE-8664 > Project: Geode > Issue Type: Bug > Components: membership, messaging >Affects Versions: 1.12.0, 1.13.0 >Reporter: Mario Salazar de Torres >Assignee: Mario Salazar de Torres >Priority: Minor > Labels: pull-request-available > Attachments: GEODE-8664.patch > > > *AS A* geode contributor > *I WANT* exceptions thrown in DistributionImpl.start to be propagated > *SO THAT* more information is provided while tackling issues. > > > *Additional information:* > After looking at an issue while starting a locator having to do with > JGroupMessenger I noticed that exceptions from Membership.start are not > correctly propagated in DistributionImpl.start method. > To ilustrate the problem I attach below the reported exception while starting > the locator: > > {noformat} > locator is exiting due to an exception > org.apache.geode.GemFireConfigException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:184) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135) > at > org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3033) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290) > at > org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743) > at > org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388) > at > org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716) > at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623) > at > org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217){noformat} > > Thing is with that kind of information there's no way to know why the problem > is happening, so the idea would be to propagate the exceptions, so it looks > more like this: > {noformat} > locator is exiting due to an exception > org.apache.geode.SystemConnectException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:186) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distri
[jira] [Commented] (GEODE-8664) JGroups exception is not propagated
[ https://issues.apache.org/jira/browse/GEODE-8664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229397#comment-17229397 ] ASF GitHub Bot commented on GEODE-8664: --- moleske commented on a change in pull request #5725: URL: https://github.com/apache/geode/pull/5725#discussion_r520750337 ## File path: geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java ## @@ -204,4 +207,30 @@ public void testSendToEmptyListIsRejected() throws Exception { distribution.send(emptyList, m); verify(membership, never()).send(any(), any()); } + + @Test + public void testExceptionNestedOnStartConfigError() throws Exception { +Throwable cause = new RuntimeException("Exception cause"); +Throwable exception = new MembershipConfigurationException("Test exception", cause); +doThrow(exception).when(membership).start(); +try { Review comment: Always glad to provide new learning opportunities for folks 😄 Plus no time like the present to learn new things! This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > JGroups exception is not propagated > --- > > Key: GEODE-8664 > URL: https://issues.apache.org/jira/browse/GEODE-8664 > Project: Geode > Issue Type: Bug > Components: membership, messaging >Affects Versions: 1.12.0, 1.13.0 >Reporter: Mario Salazar de Torres >Assignee: Mario Salazar de Torres >Priority: Minor > Labels: pull-request-available > Attachments: GEODE-8664.patch > > > *AS A* geode contributor > *I WANT* exceptions thrown in DistributionImpl.start to be propagated > *SO THAT* more information is provided while tackling issues. > > > *Additional information:* > After looking at an issue while starting a locator having to do with > JGroupMessenger I noticed that exceptions from Membership.start are not > correctly propagated in DistributionImpl.start method. > To ilustrate the problem I attach below the reported exception while starting > the locator: > > {noformat} > locator is exiting due to an exception > org.apache.geode.GemFireConfigException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:184) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135) > at > org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3033) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290) > at > org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743) > at > org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388) > at > org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716) > at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623) > at > org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217){noformat} > > Thing is with that kind of information there's no way to know why the problem > is happening, so the idea would be to propagate the exceptions, so it looks > more like this: > {noformat} > locator is exiting due to an exception > org.apache.geode.SystemConnectException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:186) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.
[jira] [Commented] (GEODE-8694) Use fork of Redis in Gemfire org to run Redis tests in CI
[ https://issues.apache.org/jira/browse/GEODE-8694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229407#comment-17229407 ] ASF GitHub Bot commented on GEODE-8694: --- sabbey37 commented on pull request #5726: URL: https://github.com/apache/geode/pull/5726#issuecomment-724869478 Will find a different way to test Geode Redis compatibility. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Use fork of Redis in Gemfire org to run Redis tests in CI > - > > Key: GEODE-8694 > URL: https://issues.apache.org/jira/browse/GEODE-8694 > Project: Geode > Issue Type: Improvement > Components: redis >Reporter: Sarah Abbey >Assignee: Sarah Abbey >Priority: Trivial > Labels: pull-request-available > > Currently, we are using a contributor's personal fork of Redis to run tests > against Geode Redis in CI. This should be switched to the fork of Redis in > the Gemfire org. Ideally, we will eventually be able to run tests from the > root Redis repo (currently we are unable to since we are not implementing all > the necessary commands). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8694) Use fork of Redis in Gemfire org to run Redis tests in CI
[ https://issues.apache.org/jira/browse/GEODE-8694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229406#comment-17229406 ] ASF GitHub Bot commented on GEODE-8694: --- sabbey37 closed pull request #5726: URL: https://github.com/apache/geode/pull/5726 This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Use fork of Redis in Gemfire org to run Redis tests in CI > - > > Key: GEODE-8694 > URL: https://issues.apache.org/jira/browse/GEODE-8694 > Project: Geode > Issue Type: Improvement > Components: redis >Reporter: Sarah Abbey >Assignee: Sarah Abbey >Priority: Trivial > Labels: pull-request-available > > Currently, we are using a contributor's personal fork of Redis to run tests > against Geode Redis in CI. This should be switched to the fork of Redis in > the Gemfire org. Ideally, we will eventually be able to run tests from the > root Redis repo (currently we are unable to since we are not implementing all > the necessary commands). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8692) ArrayIndexOutOfBoundsException may be thrown in RegionAdvisor.processProfilesQueuedDuringInitialization
[ https://issues.apache.org/jira/browse/GEODE-8692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229415#comment-17229415 ] ASF GitHub Bot commented on GEODE-8692: --- DonalEvans commented on a change in pull request #5722: URL: https://github.com/apache/geode/pull/5722#discussion_r520742186 ## File path: geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RegionAdvisorJUnitTest.java ## @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.internal.cache.partitioned; + +import static org.apache.geode.distributed.internal.DistributionAdvisor.ILLEGAL_SERIAL; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.Before; +import org.junit.Test; + +import org.apache.geode.cache.PartitionAttributes; +import org.apache.geode.cache.RegionAttributes; +import org.apache.geode.distributed.internal.DistributionManager; +import org.apache.geode.distributed.internal.membership.InternalDistributedMember; +import org.apache.geode.internal.cache.BucketAdvisor; +import org.apache.geode.internal.cache.PartitionedRegion; +import org.apache.geode.internal.cache.ProxyBucketRegion; + +public class RegionAdvisorJUnitTest { + + private PartitionedRegion partitionedRegion; + private RegionAdvisor regionAdvisor; + private final int[] serials = new int[] {ILLEGAL_SERIAL, ILLEGAL_SERIAL, ILLEGAL_SERIAL}; + + @Before + public void setUp() throws Exception { +partitionedRegion = mock(PartitionedRegion.class); +regionAdvisor = new RegionAdvisor(partitionedRegion); + } + + @Test + public void getBucketSerials_shouldReturnAnArrayOfIllegalSerials_whenBucketsAreNull() { +RegionAttributes regionAttributes = mock(RegionAttributes.class); +PartitionAttributes partitionAttributes = mock(PartitionAttributes.class); +when(partitionedRegion.getAttributes()).thenReturn(regionAttributes); + when(regionAttributes.getPartitionAttributes()).thenReturn(partitionAttributes); +when(partitionAttributes.getTotalNumBuckets()).thenReturn(3); + +assertThat(regionAdvisor.getBucketSerials()).containsExactly(serials); + } + + @Test + public void processProfilesQueuedDuringInitialization_shouldNotThrowIndexOutOfBoundsException() { Review comment: Two of the variable names in this test, `qbp` and `pbr` could be a bit more descriptive. I don't think there's anything wrong with long variable names, providing it's providing extra clarity. ## File path: geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RegionAdvisorJUnitTest.java ## @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.internal.cache.partitioned; + +import static org.apache.geode.distributed.internal.DistributionAdvisor.ILLEGAL_SERIAL; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.Before; +import org.junit.Test; + +import org.apache.geode.cache.PartitionAttributes; +import org.apache.geode.cache.RegionAttributes; +import org.apache.geode.distributed.internal.DistributionManager; +import org.apache.geo
[jira] [Updated] (GEODE-8695) CI should not run Redis tests from fork
[ https://issues.apache.org/jira/browse/GEODE-8695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sarah Abbey updated GEODE-8695: --- Priority: Minor (was: Major) > CI should not run Redis tests from fork > --- > > Key: GEODE-8695 > URL: https://issues.apache.org/jira/browse/GEODE-8695 > Project: Geode > Issue Type: Improvement > Components: ci, redis >Reporter: Sarah Abbey >Priority: Minor > > Currently, we are using a contributor's personal fork of Redis to run tests > against Geode Redis in CI. This should be switched to use the root Redis > repo. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Assigned] (GEODE-8695) CI should not run Redis tests from fork
[ https://issues.apache.org/jira/browse/GEODE-8695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sarah Abbey reassigned GEODE-8695: -- Assignee: Helena Bales > CI should not run Redis tests from fork > --- > > Key: GEODE-8695 > URL: https://issues.apache.org/jira/browse/GEODE-8695 > Project: Geode > Issue Type: Improvement > Components: ci, redis >Reporter: Sarah Abbey >Assignee: Helena Bales >Priority: Minor > > Currently, we are using a contributor's personal fork of Redis to run tests > against Geode Redis in CI. This should be switched to use the root Redis > repo. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (GEODE-8695) CI should not run Redis tests from fork
Sarah Abbey created GEODE-8695: -- Summary: CI should not run Redis tests from fork Key: GEODE-8695 URL: https://issues.apache.org/jira/browse/GEODE-8695 Project: Geode Issue Type: Improvement Components: ci, redis Reporter: Sarah Abbey Currently, we are using a contributor's personal fork of Redis to run tests against Geode Redis in CI. This should be switched to use the root Redis repo. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Resolved] (GEODE-8694) Use fork of Redis in Gemfire org to run Redis tests in CI
[ https://issues.apache.org/jira/browse/GEODE-8694?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sarah Abbey resolved GEODE-8694. Assignee: Helena Bales (was: Sarah Abbey) Resolution: Duplicate > Use fork of Redis in Gemfire org to run Redis tests in CI > - > > Key: GEODE-8694 > URL: https://issues.apache.org/jira/browse/GEODE-8694 > Project: Geode > Issue Type: Improvement > Components: redis >Reporter: Sarah Abbey >Assignee: Helena Bales >Priority: Trivial > Labels: pull-request-available > > Currently, we are using a contributor's personal fork of Redis to run tests > against Geode Redis in CI. This should be switched to the fork of Redis in > the Gemfire org. Ideally, we will eventually be able to run tests from the > root Redis repo (currently we are unable to since we are not implementing all > the necessary commands). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8692) ArrayIndexOutOfBoundsException may be thrown in RegionAdvisor.processProfilesQueuedDuringInitialization
[ https://issues.apache.org/jira/browse/GEODE-8692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229460#comment-17229460 ] ASF GitHub Bot commented on GEODE-8692: --- sabbey37 commented on a change in pull request #5722: URL: https://github.com/apache/geode/pull/5722#discussion_r520816960 ## File path: geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RegionAdvisorJUnitTest.java ## @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.internal.cache.partitioned; + +import static org.apache.geode.distributed.internal.DistributionAdvisor.ILLEGAL_SERIAL; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.Before; +import org.junit.Test; + +import org.apache.geode.cache.PartitionAttributes; +import org.apache.geode.cache.RegionAttributes; +import org.apache.geode.distributed.internal.DistributionManager; +import org.apache.geode.distributed.internal.membership.InternalDistributedMember; +import org.apache.geode.internal.cache.BucketAdvisor; +import org.apache.geode.internal.cache.PartitionedRegion; +import org.apache.geode.internal.cache.ProxyBucketRegion; + +public class RegionAdvisorJUnitTest { + + private PartitionedRegion partitionedRegion; + private RegionAdvisor regionAdvisor; + private final int[] serials = new int[] {ILLEGAL_SERIAL, ILLEGAL_SERIAL, ILLEGAL_SERIAL}; + + @Before + public void setUp() throws Exception { +partitionedRegion = mock(PartitionedRegion.class); +regionAdvisor = new RegionAdvisor(partitionedRegion); + } + + @Test + public void getBucketSerials_shouldReturnAnArrayOfIllegalSerials_whenBucketsAreNull() { +RegionAttributes regionAttributes = mock(RegionAttributes.class); +PartitionAttributes partitionAttributes = mock(PartitionAttributes.class); +when(partitionedRegion.getAttributes()).thenReturn(regionAttributes); + when(regionAttributes.getPartitionAttributes()).thenReturn(partitionAttributes); +when(partitionAttributes.getTotalNumBuckets()).thenReturn(3); + +assertThat(regionAdvisor.getBucketSerials()).containsExactly(serials); + } + + @Test + public void processProfilesQueuedDuringInitialization_shouldNotThrowIndexOutOfBoundsException() { Review comment: Sounds good! This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > ArrayIndexOutOfBoundsException may be thrown in > RegionAdvisor.processProfilesQueuedDuringInitialization > --- > > Key: GEODE-8692 > URL: https://issues.apache.org/jira/browse/GEODE-8692 > Project: Geode > Issue Type: Bug >Reporter: Sarah Abbey >Assignee: Sarah Abbey >Priority: Minor > Labels: pull-request-available > > If {{RegionAdvisor.buckets == null}} at the time the value of {{serials}} is > generated, an {{ArrayIndexOutOfBoundsException}} may be thrown in > {{RegionAdvisor.processProfilesQueuedDuringInitialization}} if buckets have > been initialized at that point. > Code where {{ArrayIndexOutOfBoundsException}} might be thrown in > {{RegionAdvisor.processProfilesQueuedDuringInitialization():}} > {code:java} > for (int i = 0; i < buckets.length; i++) { > BucketAdvisor ba = buckets[i].getBucketAdvisor(); > int serial = qbp.serials[i]; <<< Exception thrown here > if (serial != ILLEGAL_SERIAL) { > ba.removeIdWithSerial(qbp.memberId, serial, qbp.destroyed); > } > } > {code} > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8466) Create a ClassLoaderService to abstract away dealing with the default ClassLoader directly
[ https://issues.apache.org/jira/browse/GEODE-8466?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229461#comment-17229461 ] ASF GitHub Bot commented on GEODE-8466: --- lgtm-com[bot] commented on pull request #5548: URL: https://github.com/apache/geode/pull/5548#issuecomment-724913938 This pull request **introduces 3 alerts** and **fixes 1** when merging 846309e00049b107ca9e72c6b699e20eefdcdd66 into 70b1ee8b98f1458620539c4a962e82f8ef35707b - [view on LGTM.com](https://lgtm.com/projects/g/apache/geode/rev/pr-d1e671db8a7e7bf2d6907c3f4c88dc2c86aa0aa7) **new alerts:** * 2 for Potential input resource leak * 1 for Use of a broken or risky cryptographic algorithm **fixed alerts:** * 1 for Use of a broken or risky cryptographic algorithm This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Create a ClassLoaderService to abstract away dealing with the default > ClassLoader directly > -- > > Key: GEODE-8466 > URL: https://issues.apache.org/jira/browse/GEODE-8466 > Project: Geode > Issue Type: New Feature > Components: core >Reporter: Udo Kohlmeyer >Assignee: Udo Kohlmeyer >Priority: Major > Labels: pull-request-available > > With the addition of ClassLoader isolation using JBoss Modules GEODE-8067, > the manner in which we interact with the ClassLoader needs to change. > An abstraction is required around the default functions like > `findResourceAsStream`, `loadClass` and `loadService`. > As these features will behave differently between different ClassLoader > implementations, it is best to have a single service that will expose that > functionality in a transparent manner. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8692) ArrayIndexOutOfBoundsException may be thrown in RegionAdvisor.processProfilesQueuedDuringInitialization
[ https://issues.apache.org/jira/browse/GEODE-8692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229459#comment-17229459 ] ASF GitHub Bot commented on GEODE-8692: --- sabbey37 commented on a change in pull request #5722: URL: https://github.com/apache/geode/pull/5722#discussion_r520816376 ## File path: geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RegionAdvisorJUnitTest.java ## @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.internal.cache.partitioned; + +import static org.apache.geode.distributed.internal.DistributionAdvisor.ILLEGAL_SERIAL; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.Before; +import org.junit.Test; + +import org.apache.geode.cache.PartitionAttributes; +import org.apache.geode.cache.RegionAttributes; +import org.apache.geode.distributed.internal.DistributionManager; +import org.apache.geode.distributed.internal.membership.InternalDistributedMember; +import org.apache.geode.internal.cache.BucketAdvisor; +import org.apache.geode.internal.cache.PartitionedRegion; +import org.apache.geode.internal.cache.ProxyBucketRegion; + +public class RegionAdvisorJUnitTest { + + private PartitionedRegion partitionedRegion; + private RegionAdvisor regionAdvisor; + private final int[] serials = new int[] {ILLEGAL_SERIAL, ILLEGAL_SERIAL, ILLEGAL_SERIAL}; + + @Before + public void setUp() throws Exception { +partitionedRegion = mock(PartitionedRegion.class); +regionAdvisor = new RegionAdvisor(partitionedRegion); + } + + @Test + public void getBucketSerials_shouldReturnAnArrayOfIllegalSerials_whenBucketsAreNull() { +RegionAttributes regionAttributes = mock(RegionAttributes.class); +PartitionAttributes partitionAttributes = mock(PartitionAttributes.class); +when(partitionedRegion.getAttributes()).thenReturn(regionAttributes); + when(regionAttributes.getPartitionAttributes()).thenReturn(partitionAttributes); +when(partitionAttributes.getTotalNumBuckets()).thenReturn(3); Review comment: Definitely. Good call! This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > ArrayIndexOutOfBoundsException may be thrown in > RegionAdvisor.processProfilesQueuedDuringInitialization > --- > > Key: GEODE-8692 > URL: https://issues.apache.org/jira/browse/GEODE-8692 > Project: Geode > Issue Type: Bug >Reporter: Sarah Abbey >Assignee: Sarah Abbey >Priority: Minor > Labels: pull-request-available > > If {{RegionAdvisor.buckets == null}} at the time the value of {{serials}} is > generated, an {{ArrayIndexOutOfBoundsException}} may be thrown in > {{RegionAdvisor.processProfilesQueuedDuringInitialization}} if buckets have > been initialized at that point. > Code where {{ArrayIndexOutOfBoundsException}} might be thrown in > {{RegionAdvisor.processProfilesQueuedDuringInitialization():}} > {code:java} > for (int i = 0; i < buckets.length; i++) { > BucketAdvisor ba = buckets[i].getBucketAdvisor(); > int serial = qbp.serials[i]; <<< Exception thrown here > if (serial != ILLEGAL_SERIAL) { > ba.removeIdWithSerial(qbp.memberId, serial, qbp.destroyed); > } > } > {code} > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (GEODE-7675) Partitioned Region clear should be successful when clients are present with subscription enabled
[ https://issues.apache.org/jira/browse/GEODE-7675?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] ASF GitHub Bot updated GEODE-7675: -- Labels: GeodeCommons pull-request-available (was: GeodeCommons) > Partitioned Region clear should be successful when clients are present with > subscription enabled > > > Key: GEODE-7675 > URL: https://issues.apache.org/jira/browse/GEODE-7675 > Project: Geode > Issue Type: Sub-task > Components: regions >Reporter: Nabarun Nag >Priority: Major > Labels: GeodeCommons, pull-request-available > > Clear operations are successful when Client Subscriptions are enabled and > clients are updated with the correct region clear event. > > Acceptance : > * DUnit tests ensuring that clear operations are successful > * Ensure that all clients are getting the correct event notifications. > * HA enabled tests > * Test coverage to when a member departs in this scenario > * Test coverage to when a member restarts in this scenario > * Unit tests with complete code coverage for the newly written code. > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-7675) Partitioned Region clear should be successful when clients are present with subscription enabled
[ https://issues.apache.org/jira/browse/GEODE-7675?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229463#comment-17229463 ] ASF GitHub Bot commented on GEODE-7675: --- jinmeiliao opened a new pull request #5727: URL: https://github.com/apache/geode/pull/5727 …s are present with subscription enabled Thank you for submitting a contribution to Apache Geode. In order to streamline the review of the contribution we ask you to ensure the following steps have been taken: ### For all changes: - [ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message? - [ ] Has your PR been rebased against the latest commit within the target branch (typically `develop`)? - [ ] Is your initial contribution a single, squashed commit? - [ ] Does `gradlew build` run cleanly? - [ ] Have you written or updated unit tests to verify your changes? - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)? ### Note: Please ensure that once the PR is submitted, check Concourse for build issues and submit an update to your PR as soon as possible. If you need help, please send an email to d...@geode.apache.org. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Partitioned Region clear should be successful when clients are present with > subscription enabled > > > Key: GEODE-7675 > URL: https://issues.apache.org/jira/browse/GEODE-7675 > Project: Geode > Issue Type: Sub-task > Components: regions >Reporter: Nabarun Nag >Priority: Major > Labels: GeodeCommons > > Clear operations are successful when Client Subscriptions are enabled and > clients are updated with the correct region clear event. > > Acceptance : > * DUnit tests ensuring that clear operations are successful > * Ensure that all clients are getting the correct event notifications. > * HA enabled tests > * Test coverage to when a member departs in this scenario > * Test coverage to when a member restarts in this scenario > * Unit tests with complete code coverage for the newly written code. > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8261) Do not add proxyID to client interest list if it is null
[ https://issues.apache.org/jira/browse/GEODE-8261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229468#comment-17229468 ] ASF subversion and git services commented on GEODE-8261: Commit d682b662ee25e4894deafd0ac30a9cb63961fe8c in geode's branch refs/heads/support/1.12 from Nabarun Nag [ https://gitbox.apache.org/repos/asf?p=geode.git;h=d682b66 ] GEODE-8261: Added a null check for the proxyID. (#5251) * During shutdown operations proxyID can be null. * Executing operations using this null value can cause NPEs * The solution is to skip all operations if the proxyID value is null. (cherry picked from commit 7609cfaefcaed12ce4bdc9450859e690e1c79815) > Do not add proxyID to client interest list if it is null > > > Key: GEODE-8261 > URL: https://issues.apache.org/jira/browse/GEODE-8261 > Project: Geode > Issue Type: Task > Components: client queues >Reporter: Nabarun Nag >Priority: Major > Fix For: 1.13.0, 1.14.0 > > > * Sometime during shutdown proxyIDs can be null > * Attempting to add this null value to data structures can cause NPE. For > example the below mentioned code snippets may cause NPE if proxyID is null. > {code:java} > protected void addClientCQsAndInterestList(ClientUpdateMessageImpl msg, > HAEventWrapper haEventWrapper, Map haContainer, String regionName) { > ClientProxyMembershipID proxyID = ((HAContainerWrapper) > haContainer).getProxyID(regionName); > if (proxyID != null) { > if (haEventWrapper.getClientCqs() != null) { > CqNameToOp clientCQ = haEventWrapper.getClientCqs().get(proxyID); > if (clientCQ != null) { > msg.addClientCqs(proxyID, clientCQ); > } > } // This is a remote HAEventWrapper. > // Add new Interested client lists. > ClientUpdateMessageImpl clientMsg = > (ClientUpdateMessageImpl) haEventWrapper.getClientUpdateMessage(); > if (clientMsg != null) { > if (clientMsg.isClientInterestedInUpdates(proxyID)) { > msg.addClientInterestList(proxyID, true); > } else if (clientMsg.isClientInterestedInInvalidates(proxyID)) { > msg.addClientInterestList(proxyID, false); > } > } > } > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8573) SerialGatewaySenderOperationsDistributedTest.testRestartSerialGatewaySendersWhilePutting
[ https://issues.apache.org/jira/browse/GEODE-8573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229507#comment-17229507 ] Geode Integration commented on GEODE-8573: -- Seen in [DistributedTestOpenJDK8 #612|https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-main/jobs/DistributedTestOpenJDK8/builds/612] ... see [test results|http://files.apachegeode-ci.info/builds/apache-develop-main/1.14.0-build.0475/test-results/distributedTest/1605037848/] or download [artifacts|http://files.apachegeode-ci.info/builds/apache-develop-main/1.14.0-build.0475/test-artifacts/1605037848/distributedtestfiles-OpenJDK8-1.14.0-build.0475.tgz]. > SerialGatewaySenderOperationsDistributedTest.testRestartSerialGatewaySendersWhilePutting > > > Key: GEODE-8573 > URL: https://issues.apache.org/jira/browse/GEODE-8573 > Project: Geode > Issue Type: Bug > Components: wan >Affects Versions: 1.14.0 >Reporter: Mark Hanson >Assignee: Kirk Lund >Priority: Major > Fix For: 1.14.0 > > > [https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-main/jobs/DistributedTestOpenJDK8/builds/521] > > {noformat} > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderOperationsDistributedTest > > testRestartSerialGatewaySendersWhilePutting[1: numDispatchers=3] FAILED > org.apache.geode.test.dunit.RMIException: While invoking > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderOperationsDistributedTest$$Lambda$356/426344166.run > in VM 5 running on Host 538fd3213f62 with 8 VMs > at org.apache.geode.test.dunit.VM.executeMethodOnObject(VM.java:620) > at org.apache.geode.test.dunit.VM.invoke(VM.java:447) > at > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderOperationsDistributedTest.testRestartSerialGatewaySendersWhilePutting(SerialGatewaySenderOperationsDistributedTest.java:407) > Caused by: > org.awaitility.core.ConditionTimeoutException: Assertion condition > defined as a lambda expression in > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderOperationsDistributedTest > that uses org.apache.geode.internal.cache.wan.InternalGatewaySender, > org.apache.geode.internal.cache.wan.InternalGatewaySenderint [Sender > statistics unprocessed event map size] expected:<[0]> but was:<[3]> within 5 > minutes. > at > org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:165) > at > org.awaitility.core.AssertionCondition.await(AssertionCondition.java:119) > at > org.awaitility.core.AssertionCondition.await(AssertionCondition.java:31) > at > org.awaitility.core.ConditionFactory.until(ConditionFactory.java:895) > at > org.awaitility.core.ConditionFactory.untilAsserted(ConditionFactory.java:679) > at > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderOperationsDistributedTest.validateSecondaryQueueSizeStat(SerialGatewaySenderOperationsDistributedTest.java:1216) > at > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderOperationsDistributedTest.lambda$testRestartSerialGatewaySendersWhilePutting$bb17a952$23(SerialGatewaySenderOperationsDistributedTest.java:407) > Caused by: > org.junit.ComparisonFailure: [Sender statistics unprocessed event > map size] expected:<[0]> but was:<[3]> > at > sun.reflect.GeneratedConstructorAccessor81.newInstance(Unknown Source) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderOperationsDistributedTest.lambda$validateSecondaryQueueSizeStat$8(SerialGatewaySenderOperationsDistributedTest.java:1219) > {noformat} > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-= Test Results URI > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > [http://files.apachegeode-ci.info/builds/apache-develop-main/1.14.0-build.0389/test-results/distributedTest/1601774166/] > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Test report artifacts from this job are available at: > [http://files.apachegeode-ci.info/builds/apache-develop-main/1.14.0-build.0389/test-artifacts/1601774166/distributedtestfiles-OpenJDK8-1.14.0-build.0389.tgz] > > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8664) JGroups exception is not propagated
[ https://issues.apache.org/jira/browse/GEODE-8664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229524#comment-17229524 ] ASF GitHub Bot commented on GEODE-8664: --- jdeppe-pivotal commented on a change in pull request #5725: URL: https://github.com/apache/geode/pull/5725#discussion_r520873603 ## File path: geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java ## @@ -204,4 +207,30 @@ public void testSendToEmptyListIsRejected() throws Exception { distribution.send(emptyList, m); verify(membership, never()).send(any(), any()); } + + @Test + public void testExceptionNestedOnStartConfigError() throws Exception { +Throwable cause = new RuntimeException("Exception cause"); +Throwable exception = new MembershipConfigurationException("Test exception", cause); +doThrow(exception).when(membership).start(); +try { Review comment: AssertJ also has a very convenient `assertThatThrownBy()` which lets you assert on the type of exception thrown as well as specific messages, causes, etc. There are numerous examples throughout the test code. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > JGroups exception is not propagated > --- > > Key: GEODE-8664 > URL: https://issues.apache.org/jira/browse/GEODE-8664 > Project: Geode > Issue Type: Bug > Components: membership, messaging >Affects Versions: 1.12.0, 1.13.0 >Reporter: Mario Salazar de Torres >Assignee: Mario Salazar de Torres >Priority: Minor > Labels: pull-request-available > Attachments: GEODE-8664.patch > > > *AS A* geode contributor > *I WANT* exceptions thrown in DistributionImpl.start to be propagated > *SO THAT* more information is provided while tackling issues. > > > *Additional information:* > After looking at an issue while starting a locator having to do with > JGroupMessenger I noticed that exceptions from Membership.start are not > correctly propagated in DistributionImpl.start method. > To ilustrate the problem I attach below the reported exception while starting > the locator: > > {noformat} > locator is exiting due to an exception > org.apache.geode.GemFireConfigException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:184) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135) > at > org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3033) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290) > at > org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743) > at > org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388) > at > org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716) > at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623) > at > org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217){noformat} > > Thing is with that kind of information there's no way to know why the problem > is happening, so the idea would be to propagate the exceptions, so it looks > more like this: > {noformat} > locator is exiting due to an exception > org.apache.geode.SystemConnectException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:186) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.int
[jira] [Commented] (GEODE-8692) ArrayIndexOutOfBoundsException may be thrown in RegionAdvisor.processProfilesQueuedDuringInitialization
[ https://issues.apache.org/jira/browse/GEODE-8692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229526#comment-17229526 ] ASF GitHub Bot commented on GEODE-8692: --- sabbey37 commented on a change in pull request #5722: URL: https://github.com/apache/geode/pull/5722#discussion_r520876806 ## File path: geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RegionAdvisorJUnitTest.java ## @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.internal.cache.partitioned; + +import static org.apache.geode.distributed.internal.DistributionAdvisor.ILLEGAL_SERIAL; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.Before; +import org.junit.Test; + +import org.apache.geode.cache.PartitionAttributes; +import org.apache.geode.cache.RegionAttributes; +import org.apache.geode.distributed.internal.DistributionManager; +import org.apache.geode.distributed.internal.membership.InternalDistributedMember; +import org.apache.geode.internal.cache.BucketAdvisor; +import org.apache.geode.internal.cache.PartitionedRegion; +import org.apache.geode.internal.cache.ProxyBucketRegion; + +public class RegionAdvisorJUnitTest { + + private PartitionedRegion partitionedRegion; + private RegionAdvisor regionAdvisor; + private final int[] serials = new int[] {ILLEGAL_SERIAL, ILLEGAL_SERIAL, ILLEGAL_SERIAL}; + + @Before + public void setUp() throws Exception { +partitionedRegion = mock(PartitionedRegion.class); +regionAdvisor = new RegionAdvisor(partitionedRegion); + } + + @Test + public void getBucketSerials_shouldReturnAnArrayOfIllegalSerials_whenBucketsAreNull() { +RegionAttributes regionAttributes = mock(RegionAttributes.class); +PartitionAttributes partitionAttributes = mock(PartitionAttributes.class); +when(partitionedRegion.getAttributes()).thenReturn(regionAttributes); + when(regionAttributes.getPartitionAttributes()).thenReturn(partitionAttributes); +when(partitionAttributes.getTotalNumBuckets()).thenReturn(3); + +assertThat(regionAdvisor.getBucketSerials()).containsExactly(serials); + } + + @Test + public void processProfilesQueuedDuringInitialization_shouldNotThrowIndexOutOfBoundsException() { +RegionAdvisor.QueuedBucketProfile qbp = +new RegionAdvisor.QueuedBucketProfile(mock(InternalDistributedMember.class), serials, true); +DistributionManager distributionManager = mock(DistributionManager.class); + when(regionAdvisor.getDistributionManager()).thenReturn(distributionManager); +when(distributionManager.isCurrentMember(any())).thenReturn(true); +regionAdvisor.preInitQueue.add(qbp); + +ProxyBucketRegion pbr = mock(ProxyBucketRegion.class); +when(pbr.getBucketAdvisor()).thenReturn(mock(BucketAdvisor.class)); +regionAdvisor.buckets = new ProxyBucketRegion[] {pbr, pbr, pbr}; + +regionAdvisor.processProfilesQueuedDuringInitialization(); Review comment: It definitely couldn't hurt to add it. I feel like this test needs something more, but I'm not sure what. The intent was mainly to show that `processProfilesQueuedDuringInitialization()` wouldn't result in an `ArrayIndexOutOfBoundsException` when given the serials that would be returned if `buckets` were `null` when `getBucketSerials()` is called. What do you think? This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > ArrayIndexOutOfBoundsException may be thrown in > RegionAdvisor.processProfilesQueuedDuringInitialization > --- > > Key: GEODE-8692 > URL: https://issues.apache.org/jira/browse/GEODE-8692 > Pr
[jira] [Commented] (GEODE-8664) JGroups exception is not propagated
[ https://issues.apache.org/jira/browse/GEODE-8664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229540#comment-17229540 ] ASF GitHub Bot commented on GEODE-8664: --- gaussianrecurrence commented on a change in pull request #5725: URL: https://github.com/apache/geode/pull/5725#discussion_r520896345 ## File path: geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java ## @@ -204,4 +207,30 @@ public void testSendToEmptyListIsRejected() throws Exception { distribution.send(emptyList, m); verify(membership, never()).send(any(), any()); } + + @Test + public void testExceptionNestedOnStartConfigError() throws Exception { +Throwable cause = new RuntimeException("Exception cause"); +Throwable exception = new MembershipConfigurationException("Test exception", cause); +doThrow(exception).when(membership).start(); +try { Review comment: Finally went for AssertJ choice. Now the test is more more clear. Thanks! This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > JGroups exception is not propagated > --- > > Key: GEODE-8664 > URL: https://issues.apache.org/jira/browse/GEODE-8664 > Project: Geode > Issue Type: Bug > Components: membership, messaging >Affects Versions: 1.12.0, 1.13.0 >Reporter: Mario Salazar de Torres >Assignee: Mario Salazar de Torres >Priority: Minor > Labels: pull-request-available > Attachments: GEODE-8664.patch > > > *AS A* geode contributor > *I WANT* exceptions thrown in DistributionImpl.start to be propagated > *SO THAT* more information is provided while tackling issues. > > > *Additional information:* > After looking at an issue while starting a locator having to do with > JGroupMessenger I noticed that exceptions from Membership.start are not > correctly propagated in DistributionImpl.start method. > To ilustrate the problem I attach below the reported exception while starting > the locator: > > {noformat} > locator is exiting due to an exception > org.apache.geode.GemFireConfigException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:184) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135) > at > org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3033) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290) > at > org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743) > at > org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388) > at > org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716) > at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623) > at > org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217){noformat} > > Thing is with that kind of information there's no way to know why the problem > is happening, so the idea would be to propagate the exceptions, so it looks > more like this: > {noformat} > locator is exiting due to an exception > org.apache.geode.SystemConnectException: unable to create jgroups channel > at > org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:186) > at > org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:464) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.(ClusterDistributionManager.java:497) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326) > at > org.apache.geode.distributed.internal.InternalDi
[jira] [Commented] (GEODE-8593) Update native client examples to use Builder pattern
[ https://issues.apache.org/jira/browse/GEODE-8593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229551#comment-17229551 ] ASF GitHub Bot commented on GEODE-8593: --- davebarnes97 opened a new pull request #689: URL: https://github.com/apache/geode-native/pull/689 Analog of an update performed previously on the geode-native C++ examples and user guide: - Updated examples to use builder pattern for cache and pool creation - Updated accompanying text in user guide to match examples - Pruned Connection Pool doc to focus on pools, not locators and load-balancing This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Update native client examples to use Builder pattern > > > Key: GEODE-8593 > URL: https://issues.apache.org/jira/browse/GEODE-8593 > Project: Geode > Issue Type: Improvement > Components: docs, native client >Affects Versions: 1.13.0 >Reporter: Dave Barnes >Assignee: Dave Barnes >Priority: Major > Labels: pull-request-available > > For both C++ and .NET examples, the section of code that creates the > connection pool should be improved to better illustrate the Builder pattern. > For example, in the C++ examples, current code is: > ``` > auto cacheFactory = CacheFactory(); > cacheFactory.set("log-level", "none"); > auto cache = cacheFactory.create(); > auto poolFactory = cache.getPoolManager().createFactory(); > > poolFactory.addLocator("localhost", 10334); > auto pool = poolFactory.create("pool"); > ``` > The improved version would be: > ``` > auto cache = CacheFactory() >.set("log-level", "debug") >.set("ssl-enabled", "true") >.set("ssl-truststore", clientTruststore.string()) >.create(); > cache.getPoolManager() > .createFactory() > .addLocator("localhost", 10334) > .create("pool"); > ``` > Similarly for .NET examples. > These doc snippets also appear in the user guides, so they'll need updating > in the docs, as well. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8692) ArrayIndexOutOfBoundsException may be thrown in RegionAdvisor.processProfilesQueuedDuringInitialization
[ https://issues.apache.org/jira/browse/GEODE-8692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229560#comment-17229560 ] ASF GitHub Bot commented on GEODE-8692: --- DonalEvans commented on a change in pull request #5722: URL: https://github.com/apache/geode/pull/5722#discussion_r520928142 ## File path: geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RegionAdvisorJUnitTest.java ## @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.internal.cache.partitioned; + +import static org.apache.geode.distributed.internal.DistributionAdvisor.ILLEGAL_SERIAL; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.Before; +import org.junit.Test; + +import org.apache.geode.cache.PartitionAttributes; +import org.apache.geode.cache.RegionAttributes; +import org.apache.geode.distributed.internal.DistributionManager; +import org.apache.geode.distributed.internal.membership.InternalDistributedMember; +import org.apache.geode.internal.cache.BucketAdvisor; +import org.apache.geode.internal.cache.PartitionedRegion; +import org.apache.geode.internal.cache.ProxyBucketRegion; + +public class RegionAdvisorJUnitTest { + + private PartitionedRegion partitionedRegion; + private RegionAdvisor regionAdvisor; + private final int[] serials = new int[] {ILLEGAL_SERIAL, ILLEGAL_SERIAL, ILLEGAL_SERIAL}; + + @Before + public void setUp() throws Exception { +partitionedRegion = mock(PartitionedRegion.class); +regionAdvisor = new RegionAdvisor(partitionedRegion); + } + + @Test + public void getBucketSerials_shouldReturnAnArrayOfIllegalSerials_whenBucketsAreNull() { +RegionAttributes regionAttributes = mock(RegionAttributes.class); +PartitionAttributes partitionAttributes = mock(PartitionAttributes.class); +when(partitionedRegion.getAttributes()).thenReturn(regionAttributes); + when(regionAttributes.getPartitionAttributes()).thenReturn(partitionAttributes); +when(partitionAttributes.getTotalNumBuckets()).thenReturn(3); + +assertThat(regionAdvisor.getBucketSerials()).containsExactly(serials); + } + + @Test + public void processProfilesQueuedDuringInitialization_shouldNotThrowIndexOutOfBoundsException() { +RegionAdvisor.QueuedBucketProfile qbp = +new RegionAdvisor.QueuedBucketProfile(mock(InternalDistributedMember.class), serials, true); +DistributionManager distributionManager = mock(DistributionManager.class); + when(regionAdvisor.getDistributionManager()).thenReturn(distributionManager); +when(distributionManager.isCurrentMember(any())).thenReturn(true); +regionAdvisor.preInitQueue.add(qbp); + +ProxyBucketRegion pbr = mock(ProxyBucketRegion.class); +when(pbr.getBucketAdvisor()).thenReturn(mock(BucketAdvisor.class)); +regionAdvisor.buckets = new ProxyBucketRegion[] {pbr, pbr, pbr}; + +regionAdvisor.processProfilesQueuedDuringInitialization(); Review comment: I think that just showing there's no `ArrayIndexOutOfBoundsException` is probably a bit weak, since we're explicitly setting the contents of both arrays in the test, so we know that exception isn't possible here. Asserting that the method is behaving as expected for the given conditions (not calling `removeIdWithSerial()` for buckets that correspond to an `ILLEGAL_SERIAL` value) would make for a more meaningful test. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > ArrayIndexOutOfBoundsException may be thrown in > RegionAdvisor.processProfilesQueuedDuringInitialization > --- > > Key: GEODE-8692 > URL: https://issues
[jira] [Commented] (GEODE-5782) LauncherMemberMXBeanIntegrationTest can fail intermittently
[ https://issues.apache.org/jira/browse/GEODE-5782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229563#comment-17229563 ] Geode Integration commented on GEODE-5782: -- Seen in [WindowsCoreIntegrationTestOpenJDK11 #562|https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-main/jobs/WindowsCoreIntegrationTestOpenJDK11/builds/562] ... see [test results|http://files.apachegeode-ci.info/builds/apache-develop-main/1.14.0-build.0475/test-results/integrationTest/1605044248/] or download [artifacts|http://files.apachegeode-ci.info/builds/apache-develop-main/1.14.0-build.0475/test-artifacts/1605044248/windows-coreintegrationtestfiles-OpenJDK11-1.14.0-build.0475.tgz]. > LauncherMemberMXBeanIntegrationTest can fail intermittently > --- > > Key: GEODE-5782 > URL: https://issues.apache.org/jira/browse/GEODE-5782 > Project: Geode > Issue Type: Test > Components: jmx >Affects Versions: 1.9.0 >Reporter: Jens Deppe >Assignee: Jens Deppe >Priority: Major > Labels: pull-request-available > Time Spent: 50m > Remaining Estimate: 0h > > Noticed this failure: > {noformat} > org.apache.geode.distributed.LauncherMemberMXBeanIntegrationTest > > showOSMetrics_reconstructsOSMetricsFromCompositeDataType FAILED > org.junit.ComparisonFailure: expected:<204.[68]> but was:<204.[55]> > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at > org.apache.geode.distributed.LauncherMemberMXBeanIntegrationTest.showOSMetrics_reconstructsOSMetricsFromCompositeDataType(LauncherMemberMXBeanIntegrationTest.java:143) > {noformat} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (GEODE-7727) Geode P2P connection hanging
[ https://issues.apache.org/jira/browse/GEODE-7727?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Owen Nichols updated GEODE-7727: Fix Version/s: 1.12.1 > Geode P2P connection hanging > > > Key: GEODE-7727 > URL: https://issues.apache.org/jira/browse/GEODE-7727 > Project: Geode > Issue Type: Bug >Reporter: Mario Ivanac >Assignee: Mario Ivanac >Priority: Major > Labels: needs-review, pull-request-available > Fix For: 1.12.1, 1.13.0 > > Time Spent: 3.5h > Remaining Estimate: 0h > > {color:#172b4d}Geode P2P handshake reader stops listening to it's socket once > the handshake between 2 peers is established. This seems to be a design > choice. > {color} > {color:#172b4d}The problem is when the connection gets killed (TCP FIN). > Since nothing is listening on the socket, nothing will get that FIN package > and close the connection. The connection is left hanging (CLOSE-WAIT state). > The peers are then unable to establish proper P2P communication later.{color} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (GEODE-6008) CI Failure: ClientServerHostNameVerificationDistributedTest.expectConnectionFailureWhenNoHostNameInServerKey failed
[ https://issues.apache.org/jira/browse/GEODE-6008?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Owen Nichols updated GEODE-6008: Fix Version/s: 1.12.1 > CI Failure: > ClientServerHostNameVerificationDistributedTest.expectConnectionFailureWhenNoHostNameInServerKey > failed > --- > > Key: GEODE-6008 > URL: https://issues.apache.org/jira/browse/GEODE-6008 > Project: Geode > Issue Type: Bug > Components: client/server, membership >Reporter: Jinmei Liao >Priority: Major > Fix For: 1.9.0, 1.12.1, 1.13.0 > > Time Spent: 40m > Remaining Estimate: 0h > > java.lang.AssertionError: Suspicious strings were written to the log during > this run. > {noformat} > Fix the strings or use IgnoredException.addIgnoredException to ignore. > --- > Found suspect string in log4j at line 1872 > y: java.security.cert.CertificateException: No name matching 88deff82cd47 > found > at org.junit.Assert.fail(Assert.java:88) > at > org.apache.geode.test.dunit.standalone.DUnitLauncher.closeAndCheckForSuspects(DUnitLauncher.java:412) > at > org.apache.geode.test.dunit.rules.ClusterStartupRule.after(ClusterStartupRule.java:172) > at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:50) > at org.junit.rules.RunRules.evaluate(RunRules.java:20) > at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) > at org.junit.runners.ParentRunner.run(ParentRunner.java:363) > at > org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:106) > at > org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58) > at > org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38) > at > org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:66) > at > org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51) > at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:566) > at > org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) > at > org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) > at > org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) > at > org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) > at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) > at > org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:117) > at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:566) > at > org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) > at > org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) > at > org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155) > at > org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137) > at > org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404) > at > org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecu
[jira] [Updated] (GEODE-8261) Do not add proxyID to client interest list if it is null
[ https://issues.apache.org/jira/browse/GEODE-8261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Owen Nichols updated GEODE-8261: Fix Version/s: 1.12.1 > Do not add proxyID to client interest list if it is null > > > Key: GEODE-8261 > URL: https://issues.apache.org/jira/browse/GEODE-8261 > Project: Geode > Issue Type: Task > Components: client queues >Reporter: Nabarun Nag >Priority: Major > Fix For: 1.12.1, 1.13.0, 1.14.0 > > > * Sometime during shutdown proxyIDs can be null > * Attempting to add this null value to data structures can cause NPE. For > example the below mentioned code snippets may cause NPE if proxyID is null. > {code:java} > protected void addClientCQsAndInterestList(ClientUpdateMessageImpl msg, > HAEventWrapper haEventWrapper, Map haContainer, String regionName) { > ClientProxyMembershipID proxyID = ((HAContainerWrapper) > haContainer).getProxyID(regionName); > if (proxyID != null) { > if (haEventWrapper.getClientCqs() != null) { > CqNameToOp clientCQ = haEventWrapper.getClientCqs().get(proxyID); > if (clientCQ != null) { > msg.addClientCqs(proxyID, clientCQ); > } > } // This is a remote HAEventWrapper. > // Add new Interested client lists. > ClientUpdateMessageImpl clientMsg = > (ClientUpdateMessageImpl) haEventWrapper.getClientUpdateMessage(); > if (clientMsg != null) { > if (clientMsg.isClientInterestedInUpdates(proxyID)) { > msg.addClientInterestList(proxyID, true); > } else if (clientMsg.isClientInterestedInInvalidates(proxyID)) { > msg.addClientInterestList(proxyID, false); > } > } > } > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (GEODE-8696) Startup of JMX Manager may hang during crash of other members
Kirk Lund created GEODE-8696: Summary: Startup of JMX Manager may hang during crash of other members Key: GEODE-8696 URL: https://issues.apache.org/jira/browse/GEODE-8696 Project: Geode Issue Type: Bug Components: jmx, management Reporter: Kirk Lund _vm_3_thr_3_client2_host2_21145_ hung while synchronized on *0xf6316520*: {noformat} "vm_3_thr_3_client2_host2_21145" #56 daemon prio=5 os_prio=0 tid=0x7f1854002000 nid=0x5326 waiting on condition [0x7f18520e2000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0xf6364030> (a java.util.concurrent.FutureTask) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) at java.util.concurrent.FutureTask.get(FutureTask.java:191) at java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:244) at org.apache.geode.management.internal.FederatingManager.startManagingActivity(FederatingManager.java:256) at org.apache.geode.management.internal.FederatingManager.startManager(FederatingManager.java:121) - locked <0xf6316520> (a org.apache.geode.management.internal.FederatingManager) at org.apache.geode.management.internal.SystemManagementService.startManager(SystemManagementService.java:373) - locked <0xfed91a70> (a java.util.HashMap) at org.apache.geode.management.internal.beans.ManagementAdapter.handleCacheCreation(ManagementAdapter.java:197) at org.apache.geode.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:127) at org.apache.geode.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2089) at org.apache.geode.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:643) at org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1363) at org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:191) - locked <0xe11065f0> (a java.lang.Class for org.apache.geode.internal.cache.GemFireCacheImpl) - locked <0xe1101220> (a java.lang.Class for org.apache.geode.internal.cache.InternalCacheBuilder) at org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:158) - locked <0xe1101220> (a java.lang.Class for org.apache.geode.internal.cache.InternalCacheBuilder) at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142) at hydra.CacheVersionHelper.configureAndCreateCache(CacheVersionHelper.java:51) at hydra.CacheHelper.createCacheWithHttpService(CacheHelper.java:127) - locked <0xfecab060> (a java.lang.Class for hydra.CacheHelper) at hydra.CacheHelper.createCache(CacheHelper.java:87) at splitBrain.NetworkPartitionTest.initialize(NetworkPartitionTest.java:293) at splitBrain.NetworkPartitionTest.initializeInstance(NetworkPartitionTest.java:228) - locked <0xe14a2db0> (a java.lang.Class for splitBrain.NetworkPartitionTest) at splitBrain.NetworkPartitionTest.HydraTask_initialize(NetworkPartitionTest.java:203) - locked <0xe14a2db0> (a java.lang.Class for splitBrain.NetworkPartitionTest) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hydra.MethExecutor.execute(MethExecutor.java:173) at hydra.MethExecutor.execute(MethExecutor.java:141) at hydra.TestTask.execute(TestTask.java:197) at hydra.RemoteTestModule$1.run(RemoteTestModule.java:213) {noformat} _vm_3_thr_3_client2_host2_21145_ is waiting for _FederatingManager1_ to complete: {noformat} "FederatingManager1" #66 daemon prio=5 os_prio=0 tid=0x7f1874327800 nid=0x5331 waiting on condition [0x7f18515d9000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0xf63b2590> (a java.util.concurrent.CountDownLatch$Sync) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1037) at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1328) at java.util.concurrent.CountDownLatch.awa
[jira] [Updated] (GEODE-8696) Startup of JMX Manager may hang during crash of other members
[ https://issues.apache.org/jira/browse/GEODE-8696?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kirk Lund updated GEODE-8696: - Description: The fix for GEODE-7400 removed final from the executorService field to introduce a Supplier. I think this hang was caused by adding synchronized to FederatingManager.executeTask instead of making executorService a volatile field. _vm_3_thr_3_client2_host2_21145_ hung while synchronized on *0xf6316520*: {noformat} "vm_3_thr_3_client2_host2_21145" #56 daemon prio=5 os_prio=0 tid=0x7f1854002000 nid=0x5326 waiting on condition [0x7f18520e2000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0xf6364030> (a java.util.concurrent.FutureTask) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) at java.util.concurrent.FutureTask.get(FutureTask.java:191) at java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:244) at org.apache.geode.management.internal.FederatingManager.startManagingActivity(FederatingManager.java:256) at org.apache.geode.management.internal.FederatingManager.startManager(FederatingManager.java:121) - locked <0xf6316520> (a org.apache.geode.management.internal.FederatingManager) at org.apache.geode.management.internal.SystemManagementService.startManager(SystemManagementService.java:373) - locked <0xfed91a70> (a java.util.HashMap) at org.apache.geode.management.internal.beans.ManagementAdapter.handleCacheCreation(ManagementAdapter.java:197) at org.apache.geode.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:127) at org.apache.geode.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2089) at org.apache.geode.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:643) at org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1363) at org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:191) - locked <0xe11065f0> (a java.lang.Class for org.apache.geode.internal.cache.GemFireCacheImpl) - locked <0xe1101220> (a java.lang.Class for org.apache.geode.internal.cache.InternalCacheBuilder) at org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:158) - locked <0xe1101220> (a java.lang.Class for org.apache.geode.internal.cache.InternalCacheBuilder) at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142) at hydra.CacheVersionHelper.configureAndCreateCache(CacheVersionHelper.java:51) at hydra.CacheHelper.createCacheWithHttpService(CacheHelper.java:127) - locked <0xfecab060> (a java.lang.Class for hydra.CacheHelper) at hydra.CacheHelper.createCache(CacheHelper.java:87) at splitBrain.NetworkPartitionTest.initialize(NetworkPartitionTest.java:293) at splitBrain.NetworkPartitionTest.initializeInstance(NetworkPartitionTest.java:228) - locked <0xe14a2db0> (a java.lang.Class for splitBrain.NetworkPartitionTest) at splitBrain.NetworkPartitionTest.HydraTask_initialize(NetworkPartitionTest.java:203) - locked <0xe14a2db0> (a java.lang.Class for splitBrain.NetworkPartitionTest) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hydra.MethExecutor.execute(MethExecutor.java:173) at hydra.MethExecutor.execute(MethExecutor.java:141) at hydra.TestTask.execute(TestTask.java:197) at hydra.RemoteTestModule$1.run(RemoteTestModule.java:213) {noformat} _vm_3_thr_3_client2_host2_21145_ is waiting for _FederatingManager1_ to complete: {noformat} "FederatingManager1" #66 daemon prio=5 os_prio=0 tid=0x7f1874327800 nid=0x5331 waiting on condition [0x7f18515d9000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0xf63b2590> (a java.util.concurrent.CountDownLatch$Sync) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1037) at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer
[jira] [Updated] (GEODE-8696) Startup of JMX Manager may hang during crash of other members
[ https://issues.apache.org/jira/browse/GEODE-8696?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kirk Lund updated GEODE-8696: - Labels: GeodeOperationAPI (was: ) > Startup of JMX Manager may hang during crash of other members > - > > Key: GEODE-8696 > URL: https://issues.apache.org/jira/browse/GEODE-8696 > Project: Geode > Issue Type: Bug > Components: jmx, management >Reporter: Kirk Lund >Priority: Major > Labels: GeodeOperationAPI > > The fix for GEODE-7400 removed final from the executorService field to > introduce a Supplier. I think this hang was caused by adding > synchronized to FederatingManager.executeTask instead of making > executorService a volatile field. > _vm_3_thr_3_client2_host2_21145_ hung while synchronized on > *0xf6316520*: > {noformat} > "vm_3_thr_3_client2_host2_21145" #56 daemon prio=5 os_prio=0 > tid=0x7f1854002000 nid=0x5326 waiting on condition [0x7f18520e2000] >java.lang.Thread.State: WAITING (parking) > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <0xf6364030> (a > java.util.concurrent.FutureTask) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) > at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) > at java.util.concurrent.FutureTask.get(FutureTask.java:191) > at > java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:244) > at > org.apache.geode.management.internal.FederatingManager.startManagingActivity(FederatingManager.java:256) > at > org.apache.geode.management.internal.FederatingManager.startManager(FederatingManager.java:121) > - locked <0xf6316520> (a > org.apache.geode.management.internal.FederatingManager) > at > org.apache.geode.management.internal.SystemManagementService.startManager(SystemManagementService.java:373) > - locked <0xfed91a70> (a java.util.HashMap) > at > org.apache.geode.management.internal.beans.ManagementAdapter.handleCacheCreation(ManagementAdapter.java:197) > at > org.apache.geode.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:127) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2089) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:643) > at > org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1363) > at > org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:191) > - locked <0xe11065f0> (a java.lang.Class for > org.apache.geode.internal.cache.GemFireCacheImpl) > - locked <0xe1101220> (a java.lang.Class for > org.apache.geode.internal.cache.InternalCacheBuilder) > at > org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:158) > - locked <0xe1101220> (a java.lang.Class for > org.apache.geode.internal.cache.InternalCacheBuilder) > at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142) > at > hydra.CacheVersionHelper.configureAndCreateCache(CacheVersionHelper.java:51) > at hydra.CacheHelper.createCacheWithHttpService(CacheHelper.java:127) > - locked <0xfecab060> (a java.lang.Class for > hydra.CacheHelper) > at hydra.CacheHelper.createCache(CacheHelper.java:87) > at > splitBrain.NetworkPartitionTest.initialize(NetworkPartitionTest.java:293) > at > splitBrain.NetworkPartitionTest.initializeInstance(NetworkPartitionTest.java:228) > - locked <0xe14a2db0> (a java.lang.Class for > splitBrain.NetworkPartitionTest) > at > splitBrain.NetworkPartitionTest.HydraTask_initialize(NetworkPartitionTest.java:203) > - locked <0xe14a2db0> (a java.lang.Class for > splitBrain.NetworkPartitionTest) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at hydra.MethExecutor.execute(MethExecutor.java:173) > at hydra.MethExecutor.execute(MethExecutor.java:141) > at hydra.TestTask.execute(TestTask.java:197) > at hydra.RemoteTestModule$1.run(RemoteTestModule.java:213) > {noformat} > _vm_3_thr_3_client2_host2_21145_ is waiting for _FederatingManager1_ to > complete: > {noformat} > "FederatingManager1" #66 dae
[jira] [Assigned] (GEODE-8696) Startup of JMX Manager may hang during crash of other members
[ https://issues.apache.org/jira/browse/GEODE-8696?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kirk Lund reassigned GEODE-8696: Assignee: Kirk Lund > Startup of JMX Manager may hang during crash of other members > - > > Key: GEODE-8696 > URL: https://issues.apache.org/jira/browse/GEODE-8696 > Project: Geode > Issue Type: Bug > Components: jmx, management >Reporter: Kirk Lund >Assignee: Kirk Lund >Priority: Major > Labels: GeodeOperationAPI > > The fix for GEODE-7400 removed final from the executorService field to > introduce a Supplier. I think this hang was caused by adding > synchronized to FederatingManager.executeTask instead of making > executorService a volatile field. > _vm_3_thr_3_client2_host2_21145_ hung while synchronized on > *0xf6316520*: > {noformat} > "vm_3_thr_3_client2_host2_21145" #56 daemon prio=5 os_prio=0 > tid=0x7f1854002000 nid=0x5326 waiting on condition [0x7f18520e2000] >java.lang.Thread.State: WAITING (parking) > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <0xf6364030> (a > java.util.concurrent.FutureTask) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) > at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) > at java.util.concurrent.FutureTask.get(FutureTask.java:191) > at > java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:244) > at > org.apache.geode.management.internal.FederatingManager.startManagingActivity(FederatingManager.java:256) > at > org.apache.geode.management.internal.FederatingManager.startManager(FederatingManager.java:121) > - locked <0xf6316520> (a > org.apache.geode.management.internal.FederatingManager) > at > org.apache.geode.management.internal.SystemManagementService.startManager(SystemManagementService.java:373) > - locked <0xfed91a70> (a java.util.HashMap) > at > org.apache.geode.management.internal.beans.ManagementAdapter.handleCacheCreation(ManagementAdapter.java:197) > at > org.apache.geode.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:127) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2089) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:643) > at > org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1363) > at > org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:191) > - locked <0xe11065f0> (a java.lang.Class for > org.apache.geode.internal.cache.GemFireCacheImpl) > - locked <0xe1101220> (a java.lang.Class for > org.apache.geode.internal.cache.InternalCacheBuilder) > at > org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:158) > - locked <0xe1101220> (a java.lang.Class for > org.apache.geode.internal.cache.InternalCacheBuilder) > at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142) > at > hydra.CacheVersionHelper.configureAndCreateCache(CacheVersionHelper.java:51) > at hydra.CacheHelper.createCacheWithHttpService(CacheHelper.java:127) > - locked <0xfecab060> (a java.lang.Class for > hydra.CacheHelper) > at hydra.CacheHelper.createCache(CacheHelper.java:87) > at > splitBrain.NetworkPartitionTest.initialize(NetworkPartitionTest.java:293) > at > splitBrain.NetworkPartitionTest.initializeInstance(NetworkPartitionTest.java:228) > - locked <0xe14a2db0> (a java.lang.Class for > splitBrain.NetworkPartitionTest) > at > splitBrain.NetworkPartitionTest.HydraTask_initialize(NetworkPartitionTest.java:203) > - locked <0xe14a2db0> (a java.lang.Class for > splitBrain.NetworkPartitionTest) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at hydra.MethExecutor.execute(MethExecutor.java:173) > at hydra.MethExecutor.execute(MethExecutor.java:141) > at hydra.TestTask.execute(TestTask.java:197) > at hydra.RemoteTestModule$1.run(RemoteTestModule.java:213) > {noformat} > _vm_3_thr_3_client2_host2_21145_ is waiting for _FederatingManager1_ to > complete: > {noformat} > "Fe
[jira] [Updated] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Donal Evans updated GEODE-8686: --- Fix Version/s: 1.13.1 1.12.1 > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8696) Startup of JMX Manager may hang during crash of other members
[ https://issues.apache.org/jira/browse/GEODE-8696?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229578#comment-17229578 ] ASF GitHub Bot commented on GEODE-8696: --- kirklund opened a new pull request #5728: URL: https://github.com/apache/geode/pull/5728 This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Startup of JMX Manager may hang during crash of other members > - > > Key: GEODE-8696 > URL: https://issues.apache.org/jira/browse/GEODE-8696 > Project: Geode > Issue Type: Bug > Components: jmx, management >Reporter: Kirk Lund >Assignee: Kirk Lund >Priority: Major > Labels: GeodeOperationAPI > > The fix for GEODE-7400 removed final from the executorService field to > introduce a Supplier. I think this hang was caused by adding > synchronized to FederatingManager.executeTask instead of making > executorService a volatile field. > _vm_3_thr_3_client2_host2_21145_ hung while synchronized on > *0xf6316520*: > {noformat} > "vm_3_thr_3_client2_host2_21145" #56 daemon prio=5 os_prio=0 > tid=0x7f1854002000 nid=0x5326 waiting on condition [0x7f18520e2000] >java.lang.Thread.State: WAITING (parking) > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <0xf6364030> (a > java.util.concurrent.FutureTask) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) > at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) > at java.util.concurrent.FutureTask.get(FutureTask.java:191) > at > java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:244) > at > org.apache.geode.management.internal.FederatingManager.startManagingActivity(FederatingManager.java:256) > at > org.apache.geode.management.internal.FederatingManager.startManager(FederatingManager.java:121) > - locked <0xf6316520> (a > org.apache.geode.management.internal.FederatingManager) > at > org.apache.geode.management.internal.SystemManagementService.startManager(SystemManagementService.java:373) > - locked <0xfed91a70> (a java.util.HashMap) > at > org.apache.geode.management.internal.beans.ManagementAdapter.handleCacheCreation(ManagementAdapter.java:197) > at > org.apache.geode.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:127) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2089) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:643) > at > org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1363) > at > org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:191) > - locked <0xe11065f0> (a java.lang.Class for > org.apache.geode.internal.cache.GemFireCacheImpl) > - locked <0xe1101220> (a java.lang.Class for > org.apache.geode.internal.cache.InternalCacheBuilder) > at > org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:158) > - locked <0xe1101220> (a java.lang.Class for > org.apache.geode.internal.cache.InternalCacheBuilder) > at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142) > at > hydra.CacheVersionHelper.configureAndCreateCache(CacheVersionHelper.java:51) > at hydra.CacheHelper.createCacheWithHttpService(CacheHelper.java:127) > - locked <0xfecab060> (a java.lang.Class for > hydra.CacheHelper) > at hydra.CacheHelper.createCache(CacheHelper.java:87) > at > splitBrain.NetworkPartitionTest.initialize(NetworkPartitionTest.java:293) > at > splitBrain.NetworkPartitionTest.initializeInstance(NetworkPartitionTest.java:228) > - locked <0xe14a2db0> (a java.lang.Class for > splitBrain.NetworkPartitionTest) > at > splitBrain.NetworkPartitionTest.HydraTask_initialize(NetworkPartitionTest.java:203) > - locked <0xe14a2db0> (a java.lang.Class for > splitBrain.NetworkPartitionTest) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod
[jira] [Updated] (GEODE-8696) Startup of JMX Manager may hang during crash of other members
[ https://issues.apache.org/jira/browse/GEODE-8696?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] ASF GitHub Bot updated GEODE-8696: -- Labels: GeodeOperationAPI pull-request-available (was: GeodeOperationAPI) > Startup of JMX Manager may hang during crash of other members > - > > Key: GEODE-8696 > URL: https://issues.apache.org/jira/browse/GEODE-8696 > Project: Geode > Issue Type: Bug > Components: jmx, management >Reporter: Kirk Lund >Assignee: Kirk Lund >Priority: Major > Labels: GeodeOperationAPI, pull-request-available > > The fix for GEODE-7400 removed final from the executorService field to > introduce a Supplier. I think this hang was caused by adding > synchronized to FederatingManager.executeTask instead of making > executorService a volatile field. > _vm_3_thr_3_client2_host2_21145_ hung while synchronized on > *0xf6316520*: > {noformat} > "vm_3_thr_3_client2_host2_21145" #56 daemon prio=5 os_prio=0 > tid=0x7f1854002000 nid=0x5326 waiting on condition [0x7f18520e2000] >java.lang.Thread.State: WAITING (parking) > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <0xf6364030> (a > java.util.concurrent.FutureTask) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) > at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) > at java.util.concurrent.FutureTask.get(FutureTask.java:191) > at > java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:244) > at > org.apache.geode.management.internal.FederatingManager.startManagingActivity(FederatingManager.java:256) > at > org.apache.geode.management.internal.FederatingManager.startManager(FederatingManager.java:121) > - locked <0xf6316520> (a > org.apache.geode.management.internal.FederatingManager) > at > org.apache.geode.management.internal.SystemManagementService.startManager(SystemManagementService.java:373) > - locked <0xfed91a70> (a java.util.HashMap) > at > org.apache.geode.management.internal.beans.ManagementAdapter.handleCacheCreation(ManagementAdapter.java:197) > at > org.apache.geode.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:127) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2089) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:643) > at > org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1363) > at > org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:191) > - locked <0xe11065f0> (a java.lang.Class for > org.apache.geode.internal.cache.GemFireCacheImpl) > - locked <0xe1101220> (a java.lang.Class for > org.apache.geode.internal.cache.InternalCacheBuilder) > at > org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:158) > - locked <0xe1101220> (a java.lang.Class for > org.apache.geode.internal.cache.InternalCacheBuilder) > at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142) > at > hydra.CacheVersionHelper.configureAndCreateCache(CacheVersionHelper.java:51) > at hydra.CacheHelper.createCacheWithHttpService(CacheHelper.java:127) > - locked <0xfecab060> (a java.lang.Class for > hydra.CacheHelper) > at hydra.CacheHelper.createCache(CacheHelper.java:87) > at > splitBrain.NetworkPartitionTest.initialize(NetworkPartitionTest.java:293) > at > splitBrain.NetworkPartitionTest.initializeInstance(NetworkPartitionTest.java:228) > - locked <0xe14a2db0> (a java.lang.Class for > splitBrain.NetworkPartitionTest) > at > splitBrain.NetworkPartitionTest.HydraTask_initialize(NetworkPartitionTest.java:203) > - locked <0xe14a2db0> (a java.lang.Class for > splitBrain.NetworkPartitionTest) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at hydra.MethExecutor.execute(MethExecutor.java:173) > at hydra.MethExecutor.execute(MethExecutor.java:141) > at hydra.TestTask.execute(TestTask.java:197) > at hydra.RemoteTestModule$1.run(RemoteTestModule.java:213) > {noformat} > _vm_3_thr_3_client2_h
[jira] [Updated] (GEODE-8536) StackOverflow can occur when Lucene IndexWriter is unable to be created
[ https://issues.apache.org/jira/browse/GEODE-8536?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Donal Evans updated GEODE-8536: --- Fix Version/s: 1.13.1 1.12.1 > StackOverflow can occur when Lucene IndexWriter is unable to be created > --- > > Key: GEODE-8536 > URL: https://issues.apache.org/jira/browse/GEODE-8536 > Project: Geode > Issue Type: Bug > Components: functions, lucene >Affects Versions: 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > If, during a call to IndexRepositoryFactory.computeIndexRepository(), an > IOException is encountered when attempting to construct an IndexWriter, the > function retry logic will reattempt the execution. This allows transient > exceptions caused by concurrent modification of the fileAndChunk region to be > ignored and subsequent executions to succeed (see GEODE-7703). However, if > the IOException is consistently thrown, the infinitely retrying function can > cause a StackOverflow: > {noformat} > java.lang.StackOverflowError > at > org.apache.geode.SystemFailure.startWatchDog(SystemFailure.java:320) > at > org.apache.geode.SystemFailure.notifyWatchDog(SystemFailure.java:758) > at org.apache.geode.SystemFailure.setFailure(SystemFailure.java:813) > at > org.apache.geode.SystemFailure.initiateFailure(SystemFailure.java:790) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2251) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2031) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839) > at > org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.toData(PartitionedRegionFunctionStreamingMessage.java:192) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:213) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:137) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1484) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:247) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:306) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:182) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:511) > at > org.apache.geode.distributed.internal.DistributionImpl.directChannelSend(DistributionImpl.java:346) > at > org.apache.geode.distributed.internal.DistributionImpl.send(DistributionImpl.java:291) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2058) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:1986) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2023) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1083) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionResultWaiter.getPartitionedDataFrom(PartitionedRegionFunctionResultWaiter.java:89) > at > org.apache.geode.internal.cache.PartitionedRegion.executeOnAllBuckets(PartitionedRegion.java:4079) > at > org.apache.geode.internal.cache.PartitionedRegion.executeFunction(PartitionedRegion.java:3583) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionExecutor.executeFunction(PartitionedRegionFunctionExecutor.java:220) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:376) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:359) > at > org.apache.geode.internal.cache.execute.LocalResultCollectorImpl.getResultInternal(LocalResultCollectorImpl.java:139) > at > org.apache.geode.internal.cache.execute.ResultCollectorHolder.getResult(ResultCollectorHolder.java:53) > at > org.apache.geode.internal.cache.execute.LocalResultCollectorImpl.getResult(LocalResultCollectorImpl.java:112) > at > org.apache.geode.internal.cache.partitioned.PRFunctionStreamingResultCollector.getResultInternal(PRFunctionStreamingResul
[jira] [Commented] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229580#comment-17229580 ] ASF subversion and git services commented on GEODE-8686: Commit 7ef68026ee7dea9148eacb79976bf22cd8558fdf in geode's branch refs/heads/support/1.12 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=7ef6802 ] GEODE-8686: Prevent potential deadlock during GII and tombstone GC (#5707) - Do not call AbstractRegionMap.removeTombstone() outside of TombstoneService class - Add test to confirm that tombstones are correctly scheduled and collected with this change Authored-by: Donal Evans (cherry picked from commit 70b1ee8b98f1458620539c4a962e82f8ef35707b) > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8536) StackOverflow can occur when Lucene IndexWriter is unable to be created
[ https://issues.apache.org/jira/browse/GEODE-8536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229579#comment-17229579 ] ASF subversion and git services commented on GEODE-8536: Commit e3ea0ad8b33f3954e813d5e97bcaee018ad6a2c5 in geode's branch refs/heads/support/1.12 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=e3ea0ad ] GEODE-8536: Allow limited retries when creating Lucene IndexWriter (#5659) Authored-by: Donal Evans (cherry picked from commit 872718ec9d119e332c328caf4493bdf8e8a83dcf) > StackOverflow can occur when Lucene IndexWriter is unable to be created > --- > > Key: GEODE-8536 > URL: https://issues.apache.org/jira/browse/GEODE-8536 > Project: Geode > Issue Type: Bug > Components: functions, lucene >Affects Versions: 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > If, during a call to IndexRepositoryFactory.computeIndexRepository(), an > IOException is encountered when attempting to construct an IndexWriter, the > function retry logic will reattempt the execution. This allows transient > exceptions caused by concurrent modification of the fileAndChunk region to be > ignored and subsequent executions to succeed (see GEODE-7703). However, if > the IOException is consistently thrown, the infinitely retrying function can > cause a StackOverflow: > {noformat} > java.lang.StackOverflowError > at > org.apache.geode.SystemFailure.startWatchDog(SystemFailure.java:320) > at > org.apache.geode.SystemFailure.notifyWatchDog(SystemFailure.java:758) > at org.apache.geode.SystemFailure.setFailure(SystemFailure.java:813) > at > org.apache.geode.SystemFailure.initiateFailure(SystemFailure.java:790) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2251) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2031) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839) > at > org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.toData(PartitionedRegionFunctionStreamingMessage.java:192) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:213) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:137) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1484) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:247) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:306) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:182) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:511) > at > org.apache.geode.distributed.internal.DistributionImpl.directChannelSend(DistributionImpl.java:346) > at > org.apache.geode.distributed.internal.DistributionImpl.send(DistributionImpl.java:291) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2058) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:1986) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2023) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1083) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionResultWaiter.getPartitionedDataFrom(PartitionedRegionFunctionResultWaiter.java:89) > at > org.apache.geode.internal.cache.PartitionedRegion.executeOnAllBuckets(PartitionedRegion.java:4079) > at > org.apache.geode.internal.cache.PartitionedRegion.executeFunction(PartitionedRegion.java:3583) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionExecutor.executeFunction(PartitionedRegionFunctionExecutor.java:220) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:376) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:359) > at > org.apache.geode.internal.cache.execute.LocalResultCollectorImpl.getResultInternal(LocalResultCollectorImpl.jav
[jira] [Commented] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229582#comment-17229582 ] ASF subversion and git services commented on GEODE-8686: Commit 7ef68026ee7dea9148eacb79976bf22cd8558fdf in geode's branch refs/heads/support/1.12 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=7ef6802 ] GEODE-8686: Prevent potential deadlock during GII and tombstone GC (#5707) - Do not call AbstractRegionMap.removeTombstone() outside of TombstoneService class - Add test to confirm that tombstones are correctly scheduled and collected with this change Authored-by: Donal Evans (cherry picked from commit 70b1ee8b98f1458620539c4a962e82f8ef35707b) > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8536) StackOverflow can occur when Lucene IndexWriter is unable to be created
[ https://issues.apache.org/jira/browse/GEODE-8536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229581#comment-17229581 ] ASF subversion and git services commented on GEODE-8536: Commit e3ea0ad8b33f3954e813d5e97bcaee018ad6a2c5 in geode's branch refs/heads/support/1.12 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=e3ea0ad ] GEODE-8536: Allow limited retries when creating Lucene IndexWriter (#5659) Authored-by: Donal Evans (cherry picked from commit 872718ec9d119e332c328caf4493bdf8e8a83dcf) > StackOverflow can occur when Lucene IndexWriter is unable to be created > --- > > Key: GEODE-8536 > URL: https://issues.apache.org/jira/browse/GEODE-8536 > Project: Geode > Issue Type: Bug > Components: functions, lucene >Affects Versions: 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > If, during a call to IndexRepositoryFactory.computeIndexRepository(), an > IOException is encountered when attempting to construct an IndexWriter, the > function retry logic will reattempt the execution. This allows transient > exceptions caused by concurrent modification of the fileAndChunk region to be > ignored and subsequent executions to succeed (see GEODE-7703). However, if > the IOException is consistently thrown, the infinitely retrying function can > cause a StackOverflow: > {noformat} > java.lang.StackOverflowError > at > org.apache.geode.SystemFailure.startWatchDog(SystemFailure.java:320) > at > org.apache.geode.SystemFailure.notifyWatchDog(SystemFailure.java:758) > at org.apache.geode.SystemFailure.setFailure(SystemFailure.java:813) > at > org.apache.geode.SystemFailure.initiateFailure(SystemFailure.java:790) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2251) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2031) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839) > at > org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.toData(PartitionedRegionFunctionStreamingMessage.java:192) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:213) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:137) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1484) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:247) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:306) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:182) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:511) > at > org.apache.geode.distributed.internal.DistributionImpl.directChannelSend(DistributionImpl.java:346) > at > org.apache.geode.distributed.internal.DistributionImpl.send(DistributionImpl.java:291) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2058) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:1986) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2023) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1083) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionResultWaiter.getPartitionedDataFrom(PartitionedRegionFunctionResultWaiter.java:89) > at > org.apache.geode.internal.cache.PartitionedRegion.executeOnAllBuckets(PartitionedRegion.java:4079) > at > org.apache.geode.internal.cache.PartitionedRegion.executeFunction(PartitionedRegion.java:3583) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionExecutor.executeFunction(PartitionedRegionFunctionExecutor.java:220) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:376) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:359) > at > org.apache.geode.internal.cache.execute.LocalResultCollectorImpl.getResultInternal(LocalResultCollectorImpl.jav
[jira] [Commented] (GEODE-8536) StackOverflow can occur when Lucene IndexWriter is unable to be created
[ https://issues.apache.org/jira/browse/GEODE-8536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229584#comment-17229584 ] ASF subversion and git services commented on GEODE-8536: Commit 0f9d6b22ec45b9238bec268161eadeb3647ddb49 in geode's branch refs/heads/support/1.13 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=0f9d6b2 ] GEODE-8536: Allow limited retries when creating Lucene IndexWriter (#5659) Authored-by: Donal Evans (cherry picked from commit 872718ec9d119e332c328caf4493bdf8e8a83dcf) > StackOverflow can occur when Lucene IndexWriter is unable to be created > --- > > Key: GEODE-8536 > URL: https://issues.apache.org/jira/browse/GEODE-8536 > Project: Geode > Issue Type: Bug > Components: functions, lucene >Affects Versions: 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > If, during a call to IndexRepositoryFactory.computeIndexRepository(), an > IOException is encountered when attempting to construct an IndexWriter, the > function retry logic will reattempt the execution. This allows transient > exceptions caused by concurrent modification of the fileAndChunk region to be > ignored and subsequent executions to succeed (see GEODE-7703). However, if > the IOException is consistently thrown, the infinitely retrying function can > cause a StackOverflow: > {noformat} > java.lang.StackOverflowError > at > org.apache.geode.SystemFailure.startWatchDog(SystemFailure.java:320) > at > org.apache.geode.SystemFailure.notifyWatchDog(SystemFailure.java:758) > at org.apache.geode.SystemFailure.setFailure(SystemFailure.java:813) > at > org.apache.geode.SystemFailure.initiateFailure(SystemFailure.java:790) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2251) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2031) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839) > at > org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.toData(PartitionedRegionFunctionStreamingMessage.java:192) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:213) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:137) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1484) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:247) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:306) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:182) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:511) > at > org.apache.geode.distributed.internal.DistributionImpl.directChannelSend(DistributionImpl.java:346) > at > org.apache.geode.distributed.internal.DistributionImpl.send(DistributionImpl.java:291) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2058) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:1986) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2023) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1083) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionResultWaiter.getPartitionedDataFrom(PartitionedRegionFunctionResultWaiter.java:89) > at > org.apache.geode.internal.cache.PartitionedRegion.executeOnAllBuckets(PartitionedRegion.java:4079) > at > org.apache.geode.internal.cache.PartitionedRegion.executeFunction(PartitionedRegion.java:3583) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionExecutor.executeFunction(PartitionedRegionFunctionExecutor.java:220) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:376) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:359) > at > org.apache.geode.internal.cache.execute.LocalResultCollectorImpl.getResultInternal(LocalResultCollectorImpl.jav
[jira] [Commented] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229587#comment-17229587 ] ASF subversion and git services commented on GEODE-8686: Commit 7ef68026ee7dea9148eacb79976bf22cd8558fdf in geode's branch refs/heads/support/1.12 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=7ef6802 ] GEODE-8686: Prevent potential deadlock during GII and tombstone GC (#5707) - Do not call AbstractRegionMap.removeTombstone() outside of TombstoneService class - Add test to confirm that tombstones are correctly scheduled and collected with this change Authored-by: Donal Evans (cherry picked from commit 70b1ee8b98f1458620539c4a962e82f8ef35707b) > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8536) StackOverflow can occur when Lucene IndexWriter is unable to be created
[ https://issues.apache.org/jira/browse/GEODE-8536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229586#comment-17229586 ] ASF subversion and git services commented on GEODE-8536: Commit e3ea0ad8b33f3954e813d5e97bcaee018ad6a2c5 in geode's branch refs/heads/support/1.12 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=e3ea0ad ] GEODE-8536: Allow limited retries when creating Lucene IndexWriter (#5659) Authored-by: Donal Evans (cherry picked from commit 872718ec9d119e332c328caf4493bdf8e8a83dcf) > StackOverflow can occur when Lucene IndexWriter is unable to be created > --- > > Key: GEODE-8536 > URL: https://issues.apache.org/jira/browse/GEODE-8536 > Project: Geode > Issue Type: Bug > Components: functions, lucene >Affects Versions: 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > If, during a call to IndexRepositoryFactory.computeIndexRepository(), an > IOException is encountered when attempting to construct an IndexWriter, the > function retry logic will reattempt the execution. This allows transient > exceptions caused by concurrent modification of the fileAndChunk region to be > ignored and subsequent executions to succeed (see GEODE-7703). However, if > the IOException is consistently thrown, the infinitely retrying function can > cause a StackOverflow: > {noformat} > java.lang.StackOverflowError > at > org.apache.geode.SystemFailure.startWatchDog(SystemFailure.java:320) > at > org.apache.geode.SystemFailure.notifyWatchDog(SystemFailure.java:758) > at org.apache.geode.SystemFailure.setFailure(SystemFailure.java:813) > at > org.apache.geode.SystemFailure.initiateFailure(SystemFailure.java:790) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2251) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2031) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839) > at > org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.toData(PartitionedRegionFunctionStreamingMessage.java:192) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:213) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:137) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1484) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:247) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:306) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:182) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:511) > at > org.apache.geode.distributed.internal.DistributionImpl.directChannelSend(DistributionImpl.java:346) > at > org.apache.geode.distributed.internal.DistributionImpl.send(DistributionImpl.java:291) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2058) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:1986) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2023) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1083) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionResultWaiter.getPartitionedDataFrom(PartitionedRegionFunctionResultWaiter.java:89) > at > org.apache.geode.internal.cache.PartitionedRegion.executeOnAllBuckets(PartitionedRegion.java:4079) > at > org.apache.geode.internal.cache.PartitionedRegion.executeFunction(PartitionedRegion.java:3583) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionExecutor.executeFunction(PartitionedRegionFunctionExecutor.java:220) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:376) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:359) > at > org.apache.geode.internal.cache.execute.LocalResultCollectorImpl.getResultInternal(LocalResultCollectorImpl.jav
[jira] [Commented] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229585#comment-17229585 ] ASF subversion and git services commented on GEODE-8686: Commit aaa3d13e9c604806624e43ba86d959473226a674 in geode's branch refs/heads/support/1.13 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=aaa3d13 ] GEODE-8686: Prevent potential deadlock during GII and tombstone GC (#5707) - Do not call AbstractRegionMap.removeTombstone() outside of TombstoneService class - Add test to confirm that tombstones are correctly scheduled and collected with this change Authored-by: Donal Evans (cherry picked from commit 70b1ee8b98f1458620539c4a962e82f8ef35707b) > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8536) StackOverflow can occur when Lucene IndexWriter is unable to be created
[ https://issues.apache.org/jira/browse/GEODE-8536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229588#comment-17229588 ] ASF subversion and git services commented on GEODE-8536: Commit 0f9d6b22ec45b9238bec268161eadeb3647ddb49 in geode's branch refs/heads/support/1.13 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=0f9d6b2 ] GEODE-8536: Allow limited retries when creating Lucene IndexWriter (#5659) Authored-by: Donal Evans (cherry picked from commit 872718ec9d119e332c328caf4493bdf8e8a83dcf) > StackOverflow can occur when Lucene IndexWriter is unable to be created > --- > > Key: GEODE-8536 > URL: https://issues.apache.org/jira/browse/GEODE-8536 > Project: Geode > Issue Type: Bug > Components: functions, lucene >Affects Versions: 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > If, during a call to IndexRepositoryFactory.computeIndexRepository(), an > IOException is encountered when attempting to construct an IndexWriter, the > function retry logic will reattempt the execution. This allows transient > exceptions caused by concurrent modification of the fileAndChunk region to be > ignored and subsequent executions to succeed (see GEODE-7703). However, if > the IOException is consistently thrown, the infinitely retrying function can > cause a StackOverflow: > {noformat} > java.lang.StackOverflowError > at > org.apache.geode.SystemFailure.startWatchDog(SystemFailure.java:320) > at > org.apache.geode.SystemFailure.notifyWatchDog(SystemFailure.java:758) > at org.apache.geode.SystemFailure.setFailure(SystemFailure.java:813) > at > org.apache.geode.SystemFailure.initiateFailure(SystemFailure.java:790) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2251) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2031) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839) > at > org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.toData(PartitionedRegionFunctionStreamingMessage.java:192) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:213) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:137) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1484) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:247) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:306) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:182) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:511) > at > org.apache.geode.distributed.internal.DistributionImpl.directChannelSend(DistributionImpl.java:346) > at > org.apache.geode.distributed.internal.DistributionImpl.send(DistributionImpl.java:291) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2058) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:1986) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2023) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1083) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionResultWaiter.getPartitionedDataFrom(PartitionedRegionFunctionResultWaiter.java:89) > at > org.apache.geode.internal.cache.PartitionedRegion.executeOnAllBuckets(PartitionedRegion.java:4079) > at > org.apache.geode.internal.cache.PartitionedRegion.executeFunction(PartitionedRegion.java:3583) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionExecutor.executeFunction(PartitionedRegionFunctionExecutor.java:220) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:376) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:359) > at > org.apache.geode.internal.cache.execute.LocalResultCollectorImpl.getResultInternal(LocalResultCollectorImpl.jav
[jira] [Commented] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229589#comment-17229589 ] ASF subversion and git services commented on GEODE-8686: Commit aaa3d13e9c604806624e43ba86d959473226a674 in geode's branch refs/heads/support/1.13 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=aaa3d13 ] GEODE-8686: Prevent potential deadlock during GII and tombstone GC (#5707) - Do not call AbstractRegionMap.removeTombstone() outside of TombstoneService class - Add test to confirm that tombstones are correctly scheduled and collected with this change Authored-by: Donal Evans (cherry picked from commit 70b1ee8b98f1458620539c4a962e82f8ef35707b) > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229591#comment-17229591 ] ASF subversion and git services commented on GEODE-8686: Commit aaa3d13e9c604806624e43ba86d959473226a674 in geode's branch refs/heads/support/1.13 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=aaa3d13 ] GEODE-8686: Prevent potential deadlock during GII and tombstone GC (#5707) - Do not call AbstractRegionMap.removeTombstone() outside of TombstoneService class - Add test to confirm that tombstones are correctly scheduled and collected with this change Authored-by: Donal Evans (cherry picked from commit 70b1ee8b98f1458620539c4a962e82f8ef35707b) > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8536) StackOverflow can occur when Lucene IndexWriter is unable to be created
[ https://issues.apache.org/jira/browse/GEODE-8536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229590#comment-17229590 ] ASF subversion and git services commented on GEODE-8536: Commit 0f9d6b22ec45b9238bec268161eadeb3647ddb49 in geode's branch refs/heads/support/1.13 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=0f9d6b2 ] GEODE-8536: Allow limited retries when creating Lucene IndexWriter (#5659) Authored-by: Donal Evans (cherry picked from commit 872718ec9d119e332c328caf4493bdf8e8a83dcf) > StackOverflow can occur when Lucene IndexWriter is unable to be created > --- > > Key: GEODE-8536 > URL: https://issues.apache.org/jira/browse/GEODE-8536 > Project: Geode > Issue Type: Bug > Components: functions, lucene >Affects Versions: 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > If, during a call to IndexRepositoryFactory.computeIndexRepository(), an > IOException is encountered when attempting to construct an IndexWriter, the > function retry logic will reattempt the execution. This allows transient > exceptions caused by concurrent modification of the fileAndChunk region to be > ignored and subsequent executions to succeed (see GEODE-7703). However, if > the IOException is consistently thrown, the infinitely retrying function can > cause a StackOverflow: > {noformat} > java.lang.StackOverflowError > at > org.apache.geode.SystemFailure.startWatchDog(SystemFailure.java:320) > at > org.apache.geode.SystemFailure.notifyWatchDog(SystemFailure.java:758) > at org.apache.geode.SystemFailure.setFailure(SystemFailure.java:813) > at > org.apache.geode.SystemFailure.initiateFailure(SystemFailure.java:790) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2251) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2031) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839) > at > org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.toData(PartitionedRegionFunctionStreamingMessage.java:192) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:213) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:137) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1484) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:247) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:306) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:182) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:511) > at > org.apache.geode.distributed.internal.DistributionImpl.directChannelSend(DistributionImpl.java:346) > at > org.apache.geode.distributed.internal.DistributionImpl.send(DistributionImpl.java:291) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2058) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:1986) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2023) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1083) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionResultWaiter.getPartitionedDataFrom(PartitionedRegionFunctionResultWaiter.java:89) > at > org.apache.geode.internal.cache.PartitionedRegion.executeOnAllBuckets(PartitionedRegion.java:4079) > at > org.apache.geode.internal.cache.PartitionedRegion.executeFunction(PartitionedRegion.java:3583) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionExecutor.executeFunction(PartitionedRegionFunctionExecutor.java:220) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:376) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:359) > at > org.apache.geode.internal.cache.execute.LocalResultCollectorImpl.getResultInternal(LocalResultCollectorImpl.jav
[jira] [Commented] (GEODE-8686) Tombstone removal optimization during GII could cause deadlock
[ https://issues.apache.org/jira/browse/GEODE-8686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229594#comment-17229594 ] ASF subversion and git services commented on GEODE-8686: Commit aaa3d13e9c604806624e43ba86d959473226a674 in geode's branch refs/heads/support/1.13 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=aaa3d13 ] GEODE-8686: Prevent potential deadlock during GII and tombstone GC (#5707) - Do not call AbstractRegionMap.removeTombstone() outside of TombstoneService class - Add test to confirm that tombstones are correctly scheduled and collected with this change Authored-by: Donal Evans (cherry picked from commit 70b1ee8b98f1458620539c4a962e82f8ef35707b) > Tombstone removal optimization during GII could cause deadlock > -- > > Key: GEODE-8686 > URL: https://issues.apache.org/jira/browse/GEODE-8686 > Project: Geode > Issue Type: Improvement >Affects Versions: 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > Similar to the issue described in GEODE-6526, if the condition in the below > if statement in {{AbstractRegionMap.initialImagePut()}} evaluates to true, a > call to {{AbstractRegionMap.removeTombstone()}} will be triggered that could > lead to deadlock between the calling thread and a Tombstone GC thread calling > {{TombstoneService.gcTombstones()}}. > {code:java} > if (owner.getServerProxy() == null && > owner.getVersionVector().isTombstoneTooOld( entryVersion.getMemberID(), > entryVersion.getRegionVersion())) { > // the received tombstone has already been reaped, so don't retain it > if (owner.getIndexManager() != null) { > owner.getIndexManager().updateIndexes(oldRe, IndexManager.REMOVE_ENTRY, > IndexProtocol.REMOVE_DUE_TO_GII_TOMBSTONE_CLEANUP); > } > removeTombstone(oldRe, entryVersion, false, false); > return false; > } else { > owner.scheduleTombstone(oldRe, entryVersion); > lruEntryDestroy(oldRe); > } > {code} > The proposed change is to remove this if statement and allow the old > tombstone to be collected later by calling {{scheduleTombstone()}} in all > cases. The call to {{AbstractRegionMap.removeTombstone()}} in > {{AbstractRegionMap.initialImagePut()}} is intended to be an optimization to > allow immediate removal of tombstones that we know have already been > collected on other members, but since the conditions to trigger it are rare > (the old entry must be a tombstone, the new entry received during GII must be > a tombstone with a newer version, and we must have already collected a > tombstone with a newer version than the new entry) and the overhead of > scheduling a tombstone to be collected is comparatively low, the performance > impact of removing this optimization in favour of simply scheduling the > tombstone to be collected in all cases should be insignificant. > The solution to the deadlock observed in GEODE-6526 was also to remove the > call to {{AbstractRegionMap.removeTombstone()}} and allow the tombstone to be > collected later and did not result in any unwanted behaviour, so the proposed > fix should be similarly low-impact. > Also of note is that with this proposed change, there will be no calls to > {{AbstractRegionMap.removeTombstone()}} outside of the {{TombstoneService}} > class, which should ensure that other deadlocks involving this method are not > possible. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8536) StackOverflow can occur when Lucene IndexWriter is unable to be created
[ https://issues.apache.org/jira/browse/GEODE-8536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229593#comment-17229593 ] ASF subversion and git services commented on GEODE-8536: Commit 0f9d6b22ec45b9238bec268161eadeb3647ddb49 in geode's branch refs/heads/support/1.13 from Donal Evans [ https://gitbox.apache.org/repos/asf?p=geode.git;h=0f9d6b2 ] GEODE-8536: Allow limited retries when creating Lucene IndexWriter (#5659) Authored-by: Donal Evans (cherry picked from commit 872718ec9d119e332c328caf4493bdf8e8a83dcf) > StackOverflow can occur when Lucene IndexWriter is unable to be created > --- > > Key: GEODE-8536 > URL: https://issues.apache.org/jira/browse/GEODE-8536 > Project: Geode > Issue Type: Bug > Components: functions, lucene >Affects Versions: 1.12.0, 1.13.0, 1.14.0 >Reporter: Donal Evans >Assignee: Donal Evans >Priority: Major > Labels: pull-request-available > Fix For: 1.12.1, 1.14.0, 1.13.1 > > > If, during a call to IndexRepositoryFactory.computeIndexRepository(), an > IOException is encountered when attempting to construct an IndexWriter, the > function retry logic will reattempt the execution. This allows transient > exceptions caused by concurrent modification of the fileAndChunk region to be > ignored and subsequent executions to succeed (see GEODE-7703). However, if > the IOException is consistently thrown, the infinitely retrying function can > cause a StackOverflow: > {noformat} > java.lang.StackOverflowError > at > org.apache.geode.SystemFailure.startWatchDog(SystemFailure.java:320) > at > org.apache.geode.SystemFailure.notifyWatchDog(SystemFailure.java:758) > at org.apache.geode.SystemFailure.setFailure(SystemFailure.java:813) > at > org.apache.geode.SystemFailure.initiateFailure(SystemFailure.java:790) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2251) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2031) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839) > at > org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.toData(PartitionedRegionFunctionStreamingMessage.java:192) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:213) > at > org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:137) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1484) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:247) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:306) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:182) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:511) > at > org.apache.geode.distributed.internal.DistributionImpl.directChannelSend(DistributionImpl.java:346) > at > org.apache.geode.distributed.internal.DistributionImpl.send(DistributionImpl.java:291) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2058) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:1986) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2023) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1083) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionResultWaiter.getPartitionedDataFrom(PartitionedRegionFunctionResultWaiter.java:89) > at > org.apache.geode.internal.cache.PartitionedRegion.executeOnAllBuckets(PartitionedRegion.java:4079) > at > org.apache.geode.internal.cache.PartitionedRegion.executeFunction(PartitionedRegion.java:3583) > at > org.apache.geode.internal.cache.execute.PartitionedRegionFunctionExecutor.executeFunction(PartitionedRegionFunctionExecutor.java:220) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:376) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:359) > at > org.apache.geode.internal.cache.execute.LocalResultCollectorImpl.getResultInternal(LocalResultCollectorImpl.jav
[jira] [Created] (GEODE-8697) Propagate ForcedDisconnectException exception to the user application in a network partition scenario
Kamilla Aslami created GEODE-8697: - Summary: Propagate ForcedDisconnectException exception to the user application in a network partition scenario Key: GEODE-8697 URL: https://issues.apache.org/jira/browse/GEODE-8697 Project: Geode Issue Type: Bug Components: membership Reporter: Kamilla Aslami During network partitioning, we expect that the coordinator closes its cluster with a ForcedDisconnectException. However, in some cases, threads end up with a MemberDisconnectedException. System logs show that a ForcedDisconnect has happened: {code:java} org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException: Membership coordinator 10.32.111.185(gemfire3_host1_7340:7340:locator):41000 has declared that a network partition has occurred at org.apache.geode.distributed.internal.membership.gms.GMSMembership$ManagerImpl.forceDisconnect(GMSMembership.java:2007) at org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.forceDisconnect(GMSJoinLeave.java:1085) at org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.processMessage(GMSJoinLeave.java:1422) at org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger$JGroupsReceiver.receive(JGroupsMessenger.java:1327) at org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger$JGroupsReceiver.receive(JGroupsMessenger.java:1266) at org.jgroups.JChannel.invokeCallback(JChannel.java:816) at org.jgroups.JChannel.up(JChannel.java:741) at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1030) at org.jgroups.protocols.FRAG2.up(FRAG2.java:165) at org.jgroups.protocols.FlowControl.up(FlowControl.java:390) at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1077) at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:792) at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:433) at org.apache.geode.distributed.internal.membership.gms.messenger.StatRecorder.up(StatRecorder.java:72) at org.apache.geode.distributed.internal.membership.gms.messenger.AddressManager.up(AddressManager.java:70) at org.jgroups.protocols.TP.passMessageUp(TP.java:1658) at org.jgroups.protocols.TP$SingleMessageHandler.run(TP.java:1876) at org.jgroups.util.DirectExecutor.execute(DirectExecutor.java:10) at org.jgroups.protocols.TP.handleSingleMessage(TP.java:1789) at org.jgroups.protocols.TP.receive(TP.java:1714) at org.apache.geode.distributed.internal.membership.gms.messenger.Transport.receive(Transport.java:159) at org.jgroups.protocols.UDP$PacketReceiver.run(UDP.java:701) at java.lang.Thread.run(Thread.java:748){code} But it is never propagated upwards to the user application: {code:java} org.apache.geode.distributed.DistributedSystemDisconnectedException: This connection to a distributed system has been disconnected., caused by org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException: Membership coordinator 10.32.111.185(gemfire3_host1_7340:7340:locator):41000 has declared that a network partition has occurred at org.apache.geode.distributed.internal.InternalDistributedSystem.checkConnected(InternalDistributedSystem.java:978) at org.apache.geode.distributed.internal.InternalDistributedSystem.getDistributionManager(InternalDistributedSystem.java:1679) at org.apache.geode.distributed.internal.ReplyProcessor21.getDistributionManager(ReplyProcessor21.java:366) at org.apache.geode.distributed.internal.ReplyProcessor21.postWait(ReplyProcessor21.java:600) at org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:824) at org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:779) at org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:865) at org.apache.geode.internal.cache.partitioned.FetchKeysMessage$FetchKeysResponse.waitForKeys(FetchKeysMessage.java:584) at org.apache.geode.internal.cache.PartitionedRegion.getBucketKeys(PartitionedRegion.java:4463) at org.apache.geode.internal.cache.PartitionedRegionDataView.getBucketKeys(PartitionedRegionDataView.java:118) at org.apache.geode.internal.cache.PartitionedRegion$KeysSet$KeysSetIterator.getNextBucketIter(PartitionedRegion.java:6180) at org.apache.geode.internal.cache.PartitionedRegion$KeysSet$KeysSetIterator.hasNext(PartitionedRegion.java:6146) at org.apache.geode.internal.cache.PartitionedRegion$KeysSet.toArray(PartitionedRegion.java:6251) at org.apache.geode.internal.cache.PartitionedRegion$KeysSet.toArray(PartitionedRegion.java:6245){code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8466) Create a ClassLoaderService to abstract away dealing with the default ClassLoader directly
[ https://issues.apache.org/jira/browse/GEODE-8466?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229634#comment-17229634 ] ASF GitHub Bot commented on GEODE-8466: --- lgtm-com[bot] commented on pull request #5548: URL: https://github.com/apache/geode/pull/5548#issuecomment-725072980 This pull request **introduces 3 alerts** and **fixes 1** when merging a74cbadc040f65f3f54e2e1ec319ba0ed6ba1976 into 70b1ee8b98f1458620539c4a962e82f8ef35707b - [view on LGTM.com](https://lgtm.com/projects/g/apache/geode/rev/pr-3b54fbb2549d9a0835c60fa8a05c5a8b48111271) **new alerts:** * 2 for Potential input resource leak * 1 for Use of a broken or risky cryptographic algorithm **fixed alerts:** * 1 for Use of a broken or risky cryptographic algorithm This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Create a ClassLoaderService to abstract away dealing with the default > ClassLoader directly > -- > > Key: GEODE-8466 > URL: https://issues.apache.org/jira/browse/GEODE-8466 > Project: Geode > Issue Type: New Feature > Components: core >Reporter: Udo Kohlmeyer >Assignee: Udo Kohlmeyer >Priority: Major > Labels: pull-request-available > > With the addition of ClassLoader isolation using JBoss Modules GEODE-8067, > the manner in which we interact with the ClassLoader needs to change. > An abstraction is required around the default functions like > `findResourceAsStream`, `loadClass` and `loadService`. > As these features will behave differently between different ClassLoader > implementations, it is best to have a single service that will expose that > functionality in a transparent manner. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (GEODE-8697) Propagate ForcedDisconnectException to the user application in a network partition scenario
[ https://issues.apache.org/jira/browse/GEODE-8697?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kamilla Aslami updated GEODE-8697: -- Summary: Propagate ForcedDisconnectException to the user application in a network partition scenario (was: Propagate ForcedDisconnectException exception to the user application in a network partition scenario) > Propagate ForcedDisconnectException to the user application in a network > partition scenario > --- > > Key: GEODE-8697 > URL: https://issues.apache.org/jira/browse/GEODE-8697 > Project: Geode > Issue Type: Bug > Components: membership >Reporter: Kamilla Aslami >Priority: Major > > During network partitioning, we expect that the coordinator closes its > cluster with a ForcedDisconnectException. However, in some cases, threads end > up with a MemberDisconnectedException. > System logs show that a ForcedDisconnect has happened: > {code:java} > org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException: > Membership coordinator > 10.32.111.185(gemfire3_host1_7340:7340:locator):41000 has declared > that a network partition has occurred > at > org.apache.geode.distributed.internal.membership.gms.GMSMembership$ManagerImpl.forceDisconnect(GMSMembership.java:2007) > at > org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.forceDisconnect(GMSJoinLeave.java:1085) > at > org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.processMessage(GMSJoinLeave.java:1422) > at > org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger$JGroupsReceiver.receive(JGroupsMessenger.java:1327) > at > org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger$JGroupsReceiver.receive(JGroupsMessenger.java:1266) > at org.jgroups.JChannel.invokeCallback(JChannel.java:816) > at org.jgroups.JChannel.up(JChannel.java:741) > at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1030) > at org.jgroups.protocols.FRAG2.up(FRAG2.java:165) > at org.jgroups.protocols.FlowControl.up(FlowControl.java:390) > at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1077) > at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:792) > at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:433) > at > org.apache.geode.distributed.internal.membership.gms.messenger.StatRecorder.up(StatRecorder.java:72) > at > org.apache.geode.distributed.internal.membership.gms.messenger.AddressManager.up(AddressManager.java:70) > at org.jgroups.protocols.TP.passMessageUp(TP.java:1658) > at org.jgroups.protocols.TP$SingleMessageHandler.run(TP.java:1876) > at org.jgroups.util.DirectExecutor.execute(DirectExecutor.java:10) > at org.jgroups.protocols.TP.handleSingleMessage(TP.java:1789) > at org.jgroups.protocols.TP.receive(TP.java:1714) > at > org.apache.geode.distributed.internal.membership.gms.messenger.Transport.receive(Transport.java:159) > at org.jgroups.protocols.UDP$PacketReceiver.run(UDP.java:701) > at java.lang.Thread.run(Thread.java:748){code} > But it is never propagated upwards to the user application: > {code:java} > org.apache.geode.distributed.DistributedSystemDisconnectedException: This > connection to a distributed system has been disconnected., caused by > org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException: > Membership coordinator > 10.32.111.185(gemfire3_host1_7340:7340:locator):41000 has declared > that a network partition has occurred > at > org.apache.geode.distributed.internal.InternalDistributedSystem.checkConnected(InternalDistributedSystem.java:978) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.getDistributionManager(InternalDistributedSystem.java:1679) > at > org.apache.geode.distributed.internal.ReplyProcessor21.getDistributionManager(ReplyProcessor21.java:366) > at > org.apache.geode.distributed.internal.ReplyProcessor21.postWait(ReplyProcessor21.java:600) > at > org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:824) > at > org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:779) > at > org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:865) > at > org.apache.geode.internal.cache.partitioned.FetchKeysMessage$FetchKeysResponse.waitForKeys(FetchKeysMessage.java:584) > at > org.apache.geode.internal.cache.PartitionedRegion.getBucketKeys(PartitionedRegion.java:4463) > at > org.apache.geode.internal.cache.PartitionedRegionDataView.getBucketKeys(PartitionedRegionDataView.java:118) > at > org.apache.geode.internal.cache.PartitionedRegion$KeysSet$KeysSetIterator
[jira] [Commented] (GEODE-8697) Propagate ForcedDisconnectException to the user application in a network partition scenario
[ https://issues.apache.org/jira/browse/GEODE-8697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229635#comment-17229635 ] ASF GitHub Bot commented on GEODE-8697: --- kamilla1201 opened a new pull request #5729: URL: https://github.com/apache/geode/pull/5729 Thank you for submitting a contribution to Apache Geode. In order to streamline the review of the contribution we ask you to ensure the following steps have been taken: ### For all changes: - [ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message? - [ ] Has your PR been rebased against the latest commit within the target branch (typically `develop`)? - [ ] Is your initial contribution a single, squashed commit? - [ ] Does `gradlew build` run cleanly? - [ ] Have you written or updated unit tests to verify your changes? - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)? ### Note: Please ensure that once the PR is submitted, check Concourse for build issues and submit an update to your PR as soon as possible. If you need help, please send an email to d...@geode.apache.org. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Propagate ForcedDisconnectException to the user application in a network > partition scenario > --- > > Key: GEODE-8697 > URL: https://issues.apache.org/jira/browse/GEODE-8697 > Project: Geode > Issue Type: Bug > Components: membership >Reporter: Kamilla Aslami >Priority: Major > > During network partitioning, we expect that the coordinator closes its > cluster with a ForcedDisconnectException. However, in some cases, threads end > up with a MemberDisconnectedException. > System logs show that a ForcedDisconnect has happened: > {code:java} > org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException: > Membership coordinator > 10.32.111.185(gemfire3_host1_7340:7340:locator):41000 has declared > that a network partition has occurred > at > org.apache.geode.distributed.internal.membership.gms.GMSMembership$ManagerImpl.forceDisconnect(GMSMembership.java:2007) > at > org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.forceDisconnect(GMSJoinLeave.java:1085) > at > org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.processMessage(GMSJoinLeave.java:1422) > at > org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger$JGroupsReceiver.receive(JGroupsMessenger.java:1327) > at > org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger$JGroupsReceiver.receive(JGroupsMessenger.java:1266) > at org.jgroups.JChannel.invokeCallback(JChannel.java:816) > at org.jgroups.JChannel.up(JChannel.java:741) > at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1030) > at org.jgroups.protocols.FRAG2.up(FRAG2.java:165) > at org.jgroups.protocols.FlowControl.up(FlowControl.java:390) > at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1077) > at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:792) > at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:433) > at > org.apache.geode.distributed.internal.membership.gms.messenger.StatRecorder.up(StatRecorder.java:72) > at > org.apache.geode.distributed.internal.membership.gms.messenger.AddressManager.up(AddressManager.java:70) > at org.jgroups.protocols.TP.passMessageUp(TP.java:1658) > at org.jgroups.protocols.TP$SingleMessageHandler.run(TP.java:1876) > at org.jgroups.util.DirectExecutor.execute(DirectExecutor.java:10) > at org.jgroups.protocols.TP.handleSingleMessage(TP.java:1789) > at org.jgroups.protocols.TP.receive(TP.java:1714) > at > org.apache.geode.distributed.internal.membership.gms.messenger.Transport.receive(Transport.java:159) > at org.jgroups.protocols.UDP$PacketReceiver.run(UDP.java:701) > at java.lang.Thread.run(Thread.java:748){code} > But it is never propagated upwards to the user application: > {code:java} > org.apache.geode.distributed.DistributedSystemDisconnectedException: This > connection to a distributed system has been disconnected., caused by > org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException: > Membership coordinator > 10.32.111.185(gemfire3_host1_7340:7340:locator):41000 has declared > that
[jira] [Updated] (GEODE-8697) Propagate ForcedDisconnectException to the user application in a network partition scenario
[ https://issues.apache.org/jira/browse/GEODE-8697?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] ASF GitHub Bot updated GEODE-8697: -- Labels: pull-request-available (was: ) > Propagate ForcedDisconnectException to the user application in a network > partition scenario > --- > > Key: GEODE-8697 > URL: https://issues.apache.org/jira/browse/GEODE-8697 > Project: Geode > Issue Type: Bug > Components: membership >Reporter: Kamilla Aslami >Priority: Major > Labels: pull-request-available > > During network partitioning, we expect that the coordinator closes its > cluster with a ForcedDisconnectException. However, in some cases, threads end > up with a MemberDisconnectedException. > System logs show that a ForcedDisconnect has happened: > {code:java} > org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException: > Membership coordinator > 10.32.111.185(gemfire3_host1_7340:7340:locator):41000 has declared > that a network partition has occurred > at > org.apache.geode.distributed.internal.membership.gms.GMSMembership$ManagerImpl.forceDisconnect(GMSMembership.java:2007) > at > org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.forceDisconnect(GMSJoinLeave.java:1085) > at > org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.processMessage(GMSJoinLeave.java:1422) > at > org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger$JGroupsReceiver.receive(JGroupsMessenger.java:1327) > at > org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger$JGroupsReceiver.receive(JGroupsMessenger.java:1266) > at org.jgroups.JChannel.invokeCallback(JChannel.java:816) > at org.jgroups.JChannel.up(JChannel.java:741) > at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1030) > at org.jgroups.protocols.FRAG2.up(FRAG2.java:165) > at org.jgroups.protocols.FlowControl.up(FlowControl.java:390) > at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1077) > at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:792) > at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:433) > at > org.apache.geode.distributed.internal.membership.gms.messenger.StatRecorder.up(StatRecorder.java:72) > at > org.apache.geode.distributed.internal.membership.gms.messenger.AddressManager.up(AddressManager.java:70) > at org.jgroups.protocols.TP.passMessageUp(TP.java:1658) > at org.jgroups.protocols.TP$SingleMessageHandler.run(TP.java:1876) > at org.jgroups.util.DirectExecutor.execute(DirectExecutor.java:10) > at org.jgroups.protocols.TP.handleSingleMessage(TP.java:1789) > at org.jgroups.protocols.TP.receive(TP.java:1714) > at > org.apache.geode.distributed.internal.membership.gms.messenger.Transport.receive(Transport.java:159) > at org.jgroups.protocols.UDP$PacketReceiver.run(UDP.java:701) > at java.lang.Thread.run(Thread.java:748){code} > But it is never propagated upwards to the user application: > {code:java} > org.apache.geode.distributed.DistributedSystemDisconnectedException: This > connection to a distributed system has been disconnected., caused by > org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException: > Membership coordinator > 10.32.111.185(gemfire3_host1_7340:7340:locator):41000 has declared > that a network partition has occurred > at > org.apache.geode.distributed.internal.InternalDistributedSystem.checkConnected(InternalDistributedSystem.java:978) > at > org.apache.geode.distributed.internal.InternalDistributedSystem.getDistributionManager(InternalDistributedSystem.java:1679) > at > org.apache.geode.distributed.internal.ReplyProcessor21.getDistributionManager(ReplyProcessor21.java:366) > at > org.apache.geode.distributed.internal.ReplyProcessor21.postWait(ReplyProcessor21.java:600) > at > org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:824) > at > org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:779) > at > org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:865) > at > org.apache.geode.internal.cache.partitioned.FetchKeysMessage$FetchKeysResponse.waitForKeys(FetchKeysMessage.java:584) > at > org.apache.geode.internal.cache.PartitionedRegion.getBucketKeys(PartitionedRegion.java:4463) > at > org.apache.geode.internal.cache.PartitionedRegionDataView.getBucketKeys(PartitionedRegionDataView.java:118) > at > org.apache.geode.internal.cache.PartitionedRegion$KeysSet$KeysSetIterator.getNextBucketIter(PartitionedRegion.java:6180) > at > org.apache.geode.internal.cache.PartitionedRegion$KeysSet$KeysSetItera
[jira] [Commented] (GEODE-7675) Partitioned Region clear should be successful when clients are present with subscription enabled
[ https://issues.apache.org/jira/browse/GEODE-7675?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229665#comment-17229665 ] ASF GitHub Bot commented on GEODE-7675: --- jinmeiliao merged pull request #5727: URL: https://github.com/apache/geode/pull/5727 This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Partitioned Region clear should be successful when clients are present with > subscription enabled > > > Key: GEODE-7675 > URL: https://issues.apache.org/jira/browse/GEODE-7675 > Project: Geode > Issue Type: Sub-task > Components: regions >Reporter: Nabarun Nag >Priority: Major > Labels: GeodeCommons, pull-request-available > > Clear operations are successful when Client Subscriptions are enabled and > clients are updated with the correct region clear event. > > Acceptance : > * DUnit tests ensuring that clear operations are successful > * Ensure that all clients are getting the correct event notifications. > * HA enabled tests > * Test coverage to when a member departs in this scenario > * Test coverage to when a member restarts in this scenario > * Unit tests with complete code coverage for the newly written code. > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-7675) Partitioned Region clear should be successful when clients are present with subscription enabled
[ https://issues.apache.org/jira/browse/GEODE-7675?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229666#comment-17229666 ] ASF subversion and git services commented on GEODE-7675: Commit 0b49320913ad8ef659fa72b12766607b651ba28d in geode's branch refs/heads/feature/GEODE-7665 from Jinmei Liao [ https://gitbox.apache.org/repos/asf?p=geode.git;h=0b49320 ] GEODE-7675: Partitioned Region clear should be successful when clients are present with subscription enabled (#5727) > Partitioned Region clear should be successful when clients are present with > subscription enabled > > > Key: GEODE-7675 > URL: https://issues.apache.org/jira/browse/GEODE-7675 > Project: Geode > Issue Type: Sub-task > Components: regions >Reporter: Nabarun Nag >Priority: Major > Labels: GeodeCommons, pull-request-available > > Clear operations are successful when Client Subscriptions are enabled and > clients are updated with the correct region clear event. > > Acceptance : > * DUnit tests ensuring that clear operations are successful > * Ensure that all clients are getting the correct event notifications. > * HA enabled tests > * Test coverage to when a member departs in this scenario > * Test coverage to when a member restarts in this scenario > * Unit tests with complete code coverage for the newly written code. > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GEODE-8593) Update native client examples to use Builder pattern
[ https://issues.apache.org/jira/browse/GEODE-8593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17229669#comment-17229669 ] ASF GitHub Bot commented on GEODE-8593: --- mmartell commented on a change in pull request #689: URL: https://github.com/apache/geode-native/pull/689#discussion_r521040470 ## File path: docs/geode-native-docs-cpp/regions/regions.html.md.erb ## @@ -53,20 +53,20 @@ auto cache = CacheFactory() cache.getPoolManager() .createFactory() -.addLocator("localhost", 10334) -.create("pool"); +.addLocator("localhost", 40404) Review comment: I would stick with the port 10334 here, which is the default locator port. 40404 is the default server port, so looks very odd to use as a locator port. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Update native client examples to use Builder pattern > > > Key: GEODE-8593 > URL: https://issues.apache.org/jira/browse/GEODE-8593 > Project: Geode > Issue Type: Improvement > Components: docs, native client >Affects Versions: 1.13.0 >Reporter: Dave Barnes >Assignee: Dave Barnes >Priority: Major > Labels: pull-request-available > > For both C++ and .NET examples, the section of code that creates the > connection pool should be improved to better illustrate the Builder pattern. > For example, in the C++ examples, current code is: > ``` > auto cacheFactory = CacheFactory(); > cacheFactory.set("log-level", "none"); > auto cache = cacheFactory.create(); > auto poolFactory = cache.getPoolManager().createFactory(); > > poolFactory.addLocator("localhost", 10334); > auto pool = poolFactory.create("pool"); > ``` > The improved version would be: > ``` > auto cache = CacheFactory() >.set("log-level", "debug") >.set("ssl-enabled", "true") >.set("ssl-truststore", clientTruststore.string()) >.create(); > cache.getPoolManager() > .createFactory() > .addLocator("localhost", 10334) > .create("pool"); > ``` > Similarly for .NET examples. > These doc snippets also appear in the user guides, so they'll need updating > in the docs, as well. -- This message was sent by Atlassian Jira (v8.3.4#803005)