rdblue commented on a change in pull request #4071:
URL: https://github.com/apache/iceberg/pull/4071#discussion_r825199745



##########
File path: api/src/main/java/org/apache/iceberg/ManageSnapshots.java
##########
@@ -80,4 +80,107 @@
    * wapId
    */
   ManageSnapshots cherrypick(long snapshotId);
+
+  /**
+   * Create a new branch pointing to the given snapshot id.
+   *
+   * @param name branch name
+   * @param snapshotId id of the snapshot which will be the head of the branch
+   * @return this for method chaining
+   * @throws IllegalArgumentException if a branch with the given name already 
exists
+   */
+  ManageSnapshots createBranch(String name, long snapshotId);
+
+  /**
+   * Create a new branch pointing to the given snapshot id with the given 
retention properties.
+   *
+   * @param name branch name
+   * @param snapshotId id of the snapshot which will be the head of the branch
+   * @param maxRefAgeMs retention age in milliseconds of the branch reference 
itself
+   * @param minSnapshotsToKeep minimum number of snapshots to retain on the 
branch
+   * @param maxSnapshotAgeMs max age in milliseconds of a snapshot that should 
be retained on the branch
+   * @return this for method chaining
+   * @throws IllegalArgumentException if a branch with the given name already 
exists
+   */
+  ManageSnapshots createBranch(
+      String name,
+      long snapshotId,
+      Long maxRefAgeMs,
+      Integer minSnapshotsToKeep,
+      Long maxSnapshotAgeMs);
+
+  /**
+   * Create a new tag pointing to the given snapshot id
+   *
+   * @param name tag name
+   * @param snapshotId snapshotId for the head of the new branch.
+   * @return this for method chaining
+   * @throws ValidationException if a tag with the given name already exists
+   */
+  ManageSnapshots createTag(String name, long snapshotId);
+
+  /**
+   * Create a new tag pointing to the given snapshot id with the given 
retention properties.
+   *
+   * @param name tag name
+   * @param snapshotId snapshotId for the head of the new branch.
+   * @param maxRefAgeMs retention age in milliseconds of the tag reference 
itself
+   * @return this for method chaining
+   * @throws ValidationException if a tag with the given name already exists
+   */
+  ManageSnapshots createTag(String name, long snapshotId, Long maxRefAgeMs);
+
+  /**
+   * Remove a branch by name
+   *
+   * @param name branch name
+   * @return this for method chaining
+   * @throws ValidationException if the branch does not exist
+   */
+  ManageSnapshots removeBranch(String name);
+
+  /**
+   * Updates the retention policy for a branch.
+   *
+   * @param name branch name
+   * @param maxRefAgeMs retention age in milliseconds of the branch reference 
itself
+   * @param minSnapshotsToKeep minimum number of snapshots to retain on the 
branch
+   * @param maxSnapshotAgeMs max age in milliseconds of a snapshot that should 
be retained on the branch
+   * @return this for method chaining
+   * @throws ValidationException if the branch does not exist
+   */
+  ManageSnapshots setBranchRetention(
+      String name,
+      int minSnapshotsToKeep,
+      Long maxRefAgeMs,
+      Long maxSnapshotAgeMs);

Review comment:
       I would use specific methods for minSnapshopsToKeep, maxAge, and 
maxSnapshotAge




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to