HyeonUk Kang created ZEPPELIN-6269:
--------------------------------------

             Summary: Handle remove failures in NotebookRepoSync to prevent 
data inconsistency
                 Key: ZEPPELIN-6269
                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-6269
             Project: Zeppelin
          Issue Type: Improvement
          Components: zeppelin-zengine
    Affects Versions: 0.12.0
            Reporter: HyeonUk Kang
            Assignee: HyeonUk Kang
             Fix For: 0.12.0


Currently, the `NotebookRepoSync.remove()` method has a `TODO` comment 
indicating that it does not properly handle failures when removing a note from 
secondary storage. If an `IOException` occurs while trying to remove a note 
from one of the repositories, the `for` loop would terminate immediately. This 
leaves the note in an inconsistent state where it is deleted from some 
repositories but not from others, leading to data inconsistency. 

The updated logic ensures that a failure on one repository does not halt the 
entire process.

1.  The method will now attempt to remove the note from all configured 
repositories, regardless of any intermediate failures.
2.  All failures are logged, and the corresponding repositories are collected 
in a list.
3.  Only after trying to remove the note from every single repository will the 
method check the list of failures.
4.  If any removal attempts failed, a single `IOException` is thrown, 
consolidating the error details from all failed repositories.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to