StreamManager error Could not find or load main class com.amazonaws.iot.gre

0

Hi,
I've been running Greengrass v2 succesfully on my IoT Jetson Nano device without any problems. I wanted to install greengrass on my local computer - for easier code testing/debugging.
The problem I'm facing is that the StreamManager is unable to start.
Here are the logs:
2021-01-19T09:28:29.254Z [INFO] (pool-2-thread-20) aws.greengrass.StreamManager: shell-runner-start. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING, command=["java -cp /home/szymon/dev/greengrass/packages/artifacts/aws.greengrass.Stream..."]}
2021-01-19T09:28:29.298Z [WARN] (Copier) aws.greengrass.StreamManager: stderr. Error: Could not find or load main class com.amazonaws.iot.greengrass.streammanager.StreamManagerService. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}
2021-01-19T09:28:29.298Z [WARN] (Copier) aws.greengrass.StreamManager: stderr. Caused by: java.lang.ClassNotFoundException: com.amazonaws.iot.greengrass.streammanager.StreamManagerService. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}
2021-01-19T09:28:29.302Z [INFO] (Copier) aws.greengrass.StreamManager: Startup script exited. {exitCode=1, serviceName=aws.greengrass.StreamManager, currentState=STARTING}

I'm not going to paste the rest because this part occurs multiple time and nothing else.
I checked the config file and I can see that:
{"TS":1611048501769,"TP":["services","aws.greengrass.StreamManager","lifecycle","startup","script"],"W":"changed","V":"java -cp /home/szymon/dev/greengrass/packages/artifacts/aws.greengrass.StreamManager/2.0.7/aws-iot-device-sdk-v2-1.0-SNAPSHOT.jar:/home/szymon/dev/greengrass/packages/artifacts/aws.greengrass.StreamManager/2.0.7/AWSGreengrassGreenlake-1.0-super.jar com.amazonaws.iot.greengrass.streammanager.StreamManagerService"}

So I tried this part to run it manually:
java -cp /home/szymon/dev/greengrass/packages/artifacts/aws.greengrass.StreamManager/2.0.7/aws-iot-device-sdk-v2-1.0-SNAPSHOT.jar:/home/szymon/dev/greengrass/packages/artifacts/aws.greengrass.StreamManager/2.0.7/AWSGreengrassGreenlake-1.0-super.jar

