yamcs / quickstart

Get started with Yamcs
https://yamcs.org
20 stars 21 forks source link

[Docker] YAMCS fails to load `SystemParametersService` when using `make all` #29

Closed ozyx closed 1 month ago

ozyx commented 1 month ago

The docker workflow fails to start YAMCS since 57673e1. YAMCS fails to create a single parameter type with the following runtime error:

Downloaded from central: https://repo.maven.apache.org/maven2/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11.jar (6.8 MB at 11 MB/s)
2024-07-24 11:32:00 [INFO] 
2024-07-24 11:32:00 [INFO] <<< yamcs-maven-plugin:1.3.1:run (default-cli) < process-classes @ myproject <<<
2024-07-24 11:32:00 [INFO] 
2024-07-24 11:32:00 [INFO] 
2024-07-24 11:32:00 [INFO] --- yamcs-maven-plugin:1.3.1:run (default-cli) @ myproject ---
2024-07-24 11:32:00 [INFO] Creating configuration at /yamcs/target/yamcs
2024-07-24 11:32:01 18:32:01.885 _global [1] YamcsServer Loading service HttpServer
2024-07-24 11:32:02 18:32:02.132 _global [1] RdbStorageEngine Creating or loading tablespace _global
2024-07-24 11:32:02 18:32:02.189 _global [1] Tablespace [_global] Opened tablespace database yamcs-data/_global.rdb
2024-07-24 11:32:02 18:32:02.190 _global [1] Tablespace [_global] Records: ~7, metadata records: ~19, maxTbsIndex: 9
2024-07-24 11:32:02 18:32:02.255 _global [1] Tablespace [_global] Loaded 3 tables for instance _global
2024-07-24 11:32:02 18:32:02.769 _global [1] YamcsServer Loading online instance 'myproject'
2024-07-24 11:32:02 18:32:02.961 _global [1] MdbFactory Loaded XTCE DB from /yamcs/target/yamcs/cache/28B0382A87988B8B3D552183D22DFC97FD1836ED.serialized with 3 containers, 40 parameters and 5 commands
2024-07-24 11:32:02 18:32:02.963 _global [1] RdbStorageEngine Creating or loading tablespace myproject
2024-07-24 11:32:03 18:32:03.031 _global [1] Tablespace [myproject] Opened tablespace database yamcs-data/myproject.rdb
2024-07-24 11:32:03 18:32:03.031 _global [1] Tablespace [myproject] Records: ~6133903, metadata records: ~135, maxTbsIndex: 131
2024-07-24 11:32:03 18:32:03.081 _global [1] Tablespace [myproject] Loaded 16 tables for instance myproject
2024-07-24 11:32:03 18:32:03.096 myproject [1] YamcsServerInstance Loading service XtceTmRecorder
2024-07-24 11:32:03 18:32:03.097 myproject [1] YamcsServerInstance Loading service ParameterRecorder
2024-07-24 11:32:03 18:32:03.099 myproject [1] YamcsServerInstance Loading service AlarmRecorder
2024-07-24 11:32:03 18:32:03.100 myproject [1] YamcsServerInstance Loading service EventRecorder
2024-07-24 11:32:03 18:32:03.101 myproject [1] YamcsServerInstance Loading service ReplayServer
2024-07-24 11:32:03 18:32:03.102 myproject [1] YamcsServerInstance Loading service SystemParametersService
2024-07-24 11:32:03 18:32:03.106 myproject [1] YamcsServerInstance Loading service ProcessorCreatorService
2024-07-24 11:32:03 18:32:03.107 myproject [1] YamcsServerInstance Loading service CommandHistoryRecorder
2024-07-24 11:32:03 18:32:03.108 myproject [1] YamcsServerInstance Loading service ParameterArchive
2024-07-24 11:32:03 18:32:03.116 myproject [1] YamcsServerInstance Loading service ParameterListService
2024-07-24 11:32:03 18:32:03.117 myproject [1] YamcsServerInstance Loading service TimelineService
2024-07-24 11:32:03 18:32:03.862 _global [1] YamcsServer Instance myproject failed: java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "this.subsystemWriters" is null
2024-07-24 11:32:03     org.yamcs.mdb.Mdb.getWriter(Mdb.java:90)
2024-07-24 11:32:03     org.yamcs.mdb.Mdb.getOrCreateParameterType(Mdb.java:273)
2024-07-24 11:32:03     org.yamcs.mdb.Mdb.getOrCreateBasicParameterType(Mdb.java:234)
2024-07-24 11:32:03     org.yamcs.parameter.SystemParametersService.getBasicType(SystemParametersService.java:404)
2024-07-24 11:32:03     org.yamcs.parameter.SystemParametersService.createSystemParameter(SystemParametersService.java:320)
2024-07-24 11:32:03     org.yamcs.parameter.SystemParametersService.createSystemParameter(SystemParametersService.java:301)
2024-07-24 11:32:03     org.yamcs.parameter.JvmParameterProducer.<init>(JvmParameterProducer.java:19)
2024-07-24 11:32:03     org.yamcs.parameter.SystemParametersService.init(SystemParametersService.java:114)
2024-07-24 11:32:03     org.yamcs.YamcsServer.initServices(YamcsServer.java:193)
2024-07-24 11:32:03     org.yamcs.YamcsServerInstance.doInit(YamcsServerInstance.java:146)
2024-07-24 11:32:03     org.yamcs.YamcsInstanceService.initAsync(YamcsInstanceService.java:61)
2024-07-24 11:32:03     org.yamcs.YamcsServerInstance.init(YamcsServerInstance.java:121)
2024-07-24 11:32:03     org.yamcs.YamcsServer.addInstance(YamcsServer.java:572)
2024-07-24 11:32:03     org.yamcs.YamcsServer.addGlobalServicesAndInstances(YamcsServer.java:1370)
2024-07-24 11:32:03     org.yamcs.YamcsServer.prepareStart(YamcsServer.java:1191)
2024-07-24 11:32:03     org.yamcs.YamcsServer.main(YamcsServer.java:980)
2024-07-24 11:32:03 
2024-07-24 11:32:03 18:32:03.862 _global [1] YamcsServer Failure while attempting to validate configuration: java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "this.subsystemWriters" is null
2024-07-24 11:32:03     org.yamcs.mdb.Mdb.getWriter(Mdb.java:90)
2024-07-24 11:32:03     org.yamcs.mdb.Mdb.getOrCreateParameterType(Mdb.java:273)
2024-07-24 11:32:03     org.yamcs.mdb.Mdb.getOrCreateBasicParameterType(Mdb.java:234)
2024-07-24 11:32:03     org.yamcs.parameter.SystemParametersService.getBasicType(SystemParametersService.java:404)
2024-07-24 11:32:03     org.yamcs.parameter.SystemParametersService.createSystemParameter(SystemParametersService.java:320)
2024-07-24 11:32:03     org.yamcs.parameter.SystemParametersService.createSystemParameter(SystemParametersService.java:301)
2024-07-24 11:32:03     org.yamcs.parameter.JvmParameterProducer.<init>(JvmParameterProducer.java:19)
2024-07-24 11:32:03     org.yamcs.parameter.SystemParametersService.init(SystemParametersService.java:114)
2024-07-24 11:32:03     org.yamcs.YamcsServer.initServices(YamcsServer.java:193)
2024-07-24 11:32:03     org.yamcs.YamcsServerInstance.doInit(YamcsServerInstance.java:146)
2024-07-24 11:32:03     org.yamcs.YamcsInstanceService.initAsync(YamcsInstanceService.java:61)
2024-07-24 11:32:03     org.yamcs.YamcsServerInstance.init(YamcsServerInstance.java:121)
2024-07-24 11:32:03     org.yamcs.YamcsServer.addInstance(YamcsServer.java:572)
2024-07-24 11:32:03     org.yamcs.YamcsServer.addGlobalServicesAndInstances(YamcsServer.java:1370)
2024-07-24 11:32:03     org.yamcs.YamcsServer.prepareStart(YamcsServer.java:1191)
2024-07-24 11:32:03     org.yamcs.YamcsServer.main(YamcsServer.java:980)
2024-07-24 11:32:03 
2024-07-24 11:32:03 [INFO] ------------------------------------------------------------------------
2024-07-24 11:32:03 [INFO] BUILD SUCCESS
2024-07-24 11:32:03 [INFO] ------------------------------------------------------------------------
2024-07-24 11:32:03 [INFO] Total time:  24.218 s
2024-07-24 11:32:03 [INFO] Finished at: 2024-07-24T18:32:03Z
2024-07-24 11:32:03 [INFO] ------------------------------------------------------------------------
fqqb commented 1 month ago

Sounds related to https://github.com/yamcs/yamcs/commit/9cbbe00cc6b5e419eb94d06153e81f1ee4e517bf This commit in fact fixes the bug, but I think in your case, a cached MDB may still be used.

You could try removing "target/yamcs/cache" (or run a mvn clean), this should be a one-time action.

ozyx commented 1 month ago

@fqqb Removing the target/ folder worked! Thanks for your help. I've created this issue to add a clean step to the Makefile to ensure a reproducible build