Datta Sai
Datta Sai

Reputation: 3

"Error while reacting on microservice subscription" in Cumulocity Java SDK

A microservice is successfully deployed in cumulocity platform without any errors but application is throwing IO Exception stating "The server cumulocity failed to respond" even without any hit to any of the api's exposed. Full stacktrace is as follows :

2023-04-07 11:15:55.594 ERROR 11 --- [subscriptions-0] c.m.s.s.MicroserviceSubscriptionsService : Error while reacting on microservice subscription

com.cumulocity.sdk.client.SDKException: Error invoking GET http://cumulocity:8111/application/currentApplication
    at com.cumulocity.microservice.subscription.repository.impl.CurrentMicroserviceRepository.handleException(CurrentMicroserviceRepository.java:114)
    at com.cumulocity.microservice.subscription.repository.impl.CurrentMicroserviceRepository.getCurrentApplication(CurrentMicroserviceRepository.java:69)
    at com.cumulocity.microservice.subscription.repository.impl.CurrentMicroserviceRepository.register(CurrentMicroserviceRepository.java:46)
    at com.cumulocity.microservice.subscription.repository.impl.CurrentMicroserviceRepository.register(CurrentMicroserviceRepository.java:61)
    at com.cumulocity.microservice.subscription.repository.MicroserviceSubscriptionsRepository.register(MicroserviceSubscriptionsRepository.java:103)
    at com.cumulocity.microservice.subscription.service.impl.MicroserviceSubscriptionsServiceImpl.subscribe(MicroserviceSubscriptionsServiceImpl.java:113)
    at com.cumulocity.microservice.subscription.service.impl.MicroserviceSubscriptionScheduler$1.run(MicroserviceSubscriptionScheduler.java:66)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:750)
Caused by: com.sun.jersey.api.client.ClientHandlerException: java.net.SocketException: Connection reset
    at com.sun.jersey.client.apache.DefaultApacheHttpMethodExecutor.executeMethod(DefaultApacheHttpMethodExecutor.java:213)
    at com.sun.jersey.client.apache.ApacheHttpClientHandler.handle(ApacheHttpClientHandler.java:175)
    at com.cumulocity.sdk.client.CumulocityAuthenticationFilter.handle(CumulocityAuthenticationFilter.java:47)
    at com.sun.jersey.api.client.Client.handle(Client.java:648)
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:670)
    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
    at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:503)
    at com.cumulocity.sdk.client.RestConnector.getClientResponse(RestConnector.java:149)
    at com.cumulocity.sdk.client.RestConnector.get(RestConnector.java:123)
    at com.cumulocity.microservice.subscription.repository.application.CurrentApplicationApi.get(CurrentApplicationApi.java:22)
    at com.cumulocity.microservice.subscription.repository.impl.CurrentMicroserviceRepository.getCurrentApplication(CurrentMicroserviceRepository.java:67)
    ... 12 common frames omitted
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:210)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
    at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
    at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
    at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413)
    at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
    at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at com.sun.jersey.client.apache.DefaultApacheHttpMethodExecutor.executeMethod(DefaultApacheHttpMethodExecutor.java:210)
    ... 22 common frames omitted

2023-04-07 11:23:26.437  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : I/O exception (org.apache.commons.httpclient.NoHttpResponseException) caught when processing request: The server cumulocity failed to respond
2023-04-07 11:23:26.437  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : Retrying request
2023-04-07 11:28:37.056  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : I/O exception (org.apache.commons.httpclient.NoHttpResponseException) caught when processing request: The server cumulocity failed to respond
2023-04-07 11:28:37.056  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : Retrying request
2023-04-07 11:41:18.465  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : I/O exception (org.apache.commons.httpclient.NoHttpResponseException) caught when processing request: The server cumulocity failed to respond
2023-04-07 11:41:18.465  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : Retrying request
2023-04-07 11:44:18.805  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : I/O exception (org.apache.commons.httpclient.NoHttpResponseException) caught when processing request: The server cumulocity failed to respond
2023-04-07 11:44:18.805  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : Retrying request
2023-04-07 11:47:49.211  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : I/O exception (org.apache.commons.httpclient.NoHttpResponseException) caught when processing request: The server cumulocity failed to respond
2023-04-07 11:47:49.211  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : Retrying request
2023-04-07 12:03:51.343  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : I/O exception (org.apache.commons.httpclient.NoHttpResponseException) caught when processing request: The server cumulocity failed to respond
2023-04-07 12:03:51.343  INFO 11 --- [subscriptions-0] o.a.c.httpclient.HttpMethodDirector      : Retrying request
2023-04-07 12:12:32.323 ERROR 11 --- [subscriptions-0] c.m.s.s.MicroserviceSubscriptionsService : Error while reacting on microservice subscription

In service class,I have autowired the MicroserviceSubscriptionsService as

@Autowired
 private MicroserviceSubscriptionsService subscriptionsService;

I have seen the error in the MicroserviceSubscriptionServiceImpl.class file (from the cumulocity sdk library) in the subscribe method.

public void subscribe() {
        synchronized(this.$lock) {
            try {
                this.subscribing = true;
                this.subscribingCredentials.clear();
                Optional<ApplicationRepresentation> maybeApplication = this.repository.register(this.properties.getApplicationName(), this.microserviceMetadataRepresentation);
                if (this.registeredSuccessfully = maybeApplication.isPresent()) {
                    final ApplicationRepresentation application = (ApplicationRepresentation)maybeApplication.get();
                    final MicroserviceSubscriptionsRepository.Subscriptions subscriptions = this.repository.retrieveSubscriptions(application.getId());
                    FluentIterable.from(subscriptions.getRemoved()).filter(new Predicate<MicroserviceCredentials>() {
                        public boolean apply(MicroserviceCredentials user) {
                            MicroserviceSubscriptionsServiceImpl.this.log("Remove subscription: {}", user);
                            Iterator var2 = MicroserviceSubscriptionsServiceImpl.this.listeners.iterator();

                            MicroserviceChangedListener listener;
                            do {
                                if (!var2.hasNext()) {
                                    return true;
                                }

                                listener = (MicroserviceChangedListener)var2.next();
                            } while(MicroserviceSubscriptionsServiceImpl.this.invokeRemoved(user, listener));

                            return false;
                        }
                    }).toList();
                    final ImmutableList<MicroserviceCredentials> successfullyAdded = FluentIterable.from(subscriptions.getAdded()).filter(new Predicate<MicroserviceCredentials>() {
                        public boolean apply(MicroserviceCredentials user) {
                            MicroserviceSubscriptionsServiceImpl.this.log("Add subscription: {}", user);
                            MicroserviceCredentials enhancedUser = MicroserviceCredentials.copyOf(user).appKey(application.getKey()).build();
                            MicroserviceSubscriptionsServiceImpl.this.subscribingCredentials.add(enhancedUser);
                            Iterator var3 = MicroserviceSubscriptionsServiceImpl.this.listeners.iterator();

                            MicroserviceChangedListener listener;
                            do {
                                if (!var3.hasNext()) {
                                    return true;
                                }

                                listener = (MicroserviceChangedListener)var3.next();
                            } while(MicroserviceSubscriptionsServiceImpl.this.invokeAdded(enhancedUser, listener));

                            MicroserviceSubscriptionsServiceImpl.this.subscribingCredentials.remove(enhancedUser);
                            return false;
                        }
                    }).toList();
                    this.repository.updateCurrentSubscriptions(FluentIterable.from(subscriptions.getAll()).filter(new Predicate<MicroserviceCredentials>() {
                        public boolean apply(MicroserviceCredentials user) {
                            return subscriptions.getAdded().contains(user) ? successfullyAdded.contains(user) : true;
                        }
                    }).toList());
                } else {
                    log.error("Application {} not found", this.properties.getApplicationName());
                }
            } catch (Throwable var11) {
                log.error("Error while reacting on microservice subscription", var11);
            } finally {
                this.subscribingCredentials.clear();
                this.subscribing = false;
            }

        }
    }

Even without any hit to application, i am getting the exception, I am stuck here.Appreciate your help here.

Upvotes: 0

Views: 124

Answers (1)

Switschel
Switschel

Reputation: 42

Which instance you are trying this? It seems that the routing to http://cumulocity:8111 is not possible for any reason. Normally it should reach the load balancer and core using that address.

Upvotes: 0

Related Questions