All,

I am still looking for a solution for the issue below.

I have tried the following since I sent the original email below:

  1.  Loaded a different topology (word-count) - results were the same.  So the 
issue is not specific to the Exclamation Topology.
  2.  Searched all files in both nimbus and supervisor for instances of the 
unrecognized VM option - I did not find any.
  3.  I cloned the Storm repo from Github and searched the code base - only 
occurrences were in default.yaml and integration-test/config/storm.yaml.
     *   I believe presence in default.yaml is expected - and is supposed to be 
overridden by settings in storm.yaml and the command line (I am using the 
latter).

I am now looking through the code to see if I can tell what might be happening.

If anyone knows of another location where the code may be getting the GC 
logging settings or any other possible reasons and/or workarounds/fixes for the 
issue, I would greatly appreciate it if you could share.

Thanks,
Shashi

From: Prabhakar, Shashi <[email protected]>
Sent: Friday, April 30, 2021 12:39 PM
To: [email protected]
Subject: [Apache Storm 2.2.0] No spout activity from ExclamationTopology 
topology on remote Apache Storm 2.2.0 cluster (running in Docker) due to worker 
JVM creation failure (Unrecognized VM creation option 'PrintGCDateStamps')

*External Message* - Use caution before opening links or attachments

Hello all,

I am trying to submit and run the ExclamationTopology topology (from the Apache 
Storm 2.2 Storm starter jar file) in remote mode on an Apache Storm 2.2.0 
cluster running in Docker.  The topology was successfully submitted (it shows 
up in Storm UI) - but I am not seeing any activity from the spout.  This issue 
does NOT occur (Spout activity is observed) if I submit the topology in local 
mode.

Investigation findings and resolutions attempted:

  *   The Worker logs (on the supervisor node) show the following:

2021-04-30 14:34:10.781 STDERR Thread-0 [INFO] Unrecognized VM option 
'PrintGCDateStamps'

2021-04-30 14:34:10.781 STDERR Thread-1 [INFO] [0.001s][warning][gc] -Xloggc is 
deprecated. Will use -Xlog:gc:artifacts/gc.log instead.

2021-04-30 14:34:10.800 STDERR Thread-0 [INFO] Error: Could not create the Java 
Virtual Machine.

2021-04-30 14:34:10.802 STDERR Thread-0 [INFO] Error: A fatal exception has 
occurred. Program will exit.

  *   I found 2 reports of this issue on the Internet where the root causes 
matched what I was seeing on my environment:
     *   Outdated default JVM GC Logging options in worker.childopts:  
https://stackoverflow.com/questions/56902645/topology-just-idles-on-storm-in-remote-mode<https://urldefense.com/v3/__https:/stackoverflow.com/questions/56902645/topology-just-idles-on-storm-in-remote-mode__;!!In4Qlw!5ekC-DrDKASw4Z6oGRpw6qP5oqnB1ScA4dUySyomHN531RneaqYYWc_bTLBe9LdJww$>
     *   Mismatch in JDK versions used to build Storm and the topology jars:  
https://stackoverflow.com/questions/58405388/storm-topology-not-executing-in-cluster<https://urldefense.com/v3/__https:/stackoverflow.com/questions/58405388/storm-topology-not-executing-in-cluster__;!!In4Qlw!5ekC-DrDKASw4Z6oGRpw6qP5oqnB1ScA4dUySyomHN531RneaqYYWc_bTLDvgEXDbQ$>
  *   I deleted PrintGCDateStamps and all other GC print settings) from the 
worker.childopts configuration option as recommended in the first post and 
verified that this change took effect as follows:
     *   Nimbus and Topology configuration settings in Storm UI show that the 
worker_childopts setting no longer has these settings.
     *   The nimbus and supervisor logs no longer show the GC logging options 
for worker.childopts in the commands when each is started up.
     *   NOTE:  I am sending the modified value of worker.childopts in the 
startup commands for nimbus and supervisor (see Docker compose file below) - 
had to do this as the recommended way of overriding the default value in 
storm.yaml did not work for me.  I will report this in a separate email.
  *   I also verified (using the javap utility) that the version of JDK used to 
build ExclamationTopology.class is identical to that used to build the class 
files in Apache Storm 2.2.0 server, client and core (I compared with a randomly 
picked class file from each of the latter).
  *   However, the issue is continuing to occur:  The worker logs continue to 
