英文:
Microstream one.microstream.storage.exceptions.StorageException: Problem in channel #0
问题
Microstream 在 Mac 上正常工作,但在 Linux 上出现问题。最初可能考虑权限问题,但已使用 root 执行 Java 代码。是否有人知道 Microstream 在 Mac 和 Linux 上的行为差异原因?
Microstream 在不同操作系统上出现问题可能是由于多种因素引起的,包括操作系统的不同配置和依赖项。要解决此问题,您可以尝试以下步骤:
-
确保 Linux 系统上的 Java 版本与 Mac 上的相同,并且已正确配置。
-
检查 Linux 系统上的文件系统权限,确保您有足够的权限来执行所需的文件操作。
-
确保 Linux 系统上已正确安装 Microstream 和相关依赖项。您可以尝试重新安装或更新 Microstream。
-
检查您的代码,确保它与 Linux 上的特定配置兼容。某些文件路径或系统调用可能需要根据不同的操作系统进行调整。
-
查看 Microstream 的文档和社区,看是否有人遇到类似的问题并找到了解决方法。
请注意,问题的根本原因可能需要更深入的调查,可能需要检查具体的 Microstream 和 Linux 配置以找到解决方案。如果问题仍然存在,您可以考虑联系 Microstream 社区或支持团队以获取更多帮助。
英文:
I have following code:
return vertx.fileSystem().exists(storeFile).onSuccess(isExists -> {
try {
if (isExists) {
this.storageManager = EmbeddedStorage.start(NioFileSystem.New().ensureDirectoryPath(this.filePath));
this.model = tClass.cast(this.storageManager.root());
log.atDebug().log("[PROVIDER] DB {} Model load successfully!", this.storageManager.databaseName());
} else {
this.model = tClass.getDeclaredConstructor().newInstance();
this.storageManager = EmbeddedStorage.start(this.model, NioFileSystem.New().ensureDirectoryPath(this.filePath));
log.atDebug().log("[PROVIDER] DB {} Create new model!", this.storageManager.databaseName());
}
} catch (InvocationTargetException | InstantiationException | IllegalAccessException |
NoSuchMethodException e) {
log.atError().withThrowable(e).log("Store file {} cannot be created", storeFile);
}
});
on Mac the code is working, but on Raspberry Pi Linux, I receive the message
one.microstream.storage.exceptions.StorageException: Problem in channel #1
at one.microstream.storage.types.StorageChannelTask$Abstract.checkForProblems(StorageChannelTask.java:114) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageChannelTask$Abstract.waitOnCompletion(StorageChannelTask.java:173) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageSystem$Default.startThreads(StorageSystem.java:336) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageSystem$Default.internalStartUp(StorageSystem.java:516) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageSystem$Default.start(StorageSystem.java:600) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageSystem$Default.start(StorageSystem.java:78) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.embedded.types.EmbeddedStorageManager$Default.start(EmbeddedStorageManager.java:245) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.embedded.types.EmbeddedStorageManager$Default.start(EmbeddedStorageManager.java:97) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.embedded.types.EmbeddedStorage.createAndStartStorageManager(EmbeddedStorage.java:615) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.embedded.types.EmbeddedStorage.start(EmbeddedStorage.java:559) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.embedded.types.EmbeddedStorage.start(EmbeddedStorage.java:392) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at tools.vlab.alpha.core.DataProviderAsync.start(DataProviderAsync.java:33) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.vertx.core.AbstractVerticle.start(AbstractVerticle.java:106) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.vertx.core.impl.DeploymentManager.lambda$doDeploy$5(DeploymentManager.java:196) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:264) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:246) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.vertx.core.impl.EventLoopContext.lambda$runOnContext$0(EventLoopContext.java:43) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.InternalError: a fault occurred in a recent unsafe memory access operation in compiled Java code
at one.microstream.storage.types.StorageTransactionsAnalysis$Logic.setEntryCommon(StorageTransactionsAnalysis.java:189) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageTransactionsAnalysis$Logic.setEntryFileCreation(StorageTransactionsAnalysis.java:199) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageFileManager$Default.writeTransactionsEntryFileCreation(StorageFileManager.java:1133) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageFileManager$Default.createNewStorageFile(StorageFileManager.java:513) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageFileManager$Default.addFirstFile(StorageFileManager.java:312) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageFileManager$Default.initializeForNoFiles(StorageFileManager.java:1040) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageFileManager$Default.initializeStorage(StorageFileManager.java:866) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageChannel$Default.initializeStorage(StorageChannel.java:738) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageChannelTaskInitialize$Default.succeed(StorageChannelTaskInitialize.java:201) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageChannelTaskInitialize$Default.succeed(StorageChannelTaskInitialize.java:36) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageChannelSynchronizingTask$AbstractCompletingTask.synchronizedComplete(StorageChannelSynchronizingTask.java:84) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageChannelSynchronizingTask$AbstractCompletingTask.complete(StorageChannelSynchronizingTask.java:132) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageChannelTask$Abstract.processBy(StorageChannelTask.java:268) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageChannel$Default.work(StorageChannel.java:409) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
at one.microstream.storage.types.StorageChannel$Default.run(StorageChannel.java:492) ~[alpha-ressource-1.0-SNAPSHOT-jar-with-dependencies.jar:?]
... 1 more
So Microstream just work on Mac not on Linux. At first I thought because of the permission, but i execute the Java code with root. Do some knows why the behavior of Microstream on Mac is different than on Linux?
答案1
得分: 0
请检查您是否在树莓派上使用的是64位系统。默认是32位,在32位系统上Microstream不可用。
英文:
Please check, that you are using 64 bit system on Rasberry. Default is 32 bit and under 32 bit Microstream does not work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论