You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by jl...@apache.org on 2019/01/11 22:56:08 UTC

[incubator-pinot] branch handle-delete-aged-segments updated (8c3e7d6 -> ea1412c)

This is an automated email from the ASF dual-hosted git repository.

jlli pushed a change to branch handle-delete-aged-segments
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git.


 discard 8c3e7d6  Add touch method in PinotFS
     new ea1412c  Add touch method in PinotFS; Call touch when moving deleted segments.

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (8c3e7d6)
            \
             N -- N -- N   refs/heads/handle-delete-aged-segments (ea1412c)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/pinot/controller/helix/core/SegmentDeletionManager.java  | 2 ++
 1 file changed, 2 insertions(+)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[incubator-pinot] 01/01: Add touch method in PinotFS; Call touch when moving deleted segments.

Posted by jl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jlli pushed a commit to branch handle-delete-aged-segments
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit ea1412c887f16d404c8a7e23bac02548ee8669ba
Author: Jack Li(Analytics Engineering) <jl...@jlli-mn1.linkedin.biz>
AuthorDate: Fri Jan 11 14:03:40 2019 -0800

    Add touch method in PinotFS; Call touch when moving deleted segments.
---
 .../pinot/controller/helix/core/SegmentDeletionManager.java |  4 +++-
 .../main/java/org/apache/pinot/filesystem/LocalPinotFS.java |  9 +++++++++
 .../src/main/java/org/apache/pinot/filesystem/PinotFS.java  |  8 +++++++-
 .../java/org/apache/pinot/filesystem/HadoopPinotFS.java     | 13 +++++++++++++
 4 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/SegmentDeletionManager.java b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/SegmentDeletionManager.java
index f405e68..5554da6 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/SegmentDeletionManager.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/SegmentDeletionManager.java
@@ -185,6 +185,8 @@ public class SegmentDeletionManager {
         if (pinotFS.exists(fileToMoveURI)) {
           // Overwrites the file if it already exists in the target directory.
           pinotFS.move(fileToMoveURI, deletedSegmentDestURI, true);
+          // Updates last modified
+          pinotFS.touch(deletedSegmentDestURI);
           LOGGER.info("Moved segment {} from {} to {}", segmentId, fileToMoveURI.toString(), deletedSegmentDestURI.toString());
         } else {
           if (!SegmentName.isHighLevelConsumerSegmentName(segmentId)) {
@@ -248,7 +250,7 @@ public class SegmentDeletionManager {
           }
         }
       } catch (IOException e) {
-        LOGGER.error("Had trouble deleting directories", deletedDirURI.toString());
+        LOGGER.error("Had trouble deleting directories: {}", deletedDirURI.toString(), e.toString());
       }
     } else {
       LOGGER.info("dataDir is not configured, won't delete any expired segments from deleted directory.");
diff --git a/pinot-filesystem/src/main/java/org/apache/pinot/filesystem/LocalPinotFS.java b/pinot-filesystem/src/main/java/org/apache/pinot/filesystem/LocalPinotFS.java
index 987125f..e060d88 100644
--- a/pinot-filesystem/src/main/java/org/apache/pinot/filesystem/LocalPinotFS.java
+++ b/pinot-filesystem/src/main/java/org/apache/pinot/filesystem/LocalPinotFS.java
@@ -161,6 +161,15 @@ public class LocalPinotFS extends PinotFS {
     return file.lastModified();
   }
 
+  @Override
+  public boolean touch(URI uri) throws IOException {
+    File file = new File(decodeURI(uri.getRawPath()));
+    if (!exists(uri)) {
+      return file.createNewFile();
+    }
+    return file.setLastModified(System.currentTimeMillis());
+  }
+
   private String encodeURI(String uri) {
     String encodedStr;
     try {
diff --git a/pinot-filesystem/src/main/java/org/apache/pinot/filesystem/PinotFS.java b/pinot-filesystem/src/main/java/org/apache/pinot/filesystem/PinotFS.java
index abcf494..4a5815a 100644
--- a/pinot-filesystem/src/main/java/org/apache/pinot/filesystem/PinotFS.java
+++ b/pinot-filesystem/src/main/java/org/apache/pinot/filesystem/PinotFS.java
@@ -137,7 +137,7 @@ public abstract class PinotFS implements Closeable {
 
   /**
    * Returns the age of the file
-   * @param uri
+   * @param uri location of file or directory
    * @return A long value representing the time the file was last modified, measured in milliseconds since epoch
    * (00:00:00 GMT, January 1, 1970) or 0L if the file does not exist or if an I/O error occurs
    * @throws Exception if uri is not valid or present
@@ -145,6 +145,12 @@ public abstract class PinotFS implements Closeable {
   public abstract long lastModified(URI uri);
 
   /**
+   * Creates a new empty file if it doesn't exist, or updates the last modified on existing file or directory.
+   * @param uri location of file or directory
+   */
+  public abstract boolean touch(URI uri) throws IOException;
+
+  /**
    * For certain filesystems, we may need to close the filesystem and do relevant operations to prevent leaks.
    * By default, this method does nothing.
    * @throws IOException
diff --git a/pinot-hadoop-filesystem/src/main/java/org/apache/pinot/filesystem/HadoopPinotFS.java b/pinot-hadoop-filesystem/src/main/java/org/apache/pinot/filesystem/HadoopPinotFS.java
index c58a16a..fb64770 100644
--- a/pinot-hadoop-filesystem/src/main/java/org/apache/pinot/filesystem/HadoopPinotFS.java
+++ b/pinot-hadoop-filesystem/src/main/java/org/apache/pinot/filesystem/HadoopPinotFS.java
@@ -19,6 +19,7 @@
 package org.apache.pinot.filesystem;
 
 import com.google.common.base.Strings;
+import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.pinot.common.utils.retry.RetryPolicies;
 import org.apache.pinot.common.utils.retry.RetryPolicy;
 import java.io.File;
@@ -191,6 +192,18 @@ public class HadoopPinotFS extends PinotFS {
     }
   }
 
+  @Override
+  public boolean touch(URI uri) throws IOException {
+    Path path = new Path(uri);
+    if (!exists(uri)) {
+      FSDataOutputStream fos = _hadoopFS.create(path);
+      fos.close();
+    } else {
+      _hadoopFS.setTimes(path, System.currentTimeMillis(), -1);
+    }
+    return true;
+  }
+
   private void authenticate(org.apache.hadoop.conf.Configuration hadoopConf, org.apache.commons.configuration.Configuration configs) {
     String principal = configs.getString(PRINCIPAL);
     String keytab = configs.getString(KEYTAB);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org