report the unrecognized VM option.
  *   I have tried restarting zookeeper and the 3 Storm containers as well as 
completely deleting and recreating them - but neither had any effect.

Does anyone know of/have any thoughts on other possible root cause(s) and/or 
what else I can try to resolve it?

Please see below for additional information on my environment.  Please let me 
know if you need any other information/have any questions and/or if I should 
log a JIRA ticket.

Any help would be greatly appreciated.
Thanks,
Shashi

Additional Information:

  *   Apache Storm 2.2.0 Docker image downloaded from Docker Hub: 
https://hub.docker.com/_/storm<https://urldefense.com/v3/__https:/hub.docker.com/_/storm__;!!In4Qlw!5ekC-DrDKASw4Z6oGRpw6qP5oqnB1ScA4dUySyomHN531RneaqYYWc_bTLCnIDOqgA$>
  *   Storm cluster configuration:  1 Nimbus instance, 1 Supervisor instance, 1 
Nimbus UI instance
  *   ExclamationTopology topology being loaded is from the Storm Starter 2.2.0 
jar downloaded from Maven Repository: 
https://mvnrepository.com/artifact/org.apache.storm/storm-starter/2.2.0<https://urldefense.com/v3/__https:/mvnrepository.com/artifact/org.apache.storm/storm-starter/2.2.0__;!!In4Qlw!5ekC-DrDKASw4Z6oGRpw6qP5oqnB1ScA4dUySyomHN531RneaqYYWc_bTLAnTjblvQ$>
  *   Commands to submit the topology (executed in the CLI window of the nimbus 
container in Docker Desktop - current directory /apache-storm-2.2.0):
     *   Remote (issue occurs):  storm jar examples/storm-starter-2.2.0.jar 
org.apache.storm.starter.ExclamationTopology
     *   Local (issue does not occur):  storm local 
examples/storm-starter-2.2.0.jar org.apache.storm.starter.ExclamationTopology
  *   Running everything on Windows 10 laptop.
  *   Docker Compose file (showing only the services related to Apache Storm - 
the file does have entries for other services needed for our application):
  zookeeper:
    image: confluentinc/cp-zookeeper:6.0.1
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - "2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
  nimbus:
    image: storm
    container_name: nimbus
    command: storm nimbus -c worker.childopts="-Xmx%HEAP-MEM%m 
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=artifacts/heapdump"
    depends_on:
      - zookeeper
    links:
      - zookeeper
    restart: always
    ports:
      - 6627:6627
    volumes:
      - ./storm/nimbus/conf:/apache-storm-2.2.0/conf
      - ./storm/nimbus/examples:/apache-storm-2.2.0/examples
      - ./storm/nimbus/logs:/logs
    user: root

  nimbus-ui:
    image: storm
    container_name: nimbus-ui
    command: storm ui
    depends_on:
      - nimbus
    links:
      - nimbus
    restart: always
    ports:
      - 8080:8080
    volumes:
      - ./storm/nimbus-ui/conf:/apache-storm-2.2.0/conf
      - ./storm/nimbus-ui/logs:/logs
      - ./storm/nimbus-ui/examples:/apache-storm-2.2.0/examples

  supervisor:
    image: storm
    container_name: supervisor
    command: storm supervisor -c worker.childopts="-Xmx%HEAP-MEM%m 
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=artifacts/heapdump"
    depends_on:
      - nimbus
      - zookeeper
    links:
      - nimbus
      - zookeeper
    restart: always
    volumes:
      - ./storm/supervisor/conf:/apache-storm-2.2.0/conf
      - ./storm/supervisor/logs:/logs

  *   Storm.yaml (Nimbus) - commented lines omitted
storm.zookeeper.servers:
     - "localhost"
nimbus.seeds: "localhost"

### ui.* configs are for the master
ui.host: localhost
ui.port: 8080
ui.header.buffer.bytes: 4096

### worker.* configs are for task workers
#worker.childopts: "-Xmx%HEAP-MEM%m -XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=artifacts/heapdump"

  *   Storm.yaml (Supervisor) - commented lines omitted.
storm.zookeeper.servers:
     - "localhost"
nimbus.seeds: "localhost"

### worker.* configs are for task workers
#worker.childopts: "-Xmx%HEAP-MEM%m -XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=artifacts/heapdump"


Reply via email to