[ 
https://issues.apache.org/jira/browse/GEODE-9576?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17412718#comment-17412718
 ] 

ASF GitHub Bot commented on GEODE-9576:
---------------------------------------

pivotal-jbarrett commented on a change in pull request #864:
URL: https://github.com/apache/geode-native/pull/864#discussion_r705544017



##########
File path: cppcache/integration/test/FunctionExecutionTest.cpp
##########
@@ -175,6 +181,58 @@ TEST(FunctionExecutionTest,
   cache.close();
 }
 
+void populateRegion(const std::shared_ptr<Region> &region) {
+  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:
       Unfortunately this is notoriously hard to test. PR metadata updates are 
asynchronous and there isn't any hooks to trigger when an update is complete. 
You may want to start with adding that function. The downside to that is to use 
them in an integration tests we would have to export those functions and we try 
not to export internal/test symbols if we can. Perhaps it might be easier to 
create a unit test that asserts this part of the function execution logic does 
the correct thing when the metadata is incomplete. It should be easier to tease 
out a function that is given the metadata and makes this decisions and then 
write a test to verify the expected behaviors. 




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

Reply via email to