-
Notifications
You must be signed in to change notification settings - Fork 28
Need help with "Error occurred in storage channel" #210
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Stack trace in production: 2024-04-30T17:16:42.127Z DEBUG 1 --- [torageChannel-0] o.e.store.storage.types.StorageChannel : StorageChannel#0 loading 5223 references |
The Errors indicate that the storage has some persisted objects that reference to non-persisted objects. The zombie Objects are most likely caused by that missing objects. |
Thanks @hg-ms , But spring controls the storage manager for me And this is how I access the storage manager
|
I use spring too, to handle the storage manager. Could that be the cause of this problem and #95 as well, i.e. a bug in spring integration? Is there something wrong in this configuration? My org.eclipse.store.storage-directory=store
org.eclipse.store.root=[xx.yy].store.DataRoot
org.eclipse.store.rest.enabled=true
vaadin.url-mapping=/store-console/* Storage manager access via @Component
public class ConteggioRepository {
private final EmbeddedStorageManager storageManager;
public ConteggioRepository(EmbeddedStorageManager storageManager) {
this.storageManager=storageManager;
}
// ...several methods with mutex locking using @Read and @Write, e.g.:
@Read
public List<Conteggio> elenca() {
return ((DataRoot) storageManager.root()).getConteggi();
}
@Write
void aggiungi(Conteggio conteggio) {
var conteggi=((DataRoot) storageManager.root()).getConteggi();
conteggi.add(conteggio);
storageManager.store(conteggi);
} |
I found this comment in one official example : In my code instead I return the original List (for read only, I never modify it). Is this a mistake? Can this corrupt the storage in the long run? |
If you do not modify this list at all in another thread, there is no problem. However, if you return the list that you modify in another thread, this will be a problem. This is because Spring reads this list and converts it to JSON. If you add an element to this list in another thread, you will get a concurrent exception, even if you do not modify it in this call. |
I'm sure that I don't change the list anywhere. Anyway I changed the code to copy the list as in the example, unfortunately I don't think that this will solve the storage corruption that I experience every once in a while in production. I still think that a bug is lying somewhere in the spring integration. |
Could you provide me with your code (even privately) for review? It might help us find the problem. I've done a lot of tests to simulate a similar issue, but I haven't been able to reproduce it at all. |
I'm sending it to you, thanks |
Fixed in v 1.4.0. Please reopen if the error occurs again. |
Hello We are using Eclipse Store 2.0, similar to this thread, together with Spring Boot (3.3.5). Is there any way to reproduce it, to get more information or is there any change to start our application again? |
Environment Details
Describe the bug
Restarted my docker and got this after
2024-04-28T14:48:48.136Z ERROR 1 --- [torageChannel-0] o.e.s.storage.types.StorageChannelTask : Error occurred in storage channel#0 org.eclipse.store.storage.exceptions.StorageExceptionConsistency: No entity found for objectId 1000000000001142772 at org.eclipse.store.storage.types.StorageChannel$EntityCollectorByOid.accept(StorageChannel.java:870) ~[storage-1.3.1.jar:na] at org.eclipse.serializer.persistence.binary.types.LoadItemsChain$ChannelHashing$ChainItemObjectIdSet.iterate(LoadItemsChain.java:324) ~[persistence-binary-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageChannel$Default.collectLoadByOids(StorageChannel.java:635) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageRequestTaskLoadByOids$Default.internalProcessBy(StorageRequestTaskLoadByOids.java:52) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageRequestTaskLoadByOids$Default.internalProcessBy(StorageRequestTaskLoadByOids.java:22) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageChannelTask$Abstract.processBy(StorageChannelTask.java:244) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageChannel$Default.work(StorageChannel.java:453) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageChannel$Default.run(StorageChannel.java:536) ~[storage-1.3.1.jar:na] at java.base/java.lang.Thread.run(Unknown Source) ~[na:na] 2024-04-28T14:48:48.135Z ERROR 1 --- [torageChannel-1] o.e.s.storage.types.StorageChannelTask : Error occurred in storage channel#1 org.eclipse.store.storage.exceptions.StorageExceptionConsistency: No entity found for objectId 1000000000001252053 at org.eclipse.store.storage.types.StorageChannel$EntityCollectorByOid.accept(StorageChannel.java:870) ~[storage-1.3.1.jar:na] at org.eclipse.serializer.persistence.binary.types.LoadItemsChain$ChannelHashing$ChainItemObjectIdSet.iterate(LoadItemsChain.java:324) ~[persistence-binary-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageChannel$Default.collectLoadByOids(StorageChannel.java:635) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageRequestTaskLoadByOids$Default.internalProcessBy(StorageRequestTaskLoadByOids.java:52) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageRequestTaskLoadByOids$Default.internalProcessBy(StorageRequestTaskLoadByOids.java:22) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageChannelTask$Abstract.processBy(StorageChannelTask.java:244) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageChannel$Default.work(StorageChannel.java:453) ~[storage-1.3.1.jar:na] at org.eclipse.store.storage.types.StorageChannel$Default.run(StorageChannel.java:536) ~[storage-1.3.1.jar:na] at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
I Guess not easily reproduceable
Include stack traces or command outputs
Want to know how to overcome this issue and what to do next in this situation.
The text was updated successfully, but these errors were encountered: