opensensorhub / osh-core

OpenSensorHub Core Modules
http://docs.opensensorhub.org
Mozilla Public License 2.0
32 stars 16 forks source link

Database load error when using OSGi and POSTing datastreams via ConnectedSystems API #232

Open ChainReaction31 opened 1 year ago

ChainReaction31 commented 1 year ago

When inserting a datastream via the Connected Systems API into a node using OSGi, the database encounters a mapping error. This results in the insertion failing.

Affects v2 branch.

2023-01-26 16:57:07.583 INFO  SWEApiService:14b08253 [qtp481353845-302] - POST /sensorhub/api/systems/fnurah7mkqbbg/datastreams (from ip=192.168.56.1, user=anonymous)
2023-01-26 16:57:07.589 ERROR SWEApiService:14b08253 [SWAPool-2] - Internal server error while processing request POST /sensorhub/api/systems/fnurah7mkqbbg/datastreams (from ip=192.168.56.1, user=anonymous)
java.lang.IllegalStateException: Error loading class mapping
    at org.sensorhub.impl.datastore.h2.kryo.PersistentClassResolver.loadMappings(PersistentClassResolver.java:100)
    at org.sensorhub.impl.datastore.h2.kryo.KryoDataType$KryoInstance.<init>(KryoDataType.java:74)
    at org.sensorhub.impl.datastore.h2.kryo.KryoDataType$1.create(KryoDataType.java:110)
    at org.sensorhub.impl.datastore.h2.kryo.KryoDataType$1.create(KryoDataType.java:104)
    at com.esotericsoftware.kryo.util.Pool.obtain(Pool.java:80)
    at org.sensorhub.impl.datastore.h2.kryo.KryoDataType.getKryo(KryoDataType.java:138)
    at org.sensorhub.impl.datastore.h2.kryo.KryoDataType.initRecordSize(KryoDataType.java:217)
    at org.sensorhub.impl.datastore.h2.kryo.KryoDataType.getMemory(KryoDataType.java:151)
    at org.h2.mvstore.Page.insertLeaf(Page.java:566)
    at org.h2.mvstore.MVBTreeMap.put(MVBTreeMap.java:215)
    at org.h2.mvstore.MVMap.put(MVMap.java:124)
    at org.sensorhub.impl.datastore.h2.MVDataStreamStoreImpl.put(MVDataStreamStoreImpl.java:430)
    at org.sensorhub.impl.datastore.h2.MVDataStreamStoreImpl.add(MVDataStreamStoreImpl.java:229)
    at org.sensorhub.impl.system.SystemTransactionHandler.addOrUpdateDataStream(SystemTransactionHandler.java:339)
    at org.sensorhub.impl.service.sweapi.obs.DataStreamHandler.addEntry(DataStreamHandler.java:165)
    at org.sensorhub.impl.service.sweapi.obs.DataStreamHandler.addEntry(DataStreamHandler.java:44)
    at org.sensorhub.impl.service.sweapi.resource.BaseResourceHandler.create(BaseResourceHandler.java:327)
    at org.sensorhub.impl.service.sweapi.resource.BaseResourceHandler.doPost(BaseResourceHandler.java:141)
    at org.sensorhub.impl.service.sweapi.obs.DataStreamHandler.doPost(DataStreamHandler.java:93)
    at org.sensorhub.impl.service.sweapi.resource.BaseResourceHandler.doPost(BaseResourceHandler.java:136)
    at org.sensorhub.impl.service.sweapi.RootHandler.doPost(RootHandler.java:53)
    at org.sensorhub.impl.service.sweapi.RestApiServlet.lambda$doPost$1(RestApiServlet.java:208)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.ClassNotFoundException: org.sensorhub.impl.service.sweapi.system.SystemFeatureAdapter not found by org.sensorhub.sensorhub-core [4]
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1585)
    at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1970)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at org.sensorhub.impl.datastore.h2.kryo.PersistentClassResolver.loadMappings(PersistentClassResolver.java:94)
    ... 28 common frames omitted