It looks like it started but obviously with some errors but it's not important here.
root@dfgdfg:/home/szymon/dev/greengrass/config# java -cp /home/szymon/dev/greengrass/packages/artifacts/aws.greengrass.StreamManager/2.0.7/aws-iot-device-sdk-v2-1.0-SNAPSHOT.jar:/home/szymon/dev/greengrass/packages/artifacts/aws.greengrass.StreamManager/2.0.7/AWSGreengrassGreenlake-1.0-super.jar com.amazonaws.iot.greengrass.streammanager.StreamManagerService
Jan 19, 2021 11:03:40 AM com.amazonaws.util.EC2MetadataUtils getItems
WARNING: Unable to retrieve the requested metadata (/latest/dynamic/instance-identity/document). Failed to connect to service endpoint:
com.amazonaws.SdkClientException: Failed to connect to service endpoint:
at com.amazonaws.internal.EC2ResourceFetcher.doReadResource(EC2ResourceFetcher.java:100)
at com.amazonaws.internal.EC2ResourceFetcher.doReadResource(EC2ResourceFetcher.java:70)
at com.amazonaws.internal.InstanceMetadataServiceResourceFetcher.readResource(InstanceMetadataServiceResourceFetcher.java:75)
at com.amazonaws.internal.EC2ResourceFetcher.readResource(EC2ResourceFetcher.java:66)
at com.amazonaws.util.EC2MetadataUtils.getItems(EC2MetadataUtils.java:403)
at com.amazonaws.util.EC2MetadataUtils.getData(EC2MetadataUtils.java:372)
at com.amazonaws.util.EC2MetadataUtils.getData(EC2MetadataUtils.java:368)
at com.amazonaws.util.EC2MetadataUtils.getEC2InstanceRegion(EC2MetadataUtils.java:283)
at com.amazonaws.regions.InstanceMetadataRegionProvider.tryDetectRegion(InstanceMetadataRegionProvider.java:59)
at com.amazonaws.regions.InstanceMetadataRegionProvider.getRegion(InstanceMetadataRegionProvider.java:50)
at com.amazonaws.regions.AwsRegionProviderChain.getRegion(AwsRegionProviderChain.java:46)
at com.amazonaws.client.builder.AwsClientBuilder.determineRegionFromRegionProvider(AwsClientBuilder.java:475)
at com.amazonaws.client.builder.AwsClientBuilder.setRegion(AwsClientBuilder.java:458)
at com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.java:424)
at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)
at com.amazonaws.iot.greengrass.streammanager.export.AWSClientFactory.createIotAnalyticsClient(AWSClientFactory.java:56)
at com.amazonaws.iot.greengrass.streammanager.dagger.ExportModule.awsIoTAnalytics(ExportModule.java:80)
at com.amazonaws.iot.greengrass.streammanager.dagger.ExportModule_AwsIoTAnalyticsFactory.get(ExportModule_AwsIoTAnalyticsFactory.java:29)
at com.amazonaws.iot.greengrass.streammanager.dagger.ExportModule_AwsIoTAnalyticsFactory.get(ExportModule_AwsIoTAnalyticsFactory.java:10)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at com.amazonaws.iot.greengrass.streammanager.dagger.ExportModule_ExportStreamFactoryFactory.get(ExportModule_ExportStreamFactoryFactory.java:68)
at com.amazonaws.iot.greengrass.streammanager.dagger.ExportModule_ExportStreamFactoryFactory.get(ExportModule_ExportStreamFactoryFactory.java:16)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at com.amazonaws.iot.greengrass.streammanager.dagger.ExportModule_ExportManagerFactory.get(ExportModule_ExportManagerFactory.java:90)
at com.amazonaws.iot.greengrass.streammanager.dagger.ExportModule_ExportManagerFactory.get(ExportModule_ExportManagerFactory.java:20)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at com.amazonaws.iot.greengrass.streammanager.dagger.StreamServerModule_StreamServerFactory.get(StreamServerModule_StreamServerFactory.java:70)
at com.amazonaws.iot.greengrass.streammanager.dagger.StreamServerModule_StreamServerFactory.get(StreamServerModule_StreamServerFactory.java:16)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at com.amazonaws.iot.greengrass.streammanager.dagger.DaggerStreamManagerServiceComponent.streamServer(DaggerStreamManagerServiceComponent.java:281)
at com.amazonaws.iot.greengrass.streammanager.StreamManagerService.main(StreamManagerService.java:44)
Caused by: java.net.SocketTimeoutException: connect timed out
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
at java.base/java.net.Socket.connect(Socket.java:609)
at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:177)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1253)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1232)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081)
at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1015)
at com.amazonaws.internal.ConnectionUtils.connectToEndpoint(ConnectionUtils.java:52)
at com.amazonaws.internal.EC2ResourceFetcher.doReadResource(EC2ResourceFetcher.java:80)
... 30 more

The StreamManager code started as you can see.

FYI I tried on java 8 and java 11. Same problem on both versions.

Looks like the greengrass is not able to start StreamManager and I'm out of ideas why...
Please help.

asked 3 years ago361 views
2 Answers
0

The reason for the issue is most likely file system permissions since you have installed greengrass under your personal user's home directory. Greengrass will run the app using "ggc_user" which won't have permissions to read your own home directory. Set the permissions on "/home" "/home/szymon" "/home/szymon/dev" "/home/szymon/dev/greengrass" "/home/szymon/dev/greengrass/v2" all to be 755 so that other users have read and execute permissions on those directories. This will then allow ggc_user to read the files it needs access to.

AWS
EXPERT
answered 3 years ago
0

Hi,
Yes. You are right but I also found interesting behavior during installation of the greengrass itself. When you run the initial script to install the greengrass it changes the root folder to 700 which is strange because this was causing the problem so eventually it blocks itself (?!).
As an example I installed greengrass:
java -Dlog.store=FILE -jar ./GreengrassCore/lib/Greengrass.jar --aws-region eu-central-1 --root /opt/greengrass ....
and by default /opt is 755 but after installation /opt has been changed to 700 and the problem with stream manager occurred.

After changing the /opt to 755 problem was resolved. I'm guessing that there is some bug in the code which is initializing greengrass.

Edited by: szymon888 on Jan 21, 2021 9:17 AM

answered 3 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions