[ https://issues.apache.org/jira/browse/IGNITE-12490?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17091558#comment-17091558 ]
Vyacheslav Daradur commented on IGNITE-12490: --------------------------------------------- Both issues: this and IGNITE-12490 can be fixed by improvements of our deployment guarantees, read this for details: [dev-list-thread|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html] The main idea is allowing [GridServiceProxy#randomNodeForService|https://github.com/apache/ignite/blob/8cba313c9961b16e358834216e9992310f285985/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java#L283] to wait service deployment finished if it is registered in the cluster (but deployment has not finished yet). It can be achieved in the same manner as for our ["API with a timeout" here|https://github.com/apache/ignite/blob/8dcd0f1d96dae965a0f5c479e6d0f4b4d50c6e2c/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java#L821http://example.com] (mentioned as a workaround in current issue description). Need add some conditions, something like this: {code:java} IgniteUuid srvcUid = lookupRegisteredServiceId(name); if (srvcUid == null) return null; // Service is not registered in cluster: wasn't present in cfg and didn't deployed through API Map<UUID, Integer> top; while (true) { ServiceInfo srvcDesc = registeredServices.get(srvcUid); if (srvcDesc == null) { if (timeout == 0) return null; else // Wait if someone sent service to deploy (as in current implementation) } top = srvcDesc.topologySnapshot(); if (!top.isEmpty()) { return top; } // Wait using "servicesTopsUpdateMux" while service deployment finished and the topology will not be empty // or removed from "registeredServices" in case if deployment failure {code} > Service proxy throws "Service not found" exception right after deploy > --------------------------------------------------------------------- > > Key: IGNITE-12490 > URL: https://issues.apache.org/jira/browse/IGNITE-12490 > Project: Ignite > Issue Type: Improvement > Components: managed services > Affects Versions: 2.8 > Reporter: Alexey Goncharuk > Priority: Major > Attachments: ServiceInvokeTest.java > > > In the following scenario: > * Start nodes A, B > * Deploy a service on A > * Create a service proxy on B > * Invoke the proxy > The proxy invocation throws a service not found exception. As per discussion > [on the dev > list|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html] > this case should be handled by an automatic retry, however, it's not. > The reproducer is attached. -- This message was sent by Atlassian Jira (v8.3.4#803005)