You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by do...@apache.org on 2023/11/13 15:17:52 UTC

(accumulo) branch main updated: Remove timestamp from LogEntry (#3942)

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

domgarguilo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new 58b6e8b2c6 Remove timestamp from LogEntry (#3942)
58b6e8b2c6 is described below

commit 58b6e8b2c6edb39be8d4d9b40892496bc6c6183a
Author: Dom G <do...@apache.org>
AuthorDate: Mon Nov 13 10:17:47 2023 -0500

    Remove timestamp from LogEntry (#3942)
---
 .../accumulo/core/tabletserver/log/LogEntry.java     | 17 +++++------------
 .../core/metadata/schema/TabletMetadataTest.java     | 14 ++++++--------
 .../accumulo/core/tabletserver/log/LogEntryTest.java | 20 +++++++-------------
 .../server/manager/state/MetaDataStateStore.java     |  2 +-
 .../server/manager/state/ZooTabletStateStore.java    |  2 +-
 .../org/apache/accumulo/tserver/TabletServer.java    |  4 +---
 .../test/MissingWalHeaderCompletesRecoveryIT.java    |  4 ++--
 .../apache/accumulo/test/manager/MergeStateIT.java   |  6 +++---
 8 files changed, 26 insertions(+), 43 deletions(-)

diff --git a/core/src/main/java/org/apache/accumulo/core/tabletserver/log/LogEntry.java b/core/src/main/java/org/apache/accumulo/core/tabletserver/log/LogEntry.java
index 70c10f4e4b..d3b6f5ac02 100644
--- a/core/src/main/java/org/apache/accumulo/core/tabletserver/log/LogEntry.java
+++ b/core/src/main/java/org/apache/accumulo/core/tabletserver/log/LogEntry.java
@@ -30,19 +30,13 @@ import com.google.common.net.HostAndPort;
 
 public class LogEntry {
 
-  private final long timestamp;
   private final String filePath;
 
-  public LogEntry(long timestamp, String filePath) {
+  public LogEntry(String filePath) {
     validateFilePath(filePath);
-    this.timestamp = timestamp;
     this.filePath = filePath;
   }
 
-  public long getTimestamp() {
-    return this.timestamp;
-  }
-
   public String getFilePath() {
     return this.filePath;
   }
@@ -87,7 +81,7 @@ public class LogEntry {
    * @param filePath path to use
    */
   public LogEntry switchFile(String filePath) {
-    return new LogEntry(timestamp, filePath);
+    return new LogEntry(filePath);
   }
 
   @Override
@@ -104,23 +98,22 @@ public class LogEntry {
       return false;
     }
     LogEntry logEntry = (LogEntry) other;
-    return this.timestamp == logEntry.timestamp && this.filePath.equals(logEntry.filePath);
+    return this.filePath.equals(logEntry.filePath);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(timestamp, filePath);
+    return Objects.hash(filePath);
   }
 
   public static LogEntry fromMetaWalEntry(Entry<Key,Value> entry) {
-    final Key key = entry.getKey();
     final Value value = entry.getValue();
 
     String filePath = value.toString();
 
     validateFilePath(filePath);
 
-    return new LogEntry(key.getTimestamp(), filePath);
+    return new LogEntry(filePath);
   }
 
   public String getUniqueID() {
diff --git a/core/src/test/java/org/apache/accumulo/core/metadata/schema/TabletMetadataTest.java b/core/src/test/java/org/apache/accumulo/core/metadata/schema/TabletMetadataTest.java
index 4f1d99f755..a3a3d33a45 100644
--- a/core/src/test/java/org/apache/accumulo/core/metadata/schema/TabletMetadataTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/metadata/schema/TabletMetadataTest.java
@@ -101,12 +101,12 @@ public class TabletMetadataTest {
 
     mutation.at().family(LastLocationColumnFamily.NAME).qualifier("s000").put("server2:8555");
 
-    LogEntry le1 = new LogEntry(55, "localhost:8020/" + UUID.randomUUID());
+    LogEntry le1 = new LogEntry("localhost:8020/" + UUID.randomUUID());
     mutation.at().family(LogColumnFamily.NAME).qualifier(le1.getColumnQualifier())
-        .timestamp(le1.getTimestamp()).put(le1.getValue());
-    LogEntry le2 = new LogEntry(57, "localhost:8020/" + UUID.randomUUID());
+        .put(le1.getValue());
+    LogEntry le2 = new LogEntry("localhost:8020/" + UUID.randomUUID());
     mutation.at().family(LogColumnFamily.NAME).qualifier(le2.getColumnQualifier())
-        .timestamp(le2.getTimestamp()).put(le2.getValue());
+        .put(le2.getValue());
 
     StoredTabletFile sf1 = StoredTabletFile.of(new Path("hdfs://nn1/acc/tables/1/t-0001/sf1.rf"));
     StoredTabletFile sf2 = StoredTabletFile.of(new Path("hdfs://nn1/acc/tables/1/t-0001/sf2.rf"));
@@ -136,10 +136,8 @@ public class TabletMetadataTest {
     assertEquals(HostAndPort.fromParts("server2", 8555), tm.getLast().getHostAndPort());
     assertEquals("s000", tm.getLast().getSession());
     assertEquals(LocationType.LAST, tm.getLast().getType());
-    assertEquals(
-        Set.of(le1.getValue() + " " + le1.getTimestamp(),
-            le2.getValue() + " " + le2.getTimestamp()),
-        tm.getLogs().stream().map(le -> le.getValue() + " " + le.getTimestamp()).collect(toSet()));
+    assertEquals(Set.of(le1.getValue(), le2.getValue()),
+        tm.getLogs().stream().map(LogEntry::getValue).collect(toSet()));
     assertEquals(extent.prevEndRow(), tm.getPrevEndRow());
     assertEquals(extent.tableId(), tm.getTableId());
     assertTrue(tm.sawPrevEndRow());
diff --git a/core/src/test/java/org/apache/accumulo/core/tabletserver/log/LogEntryTest.java b/core/src/test/java/org/apache/accumulo/core/tabletserver/log/LogEntryTest.java
index 9e4f17cd08..69ae830fc2 100644
--- a/core/src/test/java/org/apache/accumulo/core/tabletserver/log/LogEntryTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/tabletserver/log/LogEntryTest.java
@@ -47,19 +47,16 @@ public class LogEntryTest {
 
   @Test
   public void test() throws Exception {
-    long ts = 12345678L;
     String uuid = UUID.randomUUID().toString();
     String filename = Path.of("default", uuid).toString();
-    LogEntry entry = new LogEntry(ts, filename);
+    LogEntry entry = new LogEntry(filename);
 
     assertEquals(filename, entry.getFilePath());
-    assertEquals(ts, entry.getTimestamp());
     assertEquals(filename, entry.toString());
     assertEquals(new Text("log"), MetadataSchema.TabletsSection.LogColumnFamily.NAME);
     assertEquals(new Text("-/" + filename), entry.getColumnQualifier());
 
     Key key = new Key(new Text("1<"), new Text("log"), new Text("localhost:1234/default/foo"));
-    key.setTimestamp(ts);
     var mapEntry = new Entry<Key,Value>() {
       @Override
       public Key getKey() {
@@ -78,7 +75,6 @@ public class LogEntryTest {
     };
     LogEntry copy2 = LogEntry.fromMetaWalEntry(mapEntry);
     assertEquals(entry.toString(), copy2.toString());
-    assertEquals(entry.getTimestamp(), copy2.getTimestamp());
     assertEquals(uuid, entry.getUniqueID());
     assertEquals("-/" + filename, entry.getColumnQualifier().toString());
     assertEquals(new Value(filename), entry.getValue());
@@ -86,10 +82,8 @@ public class LogEntryTest {
 
   @Test
   public void testEquals() {
-    long ts = 123456L;
-
-    LogEntry one = new LogEntry(ts, validFilename);
-    LogEntry two = new LogEntry(ts, validFilename);
+    LogEntry one = new LogEntry(validFilename);
+    LogEntry two = new LogEntry(validFilename);
 
     assertNotSame(one, two);
     assertEquals(one.toString(), two.toString());
@@ -112,7 +106,7 @@ public class LogEntryTest {
       Path validPath3 = Path.of("dir2", validPath2.toString());
 
       Stream.of(validPath, validPath2, validPath3).map(Path::toString)
-          .forEach(validFilePath -> assertDoesNotThrow(() -> new LogEntry(1L, validFilePath)));
+          .forEach(validFilePath -> assertDoesNotThrow(() -> new LogEntry(validFilePath)));
     }
 
     @Test
@@ -121,7 +115,7 @@ public class LogEntryTest {
 
       for (String badFilePath : badFilePaths) {
         IllegalArgumentException iae =
-            assertThrows(IllegalArgumentException.class, () -> new LogEntry(1L, badFilePath));
+            assertThrows(IllegalArgumentException.class, () -> new LogEntry(badFilePath));
         assertTrue(iae.getMessage().contains("The path should at least contain tserver/UUID."));
       }
     }
@@ -132,7 +126,7 @@ public class LogEntryTest {
       final Path badFilepathHostPort = Path.of(badHostAndPort, validUUID.toString());
 
       IllegalArgumentException iae = assertThrows(IllegalArgumentException.class,
-          () -> new LogEntry(1L, badFilepathHostPort.toString()));
+          () -> new LogEntry(badFilepathHostPort.toString()));
       assertTrue(
           iae.getMessage().contains("Expected format: host:port. Found '" + badHostAndPort + "'"));
     }
@@ -143,7 +137,7 @@ public class LogEntryTest {
       String filePathWithBadUUID = Path.of(validHost.toString(), badUUID).toString();
 
       IllegalArgumentException iae =
-          assertThrows(IllegalArgumentException.class, () -> new LogEntry(1L, filePathWithBadUUID));
+          assertThrows(IllegalArgumentException.class, () -> new LogEntry(filePathWithBadUUID));
       assertTrue(iae.getMessage().contains("Expected valid UUID. Found '" + badUUID + "'"));
     }
   }
diff --git a/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataStateStore.java b/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataStateStore.java
index 9a4d166f83..7352eff601 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataStateStore.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataStateStore.java
@@ -123,7 +123,7 @@ class MetaDataStateStore implements TabletStateStore {
             List<Path> logs = logsForDeadServers.get(tls.current.getServerInstance());
             if (logs != null) {
               for (Path log : logs) {
-                LogEntry entry = new LogEntry(0, log.toString());
+                LogEntry entry = new LogEntry(log.toString());
                 tabletMutator.putWal(entry);
               }
             }
diff --git a/server/base/src/main/java/org/apache/accumulo/server/manager/state/ZooTabletStateStore.java b/server/base/src/main/java/org/apache/accumulo/server/manager/state/ZooTabletStateStore.java
index 5ea3e8ac15..c6bc4bef39 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/manager/state/ZooTabletStateStore.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/manager/state/ZooTabletStateStore.java
@@ -176,7 +176,7 @@ class ZooTabletStateStore implements TabletStateStore {
       List<Path> logs = logsForDeadServers.get(futureOrCurrent);
       if (logs != null) {
         for (Path entry : logs) {
-          LogEntry logEntry = new LogEntry(System.currentTimeMillis(), entry.toString());
+          LogEntry logEntry = new LogEntry(entry.toString());
           tabletMutator.putWal(logEntry);
         }
       }
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index 08c6ca9caf..4b610d72ca 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@ -1101,9 +1101,7 @@ public class TabletServer extends AbstractServer implements TabletHostingServer
   public void recover(VolumeManager fs, KeyExtent extent, List<LogEntry> logEntries,
       Set<String> tabletFiles, MutationReceiver mutationReceiver) throws IOException {
     List<Path> recoveryDirs = new ArrayList<>();
-    List<LogEntry> sorted = new ArrayList<>(logEntries);
-    sorted.sort((e1, e2) -> (int) (e1.getTimestamp() - e2.getTimestamp()));
-    for (LogEntry entry : sorted) {
+    for (LogEntry entry : logEntries) {
       Path recovery = null;
       Path finished = RecoveryPath.getRecoveryPath(new Path(entry.getFilePath()));
       finished = SortedLogState.getFinishedMarkerPath(finished);
diff --git a/test/src/main/java/org/apache/accumulo/test/MissingWalHeaderCompletesRecoveryIT.java b/test/src/main/java/org/apache/accumulo/test/MissingWalHeaderCompletesRecoveryIT.java
index d89b77fb00..983f9217d8 100644
--- a/test/src/main/java/org/apache/accumulo/test/MissingWalHeaderCompletesRecoveryIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/MissingWalHeaderCompletesRecoveryIT.java
@@ -137,7 +137,7 @@ public class MissingWalHeaderCompletesRecoveryIT extends ConfigurableMacBase {
       TableId tableId = TableId.of(client.tableOperations().tableIdMap().get(tableName));
       assertNotNull(tableId, "Table ID was null");
 
-      LogEntry logEntry = new LogEntry(0, emptyWalog.toURI().toString());
+      LogEntry logEntry = new LogEntry(emptyWalog.toURI().toString());
 
       log.info("Taking {} offline", tableName);
       client.tableOperations().offline(tableName, true);
@@ -196,7 +196,7 @@ public class MissingWalHeaderCompletesRecoveryIT extends ConfigurableMacBase {
       TableId tableId = TableId.of(client.tableOperations().tableIdMap().get(tableName));
       assertNotNull(tableId, "Table ID was null");
 
-      LogEntry logEntry = new LogEntry(0, partialHeaderWalog.toURI().toString());
+      LogEntry logEntry = new LogEntry(partialHeaderWalog.toURI().toString());
 
       log.info("Taking {} offline", tableName);
       client.tableOperations().offline(tableName, true);
diff --git a/test/src/main/java/org/apache/accumulo/test/manager/MergeStateIT.java b/test/src/main/java/org/apache/accumulo/test/manager/MergeStateIT.java
index c5bb29710a..8d246c5c3c 100644
--- a/test/src/main/java/org/apache/accumulo/test/manager/MergeStateIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/manager/MergeStateIT.java
@@ -202,9 +202,9 @@ public class MergeStateIT extends ConfigurableMacBase {
       // Add a walog which should keep the state from transitioning to MERGING
       KeyExtent ke = new KeyExtent(tableId, new Text("t"), new Text("p"));
       m = new Mutation(ke.toMetaRow());
-      LogEntry logEntry = new LogEntry(100, "f1");
+      LogEntry logEntry = new LogEntry("f1");
       m.at().family(LogColumnFamily.NAME).qualifier(logEntry.getColumnQualifier())
-          .timestamp(logEntry.getTimestamp()).put(logEntry.getValue());
+          .put(logEntry.getValue());
       update(accumuloClient, m);
 
       // Verify state is still WAITING_FOR_OFFLINE
@@ -214,7 +214,7 @@ public class MergeStateIT extends ConfigurableMacBase {
 
       // Delete the walog which will now allow a transition to MERGING
       m = new Mutation(ke.toMetaRow());
-      m.putDelete(LogColumnFamily.NAME, logEntry.getColumnQualifier(), logEntry.getTimestamp());
+      m.putDelete(LogColumnFamily.NAME, logEntry.getColumnQualifier());
       update(accumuloClient, m);
 
       // now we can split