Skip to content

Storage object recovery#634

Merged
hg-ms merged 14 commits intomainfrom
StorageObjectRecovery
Apr 14, 2026
Merged

Storage object recovery#634
hg-ms merged 14 commits intomainfrom
StorageObjectRecovery

Conversation

@hg-ms
Copy link
Copy Markdown
Contributor

@hg-ms hg-ms commented Apr 14, 2026

Recover an object by its ID from "deleted" files, if available

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an offline recovery utility to restore a previously persisted object by scanning deleted (“rescued”) data files and re-appending the object’s binary blob into live storage, along with documentation for operators.

Changes:

  • Introduces StorageObjectRestorer (default implementation) to locate an object blob in deleted files and append it back into live storage + write transactions log entries.
  • Extends StorageFileProvider / StorageFileNameProvider with APIs to enumerate and parse deleted data files in the deletion directory.
  • Documents the new recovery workflow and operational constraints in troubleshooting docs.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 8 comments.

File Description
storage/storage/src/main/java/org/eclipse/store/storage/util/StorageObjectRestorer.java New restoration utility that scans deleted data files, extracts entity blobs, appends to live data files, and writes transaction log entries.
storage/storage/src/main/java/org/eclipse/store/storage/types/StorageFileProvider.java Adds collectDeletedDataFiles(...) to iterate deleted/rescued channel data files under the deletion directory.
storage/storage/src/main/java/org/eclipse/store/storage/types/StorageFileNameProvider.java Adds parseDeletedDataInventoryFile(...) to parse rescued/deleted data file names (with deletion tag suffix).
docs/modules/storage/pages/addendum/troubleshooting.adoc Adds operator documentation for restoring deleted objects using the new restorer.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

…torageObjectRestorer.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown

Copilot AI commented Apr 14, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • central.sonatype.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.14/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/store/store org.codehaus.plexus.classworlds.launcher.Launcher -pl storage/storage -am test -DskipITs (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.14/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/store/store/storage/storage org.codehaus.plexus.classworlds.launcher.Launcher -f storage/storage/pom.xml test -DskipITs (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -classpath /tmp/semmleTempDir3400266225807960119/apache-maven-3.8.8/boot/plexus-classworlds-2.6.0.jar -Dclassworlds.conf=/tmp/semmleTempDir3400266225807960119/apache-maven-3.8.8/bin/m2.conf -Dmaven.home=/tmp/semmleTempDir3400266225807960119/apache-maven-3.8.8 -Dlibrary.jansi.path=/tmp/semmleTempDir3400266225807960119/apache-maven-3.8.8/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/store/store org.codehaus.plexus.classworlds.launcher.Launcher -f pom.xml -B -V -e -Dfindbugs.skip -Dcheckstyle.skip -Dpmd.skip=true -Dspotbugs.skip -Denforcer.skip -Dmaven.javadoc.skip -DskipTests (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

hg-ms and others added 2 commits April 14, 2026 10:32
…StorageFileNameProvider.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…torageObjectRestorer.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@hg-ms hg-ms requested a review from fh-ms April 14, 2026 12:48
@hg-ms hg-ms merged commit 9829e09 into main Apr 14, 2026
14 checks passed
@hg-ms hg-ms deleted the StorageObjectRecovery branch April 14, 2026 13:04
@fh-ms fh-ms added this to the 4.1.0 milestone Apr 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants