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 <domgargu...@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