Skip to content
This repository was archived by the owner on Jan 9, 2025. It is now read-only.
This repository was archived by the owner on Jan 9, 2025. It is now read-only.

StorageExceptionDisruption Error #684

@JustinVoitel

Description

@JustinVoitel

Environment Details

  • MicroStream Version: 08.01.01-MS-GA
  • JDK version: openjdk 21.0.1 2023-10-17
  • OS: Linux Alpine 3.19.0
  • Used frameworks: Spring Boot + Vaadin

Describe the bug

We encountered the following exception during Runtime:

Caused by: one.microstream.persistence.exceptions.PersistenceExceptionTransfer
        at one.microstream.storage.embedded.types.EmbeddedStorageBinaryTarget$Default.write(EmbeddedStorageBinaryTarget.java:90) ~[microstream-storage-embedded-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.embedded.types.EmbeddedStorageBinaryTarget$Default.write(EmbeddedStorageBinaryTarget.java:49) ~[microstream-storage-embedded-08.01.01-MS-GA.jar:?]
        at one.microstream.persistence.binary.types.BinaryStorer$Default.commit(BinaryStorer.java:522) ~[microstream-persistence-binary-08.01.01-MS-GA.jar:?]
        at one.microstream.persistence.types.PersistenceManager$Default.store(PersistenceManager.java:305) ~[microstream-persistence-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.types.StorageConnection.store(StorageConnection.java:401) ~[microstream-storage-08.01.01-MS-GA.jar:?]
        at de.app.db.data.UsersQuery.storeCollectionItem(UsersQuery.java:58) ~[classes/:2.1.0-beta.27]
        ... more
Caused by: one.microstream.storage.exceptions.StorageExceptionDisruptingExceptions: Disruptions: {one.microstream.storage.exceptions.StorageExceptionGarbageCollector:Exception in channel #0,}
        at one.microstream.storage.types.StorageOperationController$Default.checkProcessingEnabled(StorageOperationController.java:139) ~[microstream-storage-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.types.StorageTaskBroker$Default.enqueueTask(StorageTaskBroker.java:209) ~[microstream-storage-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.types.StorageTaskBroker$Default.enqueueTask(StorageTaskBroker.java:200) ~[microstream-storage-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.types.StorageTaskBroker$Default.enqueueTaskAndNotifyAll(StorageTaskBroker.java:191) ~[microstream-storage-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.types.StorageTaskBroker$Default.enqueueStoreTask(StorageTaskBroker.java:410) ~[microstream-storage-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.types.StorageRequestAcceptor$Default.storeData(StorageRequestAcceptor.java:180) ~[microstream-storage-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.embedded.types.EmbeddedStorageBinaryTarget$Default.write(EmbeddedStorageBinaryTarget.java:86) ~[microstream-storage-embedded-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.embedded.types.EmbeddedStorageBinaryTarget$Default.write(EmbeddedStorageBinaryTarget.java:49) ~[microstream-storage-embedded-08.01.01-MS-GA.jar:?]
        at one.microstream.persistence.binary.types.BinaryStorer$Default.commit(BinaryStorer.java:522) ~[microstream-persistence-binary-08.01.01-MS-GA.jar:?]
        at one.microstream.persistence.types.PersistenceManager$Default.store(PersistenceManager.java:305) ~[microstream-persistence-08.01.01-MS-GA.jar:?]
        at one.microstream.storage.types.StorageConnection.store(StorageConnection.java:401) ~[microstream-storage-08.01.01-MS-GA.jar:?]
        at de.app.db.data.UsersQuery.storeCollectionItem(UsersQuery.java:58) ~[classes/:2.1.0-beta.27]
	... more

After restarting the Servlet we can no longer initialize MicroStream:
Caused by: org.springframework.context.ApplicationContextException: Could not initiate Microstream properly: Problem in channel #0

Is there a way to figure out:

  • what exactly happened ?
  • whether the database can be "repaired" ? Or do we sorely rely on backups in this scenario ?
  • prevent this Error in the Future ?

To Reproduce

We have no Idea how it happened since it happened in a production database on runtime without further logging that can help us. We have a clue that a bug in the application (and a possible halt to a thead) caused the Garbage Collector to disrupt the DB.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions