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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions