[ https://issues.apache.org/jira/browse/GEODE-9576?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17413230#comment-17413230 ]
ASF GitHub Bot commented on GEODE-9576: --------------------------------------- pdxcodemonkey commented on a change in pull request #864: URL: https://github.com/apache/geode-native/pull/864#discussion_r706251752 ########## File path: cppcache/integration/test/FunctionExecutionTest.cpp ########## @@ -175,6 +181,58 @@ TEST(FunctionExecutionTest, cache.close(); } +void populateRegion(const std::shared_ptr<Region> ®ion) { + for (int i = 0; i < 113; i++) { + region->put("KEY--" + std::to_string(i), "VALUE--" + std::to_string(i)); + } +} + +TEST(FunctionExecutionTest, FunctionExecutionSingleHopNonHA) { + Cluster cluster{ + LocatorCount{1}, ServerCount{3}, + CacheXMLFiles( + {std::string(getFrameworkString(FrameworkVariable::TestCacheXmlDir)) + + "/func_cacheserver1_pool_nonHA.xml", + std::string(getFrameworkString(FrameworkVariable::TestCacheXmlDir)) + + "/func_cacheserver2_pool_nonHA.xml", + std::string(getFrameworkString(FrameworkVariable::TestCacheXmlDir)) + + "/func_cacheserver3_pool_nonHA.xml"})}; + + cluster.start([&]() { + cluster.getGfsh() + .deploy() + .jar(getFrameworkString(FrameworkVariable::JavaObjectJarPath)) + .execute(); + }); + + auto cache = CacheFactory().create(); + auto poolFactory = cache.getPoolManager().createFactory(); + + cluster.applyLocators(poolFactory); + + auto pool = + poolFactory.setPRSingleHopEnabled(true).setRetryAttempts(0).create( + "pool"); + + auto region = cache.createRegionFactory(RegionShortcut::PROXY) + .setPoolName("pool") + .create("partition_region"); + + populateRegion(region); + + for (int i = 0; i < 30; i++) { + auto functionService = FunctionService::onRegion(region); + auto rc = + functionService.withCollector(std::make_shared<TestResultCollector>()) Review comment: Sorry, totally missed this was an integration test - dunno how that happened. To confirm your conjecture above, yes my test sleeps because it has to have a metadata update, with partial info, to repro the failure, just as yours does. -- 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. To unsubscribe, e-mail: notifications-unsubscr...@geode.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org > InternalFunctionInvocationTargetException when executing single hop function > all buckets > ---------------------------------------------------------------------------------------- > > Key: GEODE-9576 > URL: https://issues.apache.org/jira/browse/GEODE-9576 > Project: Geode > Issue Type: Bug > Components: native client > Reporter: Jakov Varenina > Assignee: Jakov Varenina > Priority: Major > Labels: pull-request-available > > *InternalFunctionInvocationTargetException: Multiple target nodes found for > single hop operation* occurs on native client when executing function in a > single hop manner for all buckets during the period when client bucket > metadata doesn't contain all buckets locations. > Java client in this case executes functions in non single hop manner until it > receives locations of all buckets on servers. The solution in native client > would be to implement the same handling as in java client. -- This message was sent by Atlassian Jira (v8.3.4#803005)