(accumulo) 01/01: Merge branch '2.1'

2024-05-13 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 220cdc54da5ba779675d635bcbcc02a6514cd5e6
Merge: 7baa5c76ab c88d368b2d
Author: Keith Turner 
AuthorDate: Mon May 13 17:35:55 2024 -0400

Merge branch '2.1'

 .../accumulo/tserver/tablet/CompactableImpl.java   | 31 +--
 .../org/apache/accumulo/tserver/tablet/Tablet.java |  8 +++
 .../tablet/CompactableImplFileManagerTest.java | 61 ++
 3 files changed, 86 insertions(+), 14 deletions(-)

diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
index d519ffd172,37b23dc6c4..c17f808ab2
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
@@@ -232,15 -247,32 +232,33 @@@ public class CompactableImpl implement
  
  protected abstract long getNanoTime();
  
- boolean initiateSelection(CompactionKind kind) {
+ /**
+  * @return the last id of the last successful user compaction
+  */
+ protected abstract long getLastCompactId();
+ 
+ boolean initiateSelection(CompactionKind kind, Long compactionId) {
  
-   Preconditions
-   .checkArgument(kind == DeprecatedCompactionKind.SELECTOR || kind == 
CompactionKind.USER);
+   Preconditions.checkArgument(
 -  kind == CompactionKind.SELECTOR && compactionId == null
++  kind == DeprecatedCompactionKind.SELECTOR && compactionId == null
+   || kind == CompactionKind.USER && compactionId != null,
+   "Unexpected kind and/or compaction id: %s %s", kind, compactionId);
  
 -  if (selectStatus == FileSelectionStatus.NOT_ACTIVE || (kind == 
CompactionKind.USER
 -  && selectKind == CompactionKind.SELECTOR && 
noneRunning(CompactionKind.SELECTOR)
 -  && selectStatus != FileSelectionStatus.SELECTING)) {
 +  if (selectStatus == FileSelectionStatus.NOT_ACTIVE
 +  || (kind == CompactionKind.USER && selectKind == 
DeprecatedCompactionKind.SELECTOR
 +  && noneRunning(DeprecatedCompactionKind.SELECTOR)
 +  && selectStatus != FileSelectionStatus.SELECTING)) {
+ 
+ // Check compaction id when a lock is held and no other user 
compactions have files
+ // selected, at this point the results of any previous user 
compactions should be seen. If
+ // user compaction is currently running, then will not get this far 
because of the checks a
+ // few lines up.
+ if (kind == CompactionKind.USER && getLastCompactId() >= 
compactionId) {
+   // This user compaction has already completed, so no need to 
initiate selection of files
+   // for user compaction.
+   return false;
+ }
+ 
  selectStatus = FileSelectionStatus.NEW;
  selectKind = kind;
  selectedFiles.clear();
diff --cc 
server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/CompactableImplFileManagerTest.java
index 35d5119dfa,743ac8feca..2f04a875f2
--- 
a/server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/CompactableImplFileManagerTest.java
+++ 
b/server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/CompactableImplFileManagerTest.java
@@@ -28,8 -30,10 +29,9 @@@ import static org.junit.jupiter.api.Ass
  
  import java.time.Duration;
  import java.util.HashSet;
 -import java.util.List;
  import java.util.Optional;
  import java.util.Set;
+ import java.util.concurrent.atomic.AtomicLong;
  import java.util.stream.Collectors;
  import java.util.stream.Stream;
  
@@@ -111,10 -117,10 +113,10 @@@ public class CompactableImplFileManager
  assertFalse(fileMgr.reserveFiles(staleJob));
  
  assertEquals(newFiles("F0.rf", "F1.rf", "F2.rf", "F3.rf"),
 -fileMgr.getCandidates(tabletFiles, SYSTEM, false));
 -assertNoCandidates(fileMgr, tabletFiles, CHOP, USER, SELECTOR);
 +fileMgr.getCandidates(tabletFiles, SYSTEM));
 +assertNoCandidates(fileMgr, tabletFiles, USER, SELECTOR);
  
- assertTrue(fileMgr.initiateSelection(USER));
+ assertTrue(fileMgr.initiateSelection(USER, 1L));
  
  assertFalse(fileMgr.reserveFiles(staleJob));
  
@@@ -372,6 -380,96 +374,39 @@@
  
}
  
 -  @Test
 -  public void testChop() {
 -TestFileManager fileMgr = new TestFileManager();
 -
 -// simulate a compaction because files that were created by compaction 
are remembered as not
 -// needing a chop
 -var job1 = newJob(SYSTEM, "F0.rf", "F1.rf");
 -assertTrue(fileMgr.reserveFiles(job1));
 -fileMgr.completed(job1, newFile("C5.rf"));
 -
 -var tabletFiles = newFiles("C5.rf", "F2.rf", "F3.rf", 
"F4.rf");
 -
 -ChopSelector chopSel = fileMgr.initiateChop(tabletFiles);
 -assertEquals(ChopSelectionStatus.SELECTING, fileMgr.getChopStatus());

(accumulo) 01/01: Merge branch '2.1'

2024-05-13 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 7baa5c76abe1dc459d6d554bd5d19cf35c899756
Merge: 861d28b64b d4e2ae729a
Author: Keith Turner 
AuthorDate: Mon May 13 10:48:03 2024 -0400

Merge branch '2.1'

 .../main/java/org/apache/accumulo/core/clientImpl/ClientContext.java  | 4 ++--
 .../apache/accumulo/core/spi/scan/ConfigurableScanServerSelector.java | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java
index acc06022e8,e4ba0028c9..093aa7f04e
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java
@@@ -19,8 -19,10 +19,9 @@@
  package org.apache.accumulo.core.clientImpl;
  
  import static com.google.common.base.Preconditions.checkArgument;
+ import static com.google.common.base.Suppliers.memoize;
  import static com.google.common.base.Suppliers.memoizeWithExpiration;
  import static java.nio.charset.StandardCharsets.UTF_8;
 -import static java.util.Objects.requireNonNull;
  import static java.util.concurrent.TimeUnit.MILLISECONDS;
  import static java.util.concurrent.TimeUnit.SECONDS;
  import static 
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.LOCATION;



(accumulo) 01/01: Merge branch '2.1'

2024-05-07 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit f4c1f2465886c5a5f6ebdc384b0a695ad0ac56ec
Merge: 33e2d055af 86c81e42d2
Author: Dave Marion 
AuthorDate: Tue May 7 20:33:21 2024 +

Merge branch '2.1'

 .../main/java/org/apache/accumulo/tserver/ScanServer.java   | 13 -
 1 file changed, 4 insertions(+), 9 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2024-05-01 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 8da73ce467f9311d247ac1eaa8062a5f62853276
Merge: 09adb11491 61ca7d8070
Author: Keith Turner 
AuthorDate: Wed May 1 22:59:21 2024 +

Merge branch '2.1'

 .../coordinator/CompactionCoordinator.java |  8 +++--
 .../coordinator/DeadCompactionDetector.java| 11 +--
 .../accumulo/manager/TabletGroupWatcher.java   | 35 ++
 3 files changed, 38 insertions(+), 16 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2024-04-24 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 94b8d96e5c334ee3c7adbf665b9ddd9e1f46a692
Merge: 6c1e453f53 6d0b476852
Author: Christopher Tubbs 
AuthorDate: Wed Apr 24 17:10:59 2024 -0400

Merge branch '2.1'

Merge of 2.1 to main branch to include all changes up through #4459

 .../org/apache/accumulo/core/conf/Property.java| 24 +++---
 .../accumulo/core/iterators/user/GrepIterator.java |  2 +-
 .../core/iterators/user/GrepIteratorTest.java  | 18 
 .../java/org/apache/accumulo/manager/Manager.java  | 14 -
 .../accumulo/tserver/tablet/CompactableImpl.java   | 13 ++--
 .../accumulo/shell/commands/GrepCommand.java   |  2 +-
 .../org/apache/accumulo/test/shell/ShellIT.java|  1 +
 7 files changed, 62 insertions(+), 12 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/conf/Property.java
index 6dc56205ba,80a9b21b33..463b37cbcf
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@@ -1533,13 -1886,15 +1550,14 @@@ public enum Property 
  // white list prefixes
  return key.startsWith(Property.TABLE_PREFIX.getKey())
  || key.startsWith(Property.TSERV_PREFIX.getKey())
 +|| key.startsWith(Property.COMPACTION_SERVICE_PREFIX.getKey())
+ || key.startsWith(Property.SSERV_PREFIX.getKey())
  || key.startsWith(Property.MANAGER_PREFIX.getKey())
 -|| key.startsWith(Property.MASTER_PREFIX.getKey())
  || key.startsWith(Property.GC_PREFIX.getKey())
  || key.startsWith(Property.GENERAL_ARBITRARY_PROP_PREFIX.getKey())
 +|| key.equals(Property.COMPACTION_WARN_TIME.getKey())
  || 
key.equals(Property.GENERAL_FILE_NAME_ALLOCATION_BATCH_SIZE_MIN.getKey())
 -|| 
key.equals(Property.GENERAL_FILE_NAME_ALLOCATION_BATCH_SIZE_MAX.getKey())
 -|| key.startsWith(VFS_CONTEXT_CLASSPATH_PROPERTY.getKey())
 -|| key.startsWith(REPLICATION_PREFIX.getKey());
 +|| 
key.equals(Property.GENERAL_FILE_NAME_ALLOCATION_BATCH_SIZE_MAX.getKey());
}
  
/**
diff --cc server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
index 9cead258f7,86a1dd71d3..5c6cc2f436
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
@@@ -90,12 -85,16 +90,13 @@@ import org.apache.accumulo.core.manager
  import org.apache.accumulo.core.manager.thrift.ManagerGoalState;
  import org.apache.accumulo.core.manager.thrift.ManagerMonitorInfo;
  import org.apache.accumulo.core.manager.thrift.ManagerState;
 -import org.apache.accumulo.core.master.thrift.BulkImportState;
 -import org.apache.accumulo.core.master.thrift.TableInfo;
 -import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 -import org.apache.accumulo.core.metadata.MetadataTable;
 -import org.apache.accumulo.core.metadata.RootTable;
 +import org.apache.accumulo.core.manager.thrift.TableInfo;
 +import org.apache.accumulo.core.manager.thrift.TabletServerStatus;
 +import org.apache.accumulo.core.metadata.AccumuloTable;
  import org.apache.accumulo.core.metadata.TServerInstance;
  import org.apache.accumulo.core.metadata.TabletLocationState;
 -import org.apache.accumulo.core.metadata.TabletState;
  import org.apache.accumulo.core.metadata.schema.Ample.DataLevel;
+ import org.apache.accumulo.core.metadata.schema.MetadataSchema;
  import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.TabletColumnFamily;
  import org.apache.accumulo.core.metrics.MetricsInfo;
  import org.apache.accumulo.core.metrics.MetricsProducer;
@@@ -703,17 -709,19 +704,20 @@@ public class Manager extends AbstractSe
   */
  private void cleanupNonexistentMigrations(final AccumuloClient 
accumuloClient)
  throws TableNotFoundException {
 -  Scanner scanner = accumuloClient.createScanner(MetadataTable.NAME, 
Authorizations.EMPTY);
 +  Scanner scanner =
 +  accumuloClient.createScanner(AccumuloTable.METADATA.tableName(), 
Authorizations.EMPTY);
TabletColumnFamily.PREV_ROW_COLUMN.fetch(scanner);
-   Set found = new HashSet<>();
+   scanner.setRange(MetadataSchema.TabletsSection.getRange());
+   Set notSeen;
+   synchronized (migrations) {
+ notSeen = new HashSet<>(migrations.keySet());
+   }
for (Entry entry : scanner) {
  KeyExtent extent = KeyExtent.fromMetaPrevRow(entry);
- if (migrations.containsKey(extent)) {
-   found.add(extent);
- }
+ notSeen.remove(extent);
}
-   migrations.keySet().retainAll(found);
+   // remove tablets that used to be in migrations and were not seen in 
the metadata table
+   migrations.keySet().removeAll(notSeen);
  }
  
  /**

(accumulo) 01/01: Merge branch '2.1'

2024-04-11 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 859694aba88b64ce3f9c5559c0f772f987dbb0e4
Merge: c39599d75d 7c6572caf3
Author: Keith Turner 
AuthorDate: Thu Apr 11 19:22:12 2024 -0400

Merge branch '2.1'

 assemble/bin/accumulo-cluster   | 2 +-
 .../apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2024-04-06 Thread cshannon
This is an automated email from the ASF dual-hosted git repository.

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

commit 84e8557ab8ddabd23c8813d9dbed2e1223d99646
Merge: b912506d43 90bcb465fe
Author: Christopher L. Shannon 
AuthorDate: Sat Apr 6 15:23:23 2024 -0400

Merge branch '2.1'

 .../org/apache/accumulo/core/metadata/TabletLocationState.java| 3 ++-
 .../org/apache/accumulo/core/metadata/schema/TabletMetadata.java  | 4 +++-
 .../apache/accumulo/core/metadata/schema/TabletMetadataTest.java  | 8 
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/metadata/TabletLocationState.java
index eeaa5cde95,0a70594027..4c2421b4e8
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/TabletLocationState.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/TabletLocationState.java
@@@ -57,8 -57,9 +58,8 @@@ public class TabletLocationState 
}
  
public TabletLocationState(KeyExtent extent, Location future, Location 
current, Location last,
 -  SuspendingTServer suspend, Collection> walogs, 
boolean chopped)
 -  throws BadLocationStateException {
 +  SuspendingTServer suspend, Collection walogs) throws 
BadLocationStateException {
- this.extent = extent;
+ this.extent = Objects.requireNonNull(extent);
  this.future = validateLocation(future, 
TabletMetadata.LocationType.FUTURE);
  this.current = validateLocation(current, 
TabletMetadata.LocationType.CURRENT);
  this.last = validateLocation(last, TabletMetadata.LocationType.LAST);
diff --cc 
core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadata.java
index af31605d51,c1e816109a..b98d9e8540
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadata.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadata.java
@@@ -371,7 -373,9 +371,9 @@@ public class TabletMetadata 
  future = location;
}
// only care about the state so don't need walogs and chopped params
-   var tls = new TabletLocationState(extent, future, current, last, 
suspend, null);
+   // Use getExtent() when passing the extent as the private reference may 
not have been
+   // initialized yet. This will also ensure PREV_ROW was fetched
 -  var tls = new TabletLocationState(getExtent(), future, current, last, 
suspend, null, false);
++  var tls = new TabletLocationState(getExtent(), future, current, last, 
suspend, null);
return tls.getState(liveTServers);
  } catch (TabletLocationState.BadLocationStateException blse) {
throw new IllegalArgumentException("Error creating 
TabletLocationState", blse);



(accumulo) 01/01: Merge branch '2.1'

2024-04-01 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit c4ceb7e7a9f183059d753386d6a09cd880f1bb08
Merge: 5d741657e7 01ccb96472
Author: Daniel Roberts 
AuthorDate: Mon Apr 1 15:25:19 2024 +

Merge branch '2.1'

 pom.xml   |  2 +-
 .../apache/accumulo/shell/commands/HistoryCommandTest.java| 11 ++-
 2 files changed, 7 insertions(+), 6 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2024-03-22 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit a3a6fc2634d2d067d4c951f441bcebb2a06ed7b0
Merge: eae367264b 33894e6997
Author: Dave Marion 
AuthorDate: Fri Mar 22 12:28:06 2024 +

Merge branch '2.1'

 .../main/java/org/apache/accumulo/server/rpc/TServerUtils.java   | 9 +
 1 file changed, 9 insertions(+)

diff --cc 
server/base/src/main/java/org/apache/accumulo/server/rpc/TServerUtils.java
index 5f0cebd05a,9f37990926..0f28ecab8b
--- a/server/base/src/main/java/org/apache/accumulo/server/rpc/TServerUtils.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/rpc/TServerUtils.java
@@@ -46,7 -46,9 +46,8 @@@ import org.apache.accumulo.core.rpc.Ssl
  import org.apache.accumulo.core.rpc.ThriftUtil;
  import org.apache.accumulo.core.rpc.UGIAssumingTransportFactory;
  import org.apache.accumulo.core.util.Halt;
 -import org.apache.accumulo.core.util.HostAndPort;
  import org.apache.accumulo.core.util.Pair;
+ import org.apache.accumulo.core.util.UtilWaitThread;
  import org.apache.accumulo.core.util.threads.ThreadPools;
  import org.apache.accumulo.core.util.threads.Threads;
  import org.apache.accumulo.server.ServerContext;
@@@ -70,7 -72,7 +71,8 @@@ import org.apache.thrift.transport.TTra
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
+ import com.google.common.base.Preconditions;
 +import com.google.common.net.HostAndPort;
  import com.google.common.primitives.Ints;
  
  /**



(accumulo) 01/01: Merge branch '2.1'

2024-03-22 Thread cshannon
This is an automated email from the ASF dual-hosted git repository.

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

commit eae367264b0e224c59de90ba72fcae463f348357
Merge: eaa1f678c9 6784e59da3
Author: Christopher L. Shannon 
AuthorDate: Fri Mar 22 07:47:34 2024 -0400

Merge branch '2.1'

 .../main/java/org/apache/accumulo/core/conf/PropertyType.java  |  2 +-
 pom.xml| 10 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --cc pom.xml
index ff26ae9641,fb747c50a8..275fc88b18
--- a/pom.xml
+++ b/pom.xml
@@@ -429,8 -441,19 +429,8 @@@

  org.apache.commons
  commons-text
- 1.10.0
+ 1.11.0

 -  
 -org.apache.commons
 -commons-vfs2
 -2.9.0
 -
 -  
 -org.apache.hadoop
 -hadoop-hdfs-client
 -  
 -
 -  

  org.apache.curator
  curator-framework



(accumulo) 01/01: Merge branch '2.1'

2024-03-20 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit eaa1f678c96b135534fba89fe585107c4f242e54
Merge: 0ad96b1dc0 7947c2c2df
Author: Keith Turner 
AuthorDate: Wed Mar 20 18:39:26 2024 -0400

Merge branch '2.1'

 .../core/client/ClientSideIteratorScanner.java |  39 +++-
 .../accumulo/core/clientImpl/OfflineIterator.java  |  27 +-
 .../accumulo/core/clientImpl/ScannerImpl.java  |  10 ++
 .../apache/accumulo/test/ClientSideIteratorIT.java | 108 +
 4 files changed, 178 insertions(+), 6 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
index a50561263f,362c4e85d6..7e300e917d
--- 
a/core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
@@@ -122,6 -133,22 +133,16 @@@ public class ClientSideIteratorScanner 
  public SamplerConfiguration getSamplerConfiguration() {
return samplerConfig;
  }
+ 
 -@Deprecated(since = "2.1.0")
 -@Override
 -public ServiceEnvironment getServiceEnv() {
 -  return new ClientServiceEnvironmentImpl(context.get());
 -}
 -
+ @Override
+ public PluginEnvironment getPluginEnv() {
+   return new ClientServiceEnvironmentImpl(context.get());
+ }
+ 
+ @Override
+ public TableId getTableId() {
+   return tableId.get();
+ }
}
  
/**
diff --cc 
core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
index 0e7a3fd4d2,a03cc811ab..9200591ff2
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
@@@ -135,7 -153,24 +140,18 @@@ class OfflineIterator implements Iterat
if (sampleConf == null) {
  throw new SampleNotPresentException();
}
-   return new OfflineIteratorEnvironment(authorizations, conf, true, 
sampleConf);
+   return new OfflineIteratorEnvironment(context, tableId, authorizations, 
conf, true,
+   sampleConf);
+ }
+ 
 -@Deprecated(since = "2.1.0")
 -@Override
 -public ServiceEnvironment getServiceEnv() {
 -  return new ClientServiceEnvironmentImpl(context);
 -}
 -
+ @Override
+ public PluginEnvironment getPluginEnv() {
+   return new ClientServiceEnvironmentImpl(context);
+ }
+ 
+ @Override
+ public TableId getTableId() {
+   return tableId;
  }
}
  



(accumulo) 01/01: Merge branch '2.1'

2024-03-15 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit da0e0e6624eef8c207022636a67a41bdd848fa49
Merge: a3616bf46f f3e75f0e46
Author: Christopher Tubbs 
AuthorDate: Fri Mar 15 18:04:39 2024 -0400

Merge branch '2.1'

 .../org/apache/accumulo/compactor/Compactor.java   | 44 +-
 1 file changed, 10 insertions(+), 34 deletions(-)

diff --cc 
server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
index b81c30dee3,5e09e48fdf..f4affca907
--- 
a/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
+++ 
b/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
@@@ -106,8 -105,6 +106,7 @@@ import org.apache.accumulo.server.fs.Vo
  import org.apache.accumulo.server.rpc.ServerAddress;
  import org.apache.accumulo.server.rpc.TServerUtils;
  import org.apache.accumulo.server.rpc.ThriftProcessorTypes;
- import org.apache.accumulo.server.security.SecurityOperation;
 +import org.apache.accumulo.server.zookeeper.TransactionWatcher;
  import org.apache.hadoop.fs.Path;
  import org.apache.thrift.TException;
  import org.apache.thrift.transport.TTransportException;
@@@ -130,42 -139,23 +129,23 @@@ public class Compactor extends Abstract
  
protected static final CompactionJobHolder JOB_HOLDER = new 
CompactionJobHolder();
  
 -  private final GarbageCollectionLogger gcLogger = new 
GarbageCollectionLogger();
private final UUID compactorId = UUID.randomUUID();
-   private final AccumuloConfiguration aconf;
private final String queueName;
protected final AtomicReference currentCompactionId =
new AtomicReference<>();
-   private final CompactionWatcher watcher;
  
-   private SecurityOperation security;
private ServiceLock compactorLock;
private ServerAddress compactorAddress = null;
 +  private PausedCompactionMetrics pausedMetrics;
  
// Exposed for tests
protected volatile boolean shutdown = false;
  
private final AtomicBoolean compactionRunning = new AtomicBoolean(false);
  
 -  protected Compactor(CompactorServerOpts opts, String[] args) {
 +  protected Compactor(ConfigOpts opts, String[] args) {
- this(opts, args, null);
-   }
- 
-   protected Compactor(ConfigOpts opts, String[] args, AccumuloConfiguration 
conf) {
  super("compactor", opts, args);
- aconf = conf == null ? super.getConfiguration() : conf;
- queueName = aconf.get(Property.COMPACTOR_QUEUE_NAME);
- setupSecurity();
- watcher = new CompactionWatcher(aconf);
- var schedExecutor =
- 
ThreadPools.getServerThreadPools().createGeneralScheduledExecutorService(aconf);
- startCancelChecker(schedExecutor, TIME_BETWEEN_CANCEL_CHECKS);
- printStartupMsg();
-   }
- 
-   @Override
-   public AccumuloConfiguration getConfiguration() {
- return aconf;
 -queueName = opts.getQueueName();
++queueName = super.getConfiguration().get(Property.COMPACTOR_QUEUE_NAME);
}
  
@Override
@@@ -176,10 -165,13 +156,6 @@@
  CompactionWatcher.setTimer(timer);
}
  
-   protected void setupSecurity() {
- security = getContext().getSecurityOperation();
 -  protected void startGCLogger(ScheduledThreadPoolExecutor schedExecutor) {
 -ScheduledFuture future =
 -schedExecutor.scheduleWithFixedDelay(() -> 
gcLogger.logGCInfo(getConfiguration()), 0,
 -TIME_BETWEEN_GC_CHECKS, TimeUnit.MILLISECONDS);
 -ThreadPools.watchNonCriticalScheduledTask(future);
--  }
--
protected void startCancelChecker(ScheduledThreadPoolExecutor schedExecutor,
long timeBetweenChecks) {
  
ThreadPools.watchCriticalScheduledTask(schedExecutor.scheduleWithFixedDelay(
@@@ -625,7 -601,14 +596,12 @@@
  | SecurityException e1) {
LOG.error("Error initializing metrics, metrics will not be emitted.", 
e1);
  }
 -MetricsUtil.initializeProducers(this);
  
+ var watcher = new CompactionWatcher(getConfiguration());
+ var schedExecutor = ThreadPools.getServerThreadPools()
+ .createGeneralScheduledExecutorService(getConfiguration());
 -startGCLogger(schedExecutor);
+ startCancelChecker(schedExecutor, TIME_BETWEEN_CANCEL_CHECKS);
+ 
  LOG.info("Compactor started, waiting for work");
  try {
  



(accumulo) 01/01: Merge branch '2.1'

2024-03-15 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit fe552af0dd23d263aca96dd6d356df7070641b29
Merge: 9839e4d42f 7c9204274c
Author: Dave Marion 
AuthorDate: Fri Mar 15 17:22:56 2024 +

Merge branch '2.1'

 .../apache/accumulo/core/util/compaction/RunningCompaction.java   | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)



(accumulo) 01/01: Merge branch '2.1'

2024-03-13 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit 9839e4d42fae9bd20b1529ca0e5e2fed4122
Merge: 23e17129de 05c2f45042
Author: Dave Marion 
AuthorDate: Wed Mar 13 19:52:45 2024 +

Merge branch '2.1'

 .../coordinator/CompactionCoordinator.java | 32 --
 .../accumulo/coordinator/QueueSummaries.java   |  8 ++
 2 files changed, 37 insertions(+), 3 deletions(-)

diff --cc 
server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java
index d5ecbf9ddd,b0ec498a9e..685080c5b1
--- 
a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java
+++ 
b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java
@@@ -22,8 -23,7 +22,9 @@@ import static com.google.common.util.co
  
  import java.lang.reflect.InvocationTargetException;
  import java.net.UnknownHostException;
 +import java.util.ArrayList;
+ import java.util.HashSet;
 +import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  import java.util.Set;
@@@ -321,35 -325,58 +325,57 @@@ public class CompactionCoordinator exte
  LOG.info("Shutting down");
}
  
+   private Map> getIdleCompactors() {
+ 
+ Map> allCompactors =
+ ExternalCompactionUtil.getCompactorAddrs(getContext());
+ 
+ Set emptyQueues = new HashSet<>();
+ 
+ // Remove all of the compactors that are running a compaction
+ RUNNING_CACHE.values().forEach(rc -> {
+   List busyCompactors = allCompactors.get(rc.getQueueName());
+   if (busyCompactors != null
+   && 
busyCompactors.remove(HostAndPort.fromString(rc.getCompactorAddress( {
+ if (busyCompactors.isEmpty()) {
+   emptyQueues.add(rc.getQueueName());
+ }
+   }
+ });
+ // Remove entries with empty queues
+ emptyQueues.forEach(e -> allCompactors.remove(e));
+ return allCompactors;
+   }
+ 
private void updateSummaries() {
 -ExecutorService executor = 
ThreadPools.getServerThreadPools().createFixedThreadPool(10,
 -"Compaction Summary Gatherer", false);
 -try {
 -  Set queuesSeen = new ConcurrentSkipListSet<>();
  
 -  tserverSet.getCurrentServers().forEach(tsi -> {
 -executor.execute(() -> updateSummaries(tsi, queuesSeen));
 -  });
 +final ArrayList> tasks = new ArrayList<>();
 +Set queuesSeen = new ConcurrentSkipListSet<>();
  
 -  executor.shutdown();
 +tserverSet.getCurrentServers().forEach(tsi -> {
 +  tasks.add(summariesExecutor.submit(() -> updateSummaries(tsi, 
queuesSeen)));
 +});
  
 -  try {
 -while (!executor.awaitTermination(1, TimeUnit.MINUTES)) {}
 -  } catch (InterruptedException e) {
 -Thread.currentThread().interrupt();
 -throw new RuntimeException(e);
 +// Wait for all tasks to complete
 +while (!tasks.isEmpty()) {
 +  Iterator> iter = tasks.iterator();
 +  while (iter.hasNext()) {
 +Future f = iter.next();
 +if (f.isDone()) {
 +  iter.remove();
 +}
}
 +  Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
 +}
  
 -  // remove any queues that were seen in the past, but were not seen in 
the latest gathering of
 -  // summaries
 -  TIME_COMPACTOR_LAST_CHECKED.keySet().retainAll(queuesSeen);
 +// remove any queues that were seen in the past, but were not seen in the 
latest gathering of
 +// summaries
 +TIME_COMPACTOR_LAST_CHECKED.keySet().retainAll(queuesSeen);
  
 -  // add any queues that were never seen before
 -  queuesSeen.forEach(q -> {
 -TIME_COMPACTOR_LAST_CHECKED.computeIfAbsent(q, k -> 
System.currentTimeMillis());
 -  });
 -} finally {
 -  executor.shutdownNow();
 -}
 +// add any queues that were never seen before
 +queuesSeen.forEach(q -> {
 +  TIME_COMPACTOR_LAST_CHECKED.computeIfAbsent(q, k -> 
System.currentTimeMillis());
 +});
}
  
private void updateSummaries(TServerInstance tsi, Set queuesSeen) {



(accumulo) 01/01: Merge branch '2.1'

2024-03-12 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 171a1e144caa9d2eb382846d2dc45a424487d3ec
Merge: 162b8effb1 92331ea113
Author: Daniel Roberts 
AuthorDate: Tue Mar 12 15:17:40 2024 +

Merge branch '2.1'

 .../accumulo/core/file/rfile/GenerateSplits.java   | 32 +--
 .../core/file/rfile/GenerateSplitsTest.java| 64 +++---
 2 files changed, 82 insertions(+), 14 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/file/rfile/GenerateSplits.java
index 5928ade21d,865210a970..7ee151f0a2
--- a/core/src/main/java/org/apache/accumulo/core/file/rfile/GenerateSplits.java
+++ b/core/src/main/java/org/apache/accumulo/core/file/rfile/GenerateSplits.java
@@@ -137,19 -143,33 +144,33 @@@ public class GenerateSplits implements 
Path path = new Path(file);
fs = PrintInfo.resolveFS(log, hadoopConf, path);
// get all the files in the directory
 -  filePaths.addAll(getFiles(fs, path));
 +  files.addAll(getFiles(fs, path));
  }
  
 -if (filePaths.isEmpty()) {
 +if (files.isEmpty()) {
throw new IllegalArgumentException("No files were found in " + 
opts.files);
  } else {
 -  log.trace("Found the following files: {}", filePaths);
 +  log.trace("Found the following files: {}", files);
  }
  
+ if (!encode) {
+   // Generate the allowed Character set
+   for (int i = 0; i < 10; i++) {
+ // 0-9
+ allowedChars.add((char) (i + 48));
+   }
+   for (int i = 0; i < 26; i++) {
+ // Uppercase A-Z
+ allowedChars.add((char) (i + 65));
+ // Lowercase a-z
+ allowedChars.add((char) (i + 97));
+   }
+ }
+ 
  // if no size specified look at indexed keys first
  if (opts.splitSize == 0) {
 -  splits = getIndexKeys(siteConf, hadoopConf, fs, filePaths, 
requestedNumSplits, encode,
 -  cryptoService);
 +  splits =
 +  getIndexKeys(siteConf, hadoopConf, fs, files, requestedNumSplits, 
encode, cryptoService);
// if there weren't enough splits indexed, try again with size = 0
if (splits.size() < requestedNumSplits) {
  log.info("Only found {} indexed keys but need {}. Doing a full scan 
on files {}",



(accumulo) 01/01: Merge branch '2.1'

2024-03-11 Thread cshannon
This is an automated email from the ASF dual-hosted git repository.

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

commit e3039f402bcc725dbf48e18a22f69267323935f1
Merge: 9d9bcc1d48 802b6e948d
Author: Christopher L. Shannon 
AuthorDate: Mon Mar 11 11:16:11 2024 -0400

Merge branch '2.1'

 .../core/metadata/schema/TabletsMetadata.java  |  2 +-
 .../core/metadata/schema/TabletMetadataTest.java   | 25 ++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --cc 
core/src/test/java/org/apache/accumulo/core/metadata/schema/TabletMetadataTest.java
index 5287d689ba,67a22ccd3f..9a352b82d5
--- 
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
@@@ -41,7 -41,8 +43,9 @@@ import java.util.Map
  import java.util.Set;
  import java.util.SortedMap;
  import java.util.TreeMap;
 +import java.util.UUID;
+ import java.util.concurrent.atomic.AtomicBoolean;
+ import java.util.stream.Stream;
  
  import org.apache.accumulo.core.data.Key;
  import org.apache.accumulo.core.data.Mutation;
@@@ -259,30 -259,27 +263,51 @@@ public class TabletMetadataTest 
  assertFalse(tm.hasCurrent());
}
  
 +  @Test
 +  public void testMergedColumn() {
 +KeyExtent extent = new KeyExtent(TableId.of("5"), new Text("df"), new 
Text("da"));
 +
 +// Test merged column set
 +Mutation mutation = TabletColumnFamily.createPrevRowMutation(extent);
 +MERGED_COLUMN.put(mutation, MERGED_VALUE);
 +TabletMetadata tm = 
TabletMetadata.convertRow(toRowMap(mutation).entrySet().iterator(),
 +EnumSet.of(ColumnType.MERGED), true);
 +assertTrue(tm.hasMerged());
 +
 +// Column not set
 +mutation = TabletColumnFamily.createPrevRowMutation(extent);
 +tm = TabletMetadata.convertRow(toRowMap(mutation).entrySet().iterator(),
 +EnumSet.of(ColumnType.MERGED), true);
 +assertFalse(tm.hasMerged());
 +
 +// MERGED Column not fetched
 +mutation = TabletColumnFamily.createPrevRowMutation(extent);
 +tm = TabletMetadata.convertRow(toRowMap(mutation).entrySet().iterator(),
 +EnumSet.of(ColumnType.PREV_ROW), true);
 +assertThrows(IllegalStateException.class, tm::hasMerged);
 +  }
 +
+   @Test
+   public void testTabletsMetadataAutoClose() throws Exception {
+ AtomicBoolean closeCalled = new AtomicBoolean();
+ AutoCloseable autoCloseable = () -> closeCalled.set(true);
+ Constructor tmConstructor =
+ TabletsMetadata.class.getDeclaredConstructor(AutoCloseable.class, 
Iterable.class);
+ tmConstructor.setAccessible(true);
+ 
+ try (TabletsMetadata ignored = tmConstructor.newInstance(autoCloseable, 
List.of())) {
+   // test autoCloseable used directly on TabletsMetadata
+ }
+ assertTrue(closeCalled.get());
+ 
+ closeCalled.set(false);
+ try (Stream ignored =
+ tmConstructor.newInstance(autoCloseable, List.of()).stream()) {
+   // test stream delegates to close on TabletsMetadata
+ }
+ assertTrue(closeCalled.get());
+   }
+ 
private SortedMap toRowMap(Mutation mutation) {
  SortedMap rowMap = new TreeMap<>();
  mutation.getUpdates().forEach(cu -> {



(accumulo) 01/01: Merge branch '2.1'

2024-03-04 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit f3d5fb01d701a6932d37d2f67f52cc0eefa64d50
Merge: ebf7054d1f d91d016211
Author: Dave Marion 
AuthorDate: Mon Mar 4 18:14:16 2024 +

Merge branch '2.1'

 .../core/clientImpl/ThriftTransportKey.java|  29 --
 .../core/clientImpl/ThriftTransportPool.java   | 110 +
 .../org/apache/accumulo/core/rpc/ThriftUtil.java   |   7 +-
 .../accumulo/core/rpc/clients/TServerClient.java   | 105 +++-
 .../core/rpc/clients/ThriftClientTypes.java|   6 +-
 .../core/clientImpl/ThriftTransportKeyTest.java|  25 ++---
 .../coordinator/CompactionCoordinator.java |   4 +-
 .../apache/accumulo/test/TransportCachingIT.java   |  42 
 8 files changed, 158 insertions(+), 170 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportKey.java
index f332a09492,f4c7047d6d..0f84154a15
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportKey.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportKey.java
@@@ -24,9 -24,10 +24,10 @@@ import java.util.Objects
  
  import org.apache.accumulo.core.rpc.SaslConnectionParams;
  import org.apache.accumulo.core.rpc.SslConnectionParams;
+ import org.apache.accumulo.core.rpc.clients.ThriftClientTypes;
 -import org.apache.accumulo.core.util.HostAndPort;
  
  import com.google.common.annotations.VisibleForTesting;
 +import com.google.common.net.HostAndPort;
  
  @VisibleForTesting
  public class ThriftTransportKey {
@@@ -54,12 -58,18 +58,18 @@@
  this.saslParams = saslParams;
  if (saslParams != null && sslParams != null) {
// TSasl and TSSL transport factories don't play nicely together
 -  throw new RuntimeException("Cannot use both SSL and SASL thrift 
transports");
 +  throw new IllegalArgumentException("Cannot use both SSL and SASL thrift 
transports");
  }
- this.hash = Objects.hash(server, timeout, sslParams, saslParams);
+ this.hash = Objects.hash(type, server, timeout, sslParams, saslParams);
}
  
-   HostAndPort getServer() {
+   @VisibleForTesting
+   public ThriftClientTypes getType() {
+ return type;
+   }
+ 
+   @VisibleForTesting
+   public HostAndPort getServer() {
  return server;
}
  
diff --cc 
core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
index d1bc17e945,a3d38aa10a..b3f205fa2a
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
@@@ -41,6 -41,8 +41,7 @@@ import java.util.function.LongSupplier
  import java.util.function.Supplier;
  
  import org.apache.accumulo.core.rpc.ThriftUtil;
+ import org.apache.accumulo.core.rpc.clients.ThriftClientTypes;
 -import org.apache.accumulo.core.util.HostAndPort;
  import org.apache.accumulo.core.util.Pair;
  import org.apache.accumulo.core.util.threads.Threads;
  import org.apache.thrift.TConfiguration;
@@@ -49,9 -51,7 +50,8 @@@ import org.apache.thrift.transport.TTra
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
- import com.google.common.annotations.VisibleForTesting;
  import com.google.common.base.Preconditions;
 +import com.google.common.net.HostAndPort;
  
  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  
@@@ -109,71 -110,40 +109,40 @@@ public class ThriftTransportPool 
  return pool;
}
  
-   public TTransport getTransport(HostAndPort location, long milliseconds, 
ClientContext context)
-   throws TTransportException {
- ThriftTransportKey cacheKey = new ThriftTransportKey(location, 
milliseconds, context);
+   public TTransport getTransport(ThriftClientTypes type, HostAndPort 
location, long milliseconds,
+   ClientContext context, boolean preferCached) throws TTransportException 
{
  
- CachedConnection connection = connectionPool.reserveAny(cacheKey);
- 
- if (connection != null) {
-   log.trace("Using existing connection to {}", cacheKey.getServer());
-   return connection.transport;
- } else {
-   return createNewTransport(cacheKey);
+ ThriftTransportKey cacheKey = new ThriftTransportKey(type, location, 
milliseconds, context);
+ if (preferCached) {
+   CachedConnection connection = connectionPool.reserveAny(cacheKey);
+   if (connection != null) {
+ log.trace("Using existing connection to {}", cacheKey.getServer());
+ return connection.transport;
+   }
  }
+ return createNewTransport(cacheKey);
}
  
-   @VisibleForTesting
-   public Pair getAnyTransport(List 
servers,
-   boolean preferCachedConnection) throws TTransportException {
- 
- servers = new ArrayList<>(servers);
- 
- if (preferCachedConnection) {
-   HashSet serversSet = new 

(accumulo) 01/01: Merge branch '2.1'

2024-03-04 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit ebf7054d1f6bf62d5170dcbbb07c7b0ee572cf2c
Merge: c976af383f 18b745466e
Author: Dave Marion 
AuthorDate: Mon Mar 4 12:34:51 2024 +

Merge branch '2.1'

 assemble/bin/accumulo-cluster | 10 +-
 .../accumulo/core/conf/cluster/ClusterConfigParser.java   |  5 -
 .../accumulo/core/conf/cluster/ClusterConfigParserTest.java   | 11 ---
 .../core/conf/cluster/cluster-with-optional-services.yaml |  3 ++-
 4 files changed, 23 insertions(+), 6 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2024-03-01 Thread cshannon
This is an automated email from the ASF dual-hosted git repository.

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

commit c976af383f992bdefcdd579220c704235960a6c7
Merge: 9817474333 507a96380b
Author: Christopher L. Shannon 
AuthorDate: Fri Mar 1 17:21:36 2024 -0500

Merge branch '2.1'

 .../accumulo/test/functional/MetadataIT.java   | 71 ++
 1 file changed, 71 insertions(+)

diff --cc test/src/main/java/org/apache/accumulo/test/functional/MetadataIT.java
index 0b3116c395,3c6514624e..60ca6cb562
--- a/test/src/main/java/org/apache/accumulo/test/functional/MetadataIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/MetadataIT.java
@@@ -45,7 -48,10 +47,9 @@@ import org.apache.accumulo.core.data.Ke
  import org.apache.accumulo.core.data.Range;
  import org.apache.accumulo.core.data.TableId;
  import org.apache.accumulo.core.data.Value;
+ import org.apache.accumulo.core.iterators.user.VersioningIterator;
 -import org.apache.accumulo.core.metadata.MetadataTable;
 -import org.apache.accumulo.core.metadata.RootTable;
 +import org.apache.accumulo.core.metadata.AccumuloTable;
+ import org.apache.accumulo.core.metadata.schema.MetadataSchema;
  import org.apache.accumulo.core.metadata.schema.MetadataSchema.DeletesSection;
  import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
  import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
@@@ -221,4 -224,67 +227,69 @@@ public class MetadataIT extends Accumul
  
  }
}
+ 
+   // Test that configs related to the correctness of the Root/Metadata tables
+   // are initialized correctly
+   @Test
+   public void testSystemTablesInitialConfigCorrectness() throws Exception {
+ try (ClientContext client =
+ (ClientContext) Accumulo.newClient().from(getClientProps()).build()) {
+ 
+   // It is important here to use getTableProperties() and not 
getConfiguration()
+   // because we want only the table properties and not a merged view
 -  var rootTableProps = 
client.tableOperations().getTableProperties(RootTable.NAME);
 -  var metadataTableProps = 
client.tableOperations().getTableProperties(MetadataTable.NAME);
++  var rootTableProps =
++  
client.tableOperations().getTableProperties(AccumuloTable.ROOT.tableName());
++  var metadataTableProps =
++  
client.tableOperations().getTableProperties(AccumuloTable.METADATA.tableName());
+ 
+   // Verify root table config
+   testCommonSystemTableConfig(rootTableProps);
+   assertEquals("root",
+   
rootTableProps.get(Property.TABLE_COMPACTION_DISPATCHER_OPTS.getKey() + 
"service"));
+ 
+   // Verify metadata table config
+   testCommonSystemTableConfig(metadataTableProps);
+   assertEquals("meta",
+   
metadataTableProps.get(Property.TABLE_COMPACTION_DISPATCHER_OPTS.getKey() + 
"service"));
+ }
+   }
+ 
+   private void testCommonSystemTableConfig(Map tableProps) {
+ // Verify properties all have a table. prefix
+ assertTrue(tableProps.keySet().stream().allMatch(key -> 
key.startsWith("table.")));
+ 
+ // Verify properties are correctly set
+ assertEquals("5", 
tableProps.get(Property.TABLE_FILE_REPLICATION.getKey()));
+ assertEquals("sync", tableProps.get(Property.TABLE_DURABILITY.getKey()));
+ assertEquals("false", 
tableProps.get(Property.TABLE_FAILURES_IGNORE.getKey()));
+ assertEquals("", 
tableProps.get(Property.TABLE_DEFAULT_SCANTIME_VISIBILITY.getKey()));
+ assertEquals("tablet,server", 
tableProps.get(Property.TABLE_LOCALITY_GROUPS.getKey()));
+ assertEquals(
+ String.format("%s,%s", 
MetadataSchema.TabletsSection.TabletColumnFamily.NAME,
+ MetadataSchema.TabletsSection.CurrentLocationColumnFamily.NAME),
+ tableProps.get(Property.TABLE_LOCALITY_GROUP_PREFIX.getKey() + 
"tablet"));
+ assertEquals(
+ String.format("%s,%s,%s,%s", 
MetadataSchema.TabletsSection.DataFileColumnFamily.NAME,
+ MetadataSchema.TabletsSection.LogColumnFamily.NAME,
+ MetadataSchema.TabletsSection.ServerColumnFamily.NAME,
+ MetadataSchema.TabletsSection.FutureLocationColumnFamily.NAME),
+ tableProps.get(Property.TABLE_LOCALITY_GROUP_PREFIX.getKey() + 
"server"));
+ assertEquals("20," + MetadataBulkLoadFilter.class.getName(),
+ tableProps.get(Property.TABLE_ITERATOR_PREFIX.getKey() + 
"majc.bulkLoadFilter"));
+ assertEquals(SimpleCompactionDispatcher.class.getName(),
+ tableProps.get(Property.TABLE_COMPACTION_DISPATCHER.getKey()));
+ 
+ // Verify VersioningIterator related properties are correct
+ var iterClass = "10," + VersioningIterator.class.getName();
+ var maxVersions = "1";
+ assertEquals(iterClass, 
tableProps.get(Property.TABLE_ITERATOR_PREFIX.getKey() + "scan.vers"));
+ assertEquals(maxVersions,
+ 

(accumulo) 01/01: Merge branch '2.1'

2024-02-29 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 981747433306236511fb652c4b7ebe5a461046ae
Merge: aed3919e46 48f150045b
Author: Daniel Roberts 
AuthorDate: Fri Mar 1 00:51:19 2024 +

Merge branch '2.1'

 .../main/java/org/apache/accumulo/core/Constants.java  |  1 +
 .../java/org/apache/accumulo/core/conf/Property.java   | 18 --
 .../spi/compaction/SimpleCompactionDispatcher.java | 10 +++---
 .../accumulo/server/conf/CheckCompactionConfig.java|  4 +++-
 .../test/compaction/BadCompactionServiceConfigIT.java  |  4 +++-
 5 files changed, 26 insertions(+), 11 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/conf/Property.java
index 6cb1207f40,1db7d9326d..e2afb7defb
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@@ -637,25 -685,23 +639,29 @@@ public enum Property 
PropertyType.JSON,
"See {% jlink -f 
org.apache.accumulo.core.spi.compaction.DefaultCompactionPlanner %}.",
"2.1.0"),
 +  @Deprecated(since = "3.1")
-   
TSERV_COMPACTION_SERVICE_DEFAULT_PLANNER("tserver.compaction.major.service.default.planner",
+   TSERV_COMPACTION_SERVICE_DEFAULT_PLANNER(
+   "tserver.compaction.major.service." + DEFAULT_COMPACTION_SERVICE_NAME + 
".planner",
DefaultCompactionPlanner.class.getName(), PropertyType.CLASSNAME,
"Planner for default compaction service.", "2.1.0"),
 +  @Deprecated(since = "3.1")
-   
TSERV_COMPACTION_SERVICE_DEFAULT_RATE_LIMIT("tserver.compaction.major.service.default.rate.limit",
-   "0B", PropertyType.BYTES,
+   TSERV_COMPACTION_SERVICE_DEFAULT_RATE_LIMIT(
+   "tserver.compaction.major.service." + DEFAULT_COMPACTION_SERVICE_NAME + 
".rate.limit", "0B",
+   PropertyType.BYTES,
"Maximum number of bytes to read or write per second over all major"
 -  + " compactions in this compaction service, or 0B for unlimited.",
 +  + " compactions in this compaction service, or 0B for unlimited. 
This property has"
 +  + " been deprecated in anticipation of it being removed in a future 
release that"
 +  + " removes the rate limiting feature.",
"2.1.0"),
 +  @Deprecated(since = "3.1")
TSERV_COMPACTION_SERVICE_DEFAULT_MAX_OPEN(
-   "tserver.compaction.major.service.default.planner.opts.maxOpen", "10", 
PropertyType.COUNT,
-   "The maximum number of files a compaction will open.", "2.1.0"),
+   "tserver.compaction.major.service." + DEFAULT_COMPACTION_SERVICE_NAME
+   + ".planner.opts.maxOpen",
+   "10", PropertyType.COUNT, "The maximum number of files a compaction 
will open.", "2.1.0"),
 +  @Deprecated(since = "3.1")
TSERV_COMPACTION_SERVICE_DEFAULT_EXECUTORS(
-   "tserver.compaction.major.service.default.planner.opts.executors",
+   "tserver.compaction.major.service." + DEFAULT_COMPACTION_SERVICE_NAME
+   + ".planner.opts.executors",

"[{'name':'small','type':'internal','maxSize':'32M','numThreads':2},{'name':'medium','type':'internal','maxSize':'128M','numThreads':2},{'name':'large','type':'internal','numThreads':2}]"
.replaceAll("'", "\""),
PropertyType.STRING,



(accumulo) 01/01: Merge branch '2.1'

2024-02-22 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit ea5afb9d85e342834554504cdf541a43dcc79a84
Merge: 9ffc450b0a bdec3a7c3a
Author: Keith Turner 
AuthorDate: Thu Feb 22 19:00:28 2024 -0500

Merge branch '2.1'

 .../server/manager/state/MetaDataStateStore.java   |   3 +-
 .../manager/state/TabletStateChangeIterator.java   |   3 +
 .../accumulo/test/manager/SuspendedTabletsIT.java  | 249 +
 3 files changed, 157 insertions(+), 98 deletions(-)

diff --cc 
test/src/main/java/org/apache/accumulo/test/manager/SuspendedTabletsIT.java
index ec99094346,764bc1dfc9..8ebb75378b
--- 
a/test/src/main/java/org/apache/accumulo/test/manager/SuspendedTabletsIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/manager/SuspendedTabletsIT.java
@@@ -333,6 -300,95 +303,93 @@@ public class SuspendedTabletsIT extend
  throws Exception;
}
  
+   private class ShutdownTserverKiller implements TServerKiller {
+ 
+ @Override
+ public void eliminateTabletServers(ClientContext ctx, TabletLocations 
locs, int count)
+ throws Exception {
 -
+   Set tserverSet = new HashSet<>();
+   Set metadataServerSet = new HashSet<>();
+ 
 -  TabletLocator tl = TabletLocator.getLocator(ctx, MetadataTable.ID);
++  TabletLocator tl = TabletLocator.getLocator(ctx, 
AccumuloTable.METADATA.tableId());
+   for (TabletLocationState tls : locs.locationStates.values()) {
+ if (tls.current != null) {
+   // add to set of all servers
+   tserverSet.add(tls.current.getServerInstance());
+ 
+   // get server that the current tablets metadata is on
+   TabletLocator.TabletLocation tab =
+   tl.locateTablet(ctx, tls.extent.toMetaRow(), false, false);
+   // add it to the set of servers with metadata
 -  metadataServerSet
 -  .add(new TServerInstance(tab.tablet_location, 
Long.valueOf(tab.tablet_session, 16)));
++  metadataServerSet.add(new TServerInstance(tab.getTserverLocation(),
++  Long.valueOf(tab.getTserverSession(), 16)));
+ }
+   }
+ 
+   // remove servers with metadata on them from the list of servers to be 
shutdown
+   assertEquals(1, metadataServerSet.size(), "Expecting a single tServer 
in metadataServerSet");
+   tserverSet.removeAll(metadataServerSet);
+ 
+   assertEquals(TSERVERS - 1, tserverSet.size(),
+   "Expecting " + (TSERVERS - 1) + " tServers in shutdown-list");
+ 
+   List tserversList = new ArrayList<>(tserverSet);
 -  Collections.shuffle(tserversList, random);
++  Collections.shuffle(tserversList, RANDOM.get());
+ 
+   for (int i1 = 0; i1 < count; ++i1) {
+ final String tserverName = tserversList.get(i1).getHostPortSession();
+ ThriftClientTypes.MANAGER.executeVoid(ctx, client -> {
+   log.info("Sending shutdown command to {} via ManagerClientService", 
tserverName);
+   client.shutdownTabletServer(null, ctx.rpcCreds(), tserverName, 
false);
+ });
+   }
+ 
+   log.info("Waiting for tserver process{} to die", count == 1 ? "" : 
"es");
+   for (int i2 = 0; i2 < 10; ++i2) {
+ List deadProcs = new ArrayList<>();
+ for (ProcessReference pr1 : 
getCluster().getProcesses().get(ServerType.TABLET_SERVER)) {
+   Process p = pr1.getProcess();
+   if (!p.isAlive()) {
+ deadProcs.add(pr1);
+   }
+ }
+ for (ProcessReference pr2 : deadProcs) {
+   log.info("Process {} is dead, informing cluster control about 
this", pr2.getProcess());
+   
getCluster().getClusterControl().killProcess(ServerType.TABLET_SERVER, pr2);
+   --count;
+ }
+ if (count == 0) {
+   return;
+ } else {
+   Thread.sleep(SECONDS.toMillis(2));
+ }
+   }
+   throw new IllegalStateException("Tablet servers didn't die!");
 -
+ }
+   }
+ 
+   private class CrashTserverKiller implements TServerKiller {
+ 
+ @Override
+ public void eliminateTabletServers(ClientContext ctx, TabletLocations 
locs, int count)
+ throws Exception {
+   // Exclude the tablet server hosting the metadata table from the list 
and only
+   // kill tablet servers that are not hosting the metadata table.
+   List procs = 
getCluster().getProcesses().get(ServerType.TABLET_SERVER)
+   .stream().filter(p -> 
!metadataTserverProcess.equals(p)).collect(Collectors.toList());
 -  Collections.shuffle(procs, random);
++  Collections.shuffle(procs, RANDOM.get());
+   assertEquals(TSERVERS - 1, procs.size(), "Not enough tservers exist");
+   assertTrue(procs.size() >= count, "Attempting to kill more tservers (" 
+ count
+   + ") than exist in the cluster (" + procs.size() + ")");
+ 
+   for (int i = 0; i < count; ++i) {
+  

(accumulo) 01/01: Merge branch '2.1'

2024-02-22 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 9ffc450b0a0c15b2fe16a070b323250e82bca00d
Merge: 9deb242ff6 1a40aee541
Author: Keith Turner 
AuthorDate: Thu Feb 22 16:11:00 2024 -0500

Merge branch '2.1'

 .../apache/accumulo/test/ScanConsistencyIT.java| 33 --
 1 file changed, 18 insertions(+), 15 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2024-02-22 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit 9deb242ff63fd6dd2d0a9e72ac37ebd28cb7e84b
Merge: dd7b749102 f2adaebba2
Author: Dave Marion 
AuthorDate: Thu Feb 22 17:50:39 2024 +

Merge branch '2.1'




(accumulo) 01/01: Merge branch '2.1'

2024-02-22 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit dd7b749102ad1718c1c0dc5cc46e0126c1a10023
Merge: e3d6204305 af50af77ce
Author: Dave Marion 
AuthorDate: Thu Feb 22 17:28:33 2024 +

Merge branch '2.1'

 .../manager/upgrade/UpgradeCoordinator.java| 37 +-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --cc 
server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
index f5fd84c0e1,d62e824e05..34b362fa2e
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
@@@ -190,25 -198,19 +203,28 @@@ public class UpgradeCoordinator 
.submit(() -> {
  try {
for (int v = currentVersion; v < AccumuloDataVersion.get(); 
v++) {
 -log.info("Upgrading Root from data version {}", v);
 +log.info("Upgrading Root - current version {} as step towards 
target version {}", v,
 +AccumuloDataVersion.get());
 +var upgrader = upgraders.get(v);
 +Objects.requireNonNull(upgrader,
 +"upgrade root: failed to find root upgrader for version " 
+ currentVersion);
  upgraders.get(v).upgradeRoot(context);
}
- 
setStatus(UpgradeStatus.UPGRADED_ROOT, eventCoordinator);
  
for (int v = currentVersion; v < AccumuloDataVersion.get(); 
v++) {
 -log.info("Upgrading Metadata from data version {}", v);
 +log.info(
 +"Upgrading Metadata - current version {} as step towards 
target version {}", v,
 +AccumuloDataVersion.get());
 +var upgrader = upgraders.get(v);
 +Objects.requireNonNull(upgrader,
 +"upgrade metadata: failed to find upgrader for version " 
+ currentVersion);
  upgraders.get(v).upgradeMetadata(context);
}
+   setStatus(UpgradeStatus.UPGRADED_METADATA, eventCoordinator);
+ 
+   log.info("Validating configuration properties.");
+   validateProperties(context);
  
log.info("Updating persistent data version.");
updateAccumuloVersion(context.getServerDirs(), 
context.getVolumeManager(),



(accumulo) 01/01: Merge branch '2.1'

2024-02-16 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 9f430a26956449133d13c1a35c367df7ce33dc7e
Merge: 978f8b9eca 3298d6db89
Author: Daniel Roberts 
AuthorDate: Fri Feb 16 22:12:55 2024 +

Merge branch '2.1'

 .../org/apache/accumulo/core/conf/Property.java | 10 ++
 .../accumulo/coordinator/CompactionCoordinator.java |  5 ++---
 .../org/apache/accumulo/compactor/Compactor.java| 21 ++---
 3 files changed, 26 insertions(+), 10 deletions(-)

diff --cc 
server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
index 00956edbf1,1434d2a1f1..b81c30dee3
--- 
a/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
+++ 
b/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
@@@ -579,15 -592,17 +584,17 @@@ public class Compactor extends Abstract
protected long getWaitTimeBetweenCompactionChecks() {
  // get the total number of compactors assigned to this queue
  int numCompactors = ExternalCompactionUtil.countCompactors(queueName, 
getContext());
- // Aim for around 3 compactors checking in every second
- long sleepTime = numCompactors * 1000L / 3;
- // Ensure a compactor sleeps at least around a second
- sleepTime = Math.max(1000, sleepTime);
- // Ensure a compactor sleep not too much more than 5 mins
- sleepTime = Math.min(300_000L, sleepTime);
+ long minWait = 
getConfiguration().getTimeInMillis(Property.COMPACTOR_MIN_JOB_WAIT_TIME);
+ // Aim for around 3 compactors checking in per min wait time.
+ long sleepTime = numCompactors * minWait / 3;
+ // Ensure a compactor waits at least the minimum time
+ sleepTime = Math.max(minWait, sleepTime);
+ // Ensure a sleeping compactor has a configurable max sleep time
+ sleepTime = 
Math.min(getConfiguration().getTimeInMillis(Property.COMPACTOR_MAX_JOB_WAIT_TIME),
+ sleepTime);
  // Add some random jitter to the sleep time, that averages out to sleep 
time. This will spread
  // compactors out evenly over time.
 -sleepTime = (long) (.9 * sleepTime + sleepTime * .2 * 
random.nextDouble());
 +sleepTime = (long) (.9 * sleepTime + sleepTime * .2 * 
RANDOM.get().nextDouble());
  LOG.trace("Sleeping {}ms based on {} compactors", sleepTime, 
numCompactors);
  return sleepTime;
}



(accumulo) 01/01: Merge branch '2.1'

2024-02-13 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 978f8b9ecaac2518ad3f2559512cf11d5fdd3901
Merge: d91178f44c f28b55dc25
Author: Keith Turner 
AuthorDate: Tue Feb 13 17:12:35 2024 +

Merge branch '2.1'

 .../accumulo/test/functional/CompactionIT.java   | 20 +---
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --cc 
test/src/main/java/org/apache/accumulo/test/functional/CompactionIT.java
index 6df72f17d9,46aa609e2c..18fdff715d
--- a/test/src/main/java/org/apache/accumulo/test/functional/CompactionIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/CompactionIT.java
@@@ -81,9 -69,9 +81,10 @@@ import org.apache.accumulo.core.iterato
  import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
  import org.apache.accumulo.core.iterators.user.AgeOffFilter;
  import org.apache.accumulo.core.iterators.user.GrepIterator;
 -import org.apache.accumulo.core.metadata.MetadataTable;
 +import org.apache.accumulo.core.metadata.AccumuloTable;
 +import org.apache.accumulo.core.metadata.StoredTabletFile;
  import org.apache.accumulo.core.metadata.schema.Ample;
+ import org.apache.accumulo.core.metadata.schema.MetadataSchema;
  import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
  import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.TabletColumnFamily;
  import org.apache.accumulo.core.metadata.schema.TabletMetadata;
@@@ -985,9 -715,14 +986,14 @@@ public class CompactionIT extends Accum
  }
}
  
-   private int countFiles(AccumuloClient c) throws Exception {
+   /**
+* Counts the number of tablets and files in a table.
+*/
+   private int countFiles(AccumuloClient c, String tableName) throws Exception 
{
+ var tableId = getCluster().getServerContext().getTableId(tableName);
 -try (Scanner s = c.createScanner(MetadataTable.NAME, 
Authorizations.EMPTY)) {
 +try (Scanner s = c.createScanner(AccumuloTable.METADATA.tableName(), 
Authorizations.EMPTY)) {
-   s.fetchColumnFamily(new Text(TabletColumnFamily.NAME));
+   s.setRange(MetadataSchema.TabletsSection.getRange(tableId));
+   TabletColumnFamily.PREV_ROW_COLUMN.fetch(s);
s.fetchColumnFamily(new Text(DataFileColumnFamily.NAME));
return Iterators.size(s.iterator());
  }



(accumulo) 01/01: Merge branch '2.1'

2024-02-09 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit 171fdcd7f539da7b4ee0c011b5d546d3af6bde96
Merge: 113e495dbf 12919d094b
Author: Dave Marion 
AuthorDate: Fri Feb 9 14:29:37 2024 +

Merge branch '2.1'

 .../java/org/apache/accumulo/core/Constants.java   |  2 -
 .../org/apache/accumulo/core/conf/Property.java|  4 +-
 .../MiniAccumuloClusterClasspathTest.java  |  2 +-
 .../minicluster/MiniAccumuloClusterTest.java   |  4 +-
 .../accumulo/tserver/BulkFailedCopyProcessor.java  | 81 --
 .../org/apache/accumulo/tserver/TabletServer.java  | 20 +-
 .../org/apache/accumulo/tserver/log/LogSorter.java | 25 ---
 7 files changed, 19 insertions(+), 119 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/Constants.java
index 3c8da35361,00b1a2fd18..66ac9144a8
--- a/core/src/main/java/org/apache/accumulo/core/Constants.java
+++ b/core/src/main/java/org/apache/accumulo/core/Constants.java
@@@ -88,8 -88,9 +88,6 @@@ public class Constants 
  
public static final String ZNEXT_FILE = "/next_file";
  
 -  // TODO: Remove when Property.TSERV_WORKQ_THREADS is removed
--  public static final String ZBULK_FAILED_COPYQ = "/bulk_failed_copyq";
--
public static final String ZHDFS_RESERVATIONS = "/hdfs_reservations";
public static final String ZRECOVERY = "/recovery";
  
diff --cc core/src/main/java/org/apache/accumulo/core/conf/Property.java
index 56f856410d,1fa04490fb..9acce283cd
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@@ -721,9 -811,10 +721,11 @@@ public enum Property 
+ " that begin with 'table.file' can be used here. For example, to 
set the compression"
+ " of the sorted recovery files to snappy use 
'tserver.wal.sort.file.compress.type=snappy'.",
"2.1.0"),
+   @Deprecated(since = "2.1.3")
TSERV_WORKQ_THREADS("tserver.workq.threads", "2", PropertyType.COUNT,
"The number of threads for the distributed work queue. These threads 
are"
-   + " used for copying failed bulk import RFiles.",
 -  + " used for copying failed bulk import RFiles. This property will 
be removed when bulk import V1 is removed.",
++  + " used for copying failed bulk import RFiles. Note that as of 
version 3.1.0 this property"
++  + " is not used and will be removed in a future release.",
"1.4.2"),
TSERV_WAL_SYNC("tserver.wal.sync", "true", PropertyType.BOOLEAN,
"Use the SYNC_BLOCK create flag to sync WAL writes to disk. Prevents"
diff --cc 
minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterClasspathTest.java
index 2ba1960701,d18ffdd4f0..2a5da748db
--- 
a/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterClasspathTest.java
+++ 
b/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterClasspathTest.java
@@@ -78,7 -80,7 +78,7 @@@ public class MiniAccumuloClusterClasspa
  MiniAccumuloConfig config = new MiniAccumuloConfig(testDir, 
ROOT_PASSWORD).setJDWPEnabled(true);
  config.setZooKeeperPort(0);
  HashMap site = new HashMap<>();
- site.put(Property.TSERV_WORKQ_THREADS.getKey(), "2");
 -site.put(VFS_CONTEXT_CLASSPATH_PROPERTY.getKey() + "cx1", 
jarFile.toURI().toString());
++site.put(Property.TSERV_WAL_MAX_SIZE.getKey(), "1G");
  config.setSiteConfig(site);
  accumulo = new MiniAccumuloCluster(config);
  accumulo.start();
diff --cc 
minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterTest.java
index 91f5b884c5,913904ef1f..d4a48de83a
--- 
a/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterTest.java
+++ 
b/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterTest.java
@@@ -81,7 -79,7 +81,7 @@@ public class MiniAccumuloClusterTest ex
  MiniAccumuloConfig config = new MiniAccumuloConfig(testDir, 
ROOT_PASSWORD).setJDWPEnabled(true);
  config.setZooKeeperPort(0);
  HashMap site = new HashMap<>();
- site.put(Property.TSERV_WORKQ_THREADS.getKey(), "2");
 -site.put(Property.TSERV_COMPACTION_WARN_TIME.getKey(), "5m");
++site.put(Property.TSERV_WAL_SORT_BUFFER_SIZE.getKey(), "15%");
  config.setSiteConfig(site);
  accumulo = new MiniAccumuloCluster(config);
  accumulo.start();
@@@ -198,7 -194,7 +198,7 @@@
  // ensure what user passed in is what comes back
  assertEquals(0, accumulo.getConfig().getZooKeeperPort());
  HashMap site = new HashMap<>();
- site.put(Property.TSERV_WORKQ_THREADS.getKey(), "2");
 -site.put(Property.TSERV_COMPACTION_WARN_TIME.getKey(), "5m");
++site.put(Property.TSERV_WAL_SORT_BUFFER_SIZE.getKey(), "15%");
  assertEquals(site, accumulo.getConfig().getSiteConfig());
}
  
diff --cc 

(accumulo) 01/01: Merge branch '2.1'

2024-02-08 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 113e495dbff884309c4213b9f5016c789850fe42
Merge: 1443a7edaf 896e6277e1
Author: Keith Turner 
AuthorDate: Thu Feb 8 13:56:27 2024 -0500

Merge branch '2.1'

 .../src/main/java/org/apache/accumulo/compactor/Compactor.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)




(accumulo) 01/01: Merge branch '2.1'

2024-02-07 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit dfda8bbea49b04e440be50c204182df4f9e4f203
Merge: 8bb8fcea89 e97bcf2668
Author: Keith Turner 
AuthorDate: Wed Feb 7 22:00:50 2024 +

Merge branch '2.1'

 .../src/main/java/org/apache/accumulo/tserver/ScanServer.java | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2024-02-06 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 8bb8fcea890a378608b101cb015fc921b684fde9
Merge: 354be4fbaa f98c87cb57
Author: Daniel Roberts 
AuthorDate: Wed Feb 7 00:20:23 2024 +

Merge branch '2.1'

 .../apache/accumulo/server/compaction/RetryableThriftCall.java   | 9 -
 .../src/main/java/org/apache/accumulo/tserver/ScanServer.java| 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2024-02-01 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 37782d558e81115a63bc85e9ada9e6ddf51d11a9
Merge: 5fb05efd26 cdd86f18f2
Author: Daniel Roberts 
AuthorDate: Fri Feb 2 04:33:24 2024 +

Merge branch '2.1'




(accumulo) 01/01: Merge branch '2.1'

2024-02-01 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 5fb05efd26d0c15f633dbd4e0d9ce8daa16282a5
Merge: 1db892b00d 8bf0970c7f
Author: Keith Turner 
AuthorDate: Thu Feb 1 17:16:50 2024 -0500

Merge branch '2.1'

 .../tserver/compactions/CompactionManager.java |  8 +-
 .../tserver/compactions/CompactionService.java |  1 +
 .../accumulo/test/functional/CompactionIT.java | 88 ++
 3 files changed, 93 insertions(+), 4 deletions(-)

diff --cc 
test/src/main/java/org/apache/accumulo/test/functional/CompactionIT.java
index 7b633e338d,93c8c1713e..6df72f17d9
--- a/test/src/main/java/org/apache/accumulo/test/functional/CompactionIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/CompactionIT.java
@@@ -90,8 -77,9 +90,10 @@@ import org.apache.accumulo.core.metadat
  import org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType;
  import org.apache.accumulo.core.metadata.schema.TabletsMetadata;
  import org.apache.accumulo.core.security.Authorizations;
+ import org.apache.accumulo.core.spi.compaction.DefaultCompactionPlanner;
+ import org.apache.accumulo.core.spi.compaction.SimpleCompactionDispatcher;
  import org.apache.accumulo.harness.AccumuloClusterHarness;
 +import org.apache.accumulo.minicluster.ServerType;
  import org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl;
  import org.apache.accumulo.test.VerifyIngest;
  import org.apache.accumulo.test.VerifyIngest.VerifyParams;
@@@ -705,200 -628,94 +707,286 @@@ public class CompactionIT extends Accum
  }
}
  
 +  @Test
 +  public void testSelectNoFiles() throws Exception {
 +
 +// Test a compaction selector that selects no files. In this case there 
is no work to,
 +// so we want to ensure it does not hang
 +
 +try (AccumuloClient c = 
Accumulo.newClient().from(getClientProps()).build()) {
 +  String tableName = getUniqueNames(1)[0];
 +  c.tableOperations().create(tableName);
 +
 +  writeFlush(c, tableName, "a");
 +  writeFlush(c, tableName, "b");
 +
 +  CompactionConfig config = new CompactionConfig()
 +  .setSelector(new 
PluginConfig(EmptyCompactionSelector.class.getName(), Map.of()))
 +  .setWait(true);
 +  c.tableOperations().compact(tableName, config);
 +
 +  assertEquals(Set.of("a", "b"), getRows(c, tableName));
 +}
 +
 +  }
 +
 +  @Test
 +  public void testConcurrent() throws Exception {
 +// two compactions without iterators or strategy should be able to run 
concurrently
 +
 +try (AccumuloClient c = 
Accumulo.newClient().from(getClientProps()).build()) {
 +
 +  String tableName = getUniqueNames(1)[0];
 +  c.tableOperations().create(tableName);
 +
 +  // write random data because its very unlikely it will compress
 +  writeRandomValue(c, tableName, 1 << 16);
 +  writeRandomValue(c, tableName, 1 << 16);
 +
 +  c.tableOperations().compact(tableName, new 
CompactionConfig().setWait(false));
 +  c.tableOperations().compact(tableName, new 
CompactionConfig().setWait(true));
 +
 +  assertEquals(1, FunctionalTestUtils.countRFiles(c, tableName));
 +
 +  writeRandomValue(c, tableName, 1 << 16);
 +
 +  IteratorSetting iterConfig = new IteratorSetting(30, 
SlowIterator.class);
 +  SlowIterator.setSleepTime(iterConfig, 1000);
 +
 +  long t1 = System.currentTimeMillis();
 +  c.tableOperations().compact(tableName,
 +  new 
CompactionConfig().setWait(false).setIterators(java.util.Arrays.asList(iterConfig)));
 +  try {
 +// this compaction should fail because previous one set iterators
 +c.tableOperations().compact(tableName, new 
CompactionConfig().setWait(true));
 +if (System.currentTimeMillis() - t1 < 2000) {
 +  fail("Expected compaction to fail because another concurrent 
compaction set iterators");
 +}
 +  } catch (AccumuloException e) {}
 +}
 +  }
 +
 +  @Test
 +  public void testGetSelectedFilesForCompaction() throws Exception {
 +
 +// Tests CompactionConfigurer.InputParameters.getSelectedFiles()
 +
 +String tableName = this.getUniqueNames(1)[0];
 +// Disable GC so intermediate compaction files are not deleted
 +
getCluster().getClusterControl().stopAllServers(ServerType.GARBAGE_COLLECTOR);
 +
 +try (AccumuloClient client = 
Accumulo.newClient().from(getClientProps()).build()) {
 +  Map props = new HashMap<>();
 +  props.put(Property.TABLE_FILE_COMPRESSION_TYPE.getKey(), "none");
 +  // This is done to avoid system compactions - we want to do all the 
compactions ourselves
 +  props.put("table.compaction.dispatcher.opts.service.system", 
"nonexitant");
 +  NewTableConfiguration ntc = new 
NewTableConfiguration().setProperties(props);
 +  client.tableOperations().create(tableName, ntc);
 +
 +  // The following will create 4 small and 4 large 

(accumulo) 01/01: Merge branch '2.1'

2024-01-27 Thread cshannon
This is an automated email from the ASF dual-hosted git repository.

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

commit bce2ef2bfc8b3a80dee5cf3e7313fb99b23bb7d1
Merge: b85cafb61c 1531fe5d7e
Author: Christopher L. Shannon 
AuthorDate: Sat Jan 27 10:38:04 2024 -0500

Merge branch '2.1'

 .../security/delegation/AuthenticationTokenSecretManagerTest.java   | 6 ++
 1 file changed, 6 insertions(+)

diff --cc 
server/base/src/test/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManagerTest.java
index 8a7b6ea7bf,00d9e6cf03..7198e16883
--- 
a/server/base/src/test/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManagerTest.java
+++ 
b/server/base/src/test/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManagerTest.java
@@@ -207,9 -207,13 +207,15 @@@ public class AuthenticationTokenSecretM
  // The passwords line up against multiple calls with the same ID
  assertArrayEquals(password, secretManager.retrievePassword(id));
  
+ // Sleep 50 ms to make sure we generate another token for the test
+ // System.currentTimeMillis() is used as part of the token generation and 
if
+ // the test runs fast enough it can return the same value that was used
+ // when generating the first token and the test will fail
+ Thread.sleep(50);
+ 
  // Make a second token for the same user
 +// Briefly sleep to guarantee token is unique, since the token is based 
on the time
 +Thread.sleep(100);
  Entry,AuthenticationTokenIdentifier> 
pair2 =
  secretManager.generateToken(principal, cfg);
  Token token2 = pair2.getKey();



(accumulo) 01/01: Merge branch '2.1'

2024-01-26 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit b85cafb61c5d3036a40a8e0c9ca9da3f02302d5d
Merge: 97f9cf80cb 5401dedda0
Author: Keith Turner 
AuthorDate: Fri Jan 26 15:26:23 2024 -0500

Merge branch '2.1'

 .../accumulo/core/iterators/user/RowFilter.java|  7 +-
 .../core/iterators/user/RowFilterTest.java | 89 ++
 2 files changed, 95 insertions(+), 1 deletion(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
index a6849e448b,54d8b0978d..ac93ab1455
--- a/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
@@@ -19,6 -19,6 +19,7 @@@
  package org.apache.accumulo.core.iterators.user;
  
  import java.io.IOException;
++import java.io.UncheckedIOException;
  import java.util.Collection;
  import java.util.Map;
  
@@@ -155,10 -157,10 +158,12 @@@ public abstract class RowFilter extend
  RowFilter newInstance;
  try {
newInstance = getClass().getDeclaredConstructor().newInstance();
+   newInstance.init(getSource().deepCopy(env), options, env);
 -} catch (Exception e) {
 -  throw new RuntimeException(e);
 +} catch (ReflectiveOperationException e) {
 +  throw new IllegalStateException(e);
++} catch (IOException e) {
++  throw new UncheckedIOException(e);
  }
- newInstance.setSource(getSource().deepCopy(env));
  newInstance.decisionIterator = new RowIterator(getSource().deepCopy(env));
  return newInstance;
}



(accumulo) 01/01: Merge branch '2.1'

2024-01-23 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 5910742acacc41f199e3423597f077e236ee7eea
Merge: 731bbf75e7 ac2886c34e
Author: Christopher Tubbs 
AuthorDate: Tue Jan 23 17:36:00 2024 -0500

Merge branch '2.1'

 shell/src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)




(accumulo) 01/01: Merge branch '2.1'

2024-01-22 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 5922d90b95bcd611ed77515f4097af2473b0519b
Merge: bed5e3628d c0d548aae3
Author: Daniel Roberts 
AuthorDate: Mon Jan 22 16:44:42 2024 +

Merge branch '2.1'

 assemble/src/main/resources/LICENSE| 42 +++---
 .../accumulo/server/compaction/FileCompactor.java  | 16 +++--
 .../coordinator/CompactionCoordinator.java |  3 +-
 .../accumulo/coordinator/CompactionFinalizer.java  |  3 +-
 .../coordinator/DeadCompactionDetector.java|  4 +--
 .../org/apache/accumulo/compactor/Compactor.java   | 11 --
 .../accumulo/tserver/tablet/CompactableImpl.java   |  5 +--
 .../compaction/ExternalDoNothingCompactor.java |  5 ++-
 8 files changed, 55 insertions(+), 34 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2024-01-22 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit bed5e3628d9777d2e84587cced2fe9d9989accba
Merge: 9a5a24fec2 0071ee070f
Author: Daniel Roberts 
AuthorDate: Mon Jan 22 14:48:34 2024 +

Merge branch '2.1'

 assemble/conf/accumulo-env.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)




(accumulo) 01/01: Merge branch '2.1'

2024-01-08 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 2c4ffc28593978f30c51de3263c437ac6deaa8c4
Merge: 810d4b10e6 73107e263d
Author: Keith Turner 
AuthorDate: Mon Jan 8 11:35:42 2024 -0500

Merge branch '2.1'

 .../src/main/java/org/apache/accumulo/test/functional/CompactionIT.java | 2 ++
 1 file changed, 2 insertions(+)




(accumulo) 01/01: Merge branch '2.1'

2024-01-05 Thread domgarguilo
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

commit 810d4b10e6381aa2ea73ca46b2e59f4f6a7334de
Merge: 6dc1bcfa55 59b1c170a3
Author: Dom G 
AuthorDate: Fri Jan 5 11:15:28 2024 -0500

Merge branch '2.1'

 .../core/client/admin/NamespaceOperations.java | 18 +++---
 .../core/client/admin/TableOperations.java | 28 --
 .../accumulo/manager/FateServiceHandler.java   |  7 +++---
 .../tableOps/tableImport/FinishImportTable.java|  5 ++--
 .../manager/tableOps/tableImport/ImportTable.java  |  4 ++--
 .../tableOps/tableImport/ImportedTableInfo.java|  2 +-
 .../org/apache/accumulo/test/ImportExportIT.java   |  2 ++
 7 files changed, 35 insertions(+), 31 deletions(-)

diff --cc test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
index 923ed5d8ab,49f01c1b36..0e1242dcc1
--- a/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
@@@ -46,11 -45,10 +46,12 @@@ import org.apache.accumulo.core.client.
  import org.apache.accumulo.core.client.admin.ImportConfiguration;
  import org.apache.accumulo.core.data.Key;
  import org.apache.accumulo.core.data.Mutation;
 +import org.apache.accumulo.core.data.Range;
  import org.apache.accumulo.core.data.TableId;
  import org.apache.accumulo.core.data.Value;
+ import org.apache.accumulo.core.manager.state.tables.TableState;
  import org.apache.accumulo.core.metadata.MetadataTable;
 +import org.apache.accumulo.core.metadata.StoredTabletFile;
  import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
  import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
  import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily;



(accumulo) 01/01: Merge branch '2.1'

2024-01-04 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 6dc1bcfa559be2fe8cab1b8e28552b44f7008957
Merge: 5583129435 08628c016b
Author: Keith Turner 
AuthorDate: Thu Jan 4 19:55:52 2024 -0500

Merge branch '2.1'

 .../org/apache/accumulo/core/conf/Property.java|   8 +-
 .../spi/compaction/DefaultCompactionPlanner.java   | 106 ++-
 .../compaction/DefaultCompactionPlannerTest.java   | 194 -
 3 files changed, 300 insertions(+), 8 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
index 8f7969519a,aae0591567..eba25df062
--- 
a/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
@@@ -115,31 -105,26 +116,46 @@@ import edu.umd.cs.findbugs.annotations.
   *
   * Note that the use of 'external' requires that the CompactionCoordinator 
and at least one
   * Compactor for Queue1 is running.
 - * {@code tserver.compaction.major.service..opts.maxOpen} This 
determines the maximum
 - * number of files that will be included in a single compaction.
 + * {@code compaction.service..opts.maxOpen} This determines the 
maximum number of files
 + * that will be included in a single compaction.
 + * {@code compaction.service..opts.queues} This is a json array 
of queue objects which
 + * have the following fields:
 + * 
 + * Default Compaction Planner Queue options
 + * 
 + * Field Name
 + * Description
 + * 
 + * 
 + * name
 + * name or alias of the queue (required)
 + * 
 + * 
 + * maxSize
 + * threshold sum of the input files (required for all but one of the 
configs)
 + * 
 + * 
 + * 
 + * This 'queues' object is used for defining external compaction queues 
without needing to use the
 + * thread-based 'executors' property.
   * 
   *
+  * 
+  * Starting with Accumulo 2.1.3, this plugin will use the table config option
+  * {@code "table.file.max"}. When the following four conditions are met, then 
this plugin will try
+  * to find a lower compaction ratio that will result in a compaction:
+  * 
+  * When a tablet has no compactions running
+  * Its number of files exceeds table.file.max
+  * System compactions are not finding anything to compact
+  * No files are selected for user compaction
+  * 
+  * For example, given a tablet with 20 files, and table.file.max is 15 and no 
compactions are
+  * planned. If the compaction ratio is set to 3, then this plugin will find 
the largest compaction
+  * ratio less than 3 that results in a compaction.
+  *
+  *
 - * @since 2.1.0
 + * @since 3.1.0
   * @see org.apache.accumulo.core.spi.compaction
   */
  
@@@ -280,107 -226,118 +296,119 @@@ public class DefaultCompactionPlanner i
  determineMaxFilesToCompact(params);
}
  
 -  @SuppressWarnings("removal")
 +  @SuppressWarnings("deprecation")
private void determineMaxFilesToCompact(InitParameters params) {
 -String fqo = params.getFullyQualifiedOption("maxOpen");
 -if (!params.getServiceEnvironment().getConfiguration().isSet(fqo)
 -&& params.getServiceEnvironment().getConfiguration()
 -.isSet(Property.TSERV_MAJC_THREAD_MAXOPEN.getKey())) {
 -  log.warn("The property " + Property.TSERV_MAJC_THREAD_MAXOPEN.getKey()
 -  + " was set, it is deprecated.  Set the " + fqo + " option 
instead.");
 -  this.maxFilesToCompact = 
Integer.parseInt(params.getServiceEnvironment().getConfiguration()
 -  .get(Property.TSERV_MAJC_THREAD_MAXOPEN.getKey()));
 -} else {
 -  this.maxFilesToCompact = 
Integer.parseInt(params.getOptions().getOrDefault("maxOpen",
 -  
Property.TSERV_COMPACTION_SERVICE_DEFAULT_MAX_OPEN.getDefaultValue()));
 +
 +String maxOpen = params.getOptions().get("maxOpen");
 +if (maxOpen == null) {
 +  maxOpen = 
Property.TSERV_COMPACTION_SERVICE_DEFAULT_MAX_OPEN.getDefaultValue();
 +  log.trace("default maxOpen not set, defaulting to {}", maxOpen);
  }
 +this.maxFilesToCompact = Integer.parseInt(maxOpen);
}
  
 -  @Override
 -  public CompactionPlan makePlan(PlanningParameters params) {
 -try {
 +  private void validateConfig(JsonElement json, List fields, String 
className) {
  
 -  if (params.getCandidates().isEmpty()) {
 -return params.createPlanBuilder().build();
 -  }
 +JsonObject jsonObject = GSON.get().fromJson(json, JsonObject.class);
  
 -  Set filesCopy = new HashSet<>(params.getCandidates());
 +List objectProperties = new ArrayList<>(jsonObject.keySet());
 +HashSet classFieldNames = new HashSet<>(fields);
 +
 +if (!classFieldNames.containsAll(objectProperties)) {
 +  objectProperties.removeAll(classFieldNames);
 +  throw new JsonParseException(
 +  "Invalid fields: " + objectProperties + " provided for class: " + 

(accumulo) 01/01: Merge branch '2.1'

2024-01-03 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit dc2800691e3b4e269d8f86d6b9f99861c4d9257d
Merge: 3792630c86 319ec30b7f
Author: Daniel Roberts 
AuthorDate: Thu Jan 4 01:53:51 2024 +

Merge branch '2.1'

 .../apache/accumulo/test/functional/MergeIT.java   | 60 ++
 1 file changed, 60 insertions(+)

diff --cc test/src/main/java/org/apache/accumulo/test/functional/MergeIT.java
index 4d265a1120,43590e8030..af02e42f51
--- a/test/src/main/java/org/apache/accumulo/test/functional/MergeIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/MergeIT.java
@@@ -18,52 -18,46 +18,63 @@@
   */
  package org.apache.accumulo.test.functional;
  
 +import static java.nio.charset.StandardCharsets.UTF_8;
 +import static 
org.apache.accumulo.test.util.FileMetadataUtil.printAndVerifyFileMetadata;
 +import static 
org.apache.accumulo.test.util.FileMetadataUtil.verifyMergedMarkerCleared;
  import static org.junit.jupiter.api.Assertions.assertArrayEquals;
  import static org.junit.jupiter.api.Assertions.assertEquals;
+ import static org.junit.jupiter.api.Assertions.assertFalse;
  import static org.junit.jupiter.api.Assertions.assertTrue;
 +import static org.junit.jupiter.api.Assertions.fail;
  
  import java.time.Duration;
  import java.util.Arrays;
  import java.util.Collection;
  import java.util.HashSet;
  import java.util.List;
 +import java.util.Map;
  import java.util.Map.Entry;
+ import java.util.Set;
  import java.util.SortedSet;
  import java.util.TreeSet;
+ import java.util.UUID;
  
  import org.apache.accumulo.core.client.Accumulo;
  import org.apache.accumulo.core.client.AccumuloClient;
 +import org.apache.accumulo.core.client.AccumuloException;
  import org.apache.accumulo.core.client.BatchWriter;
  import org.apache.accumulo.core.client.Scanner;
 +import org.apache.accumulo.core.client.admin.CompactionConfig;
  import org.apache.accumulo.core.client.admin.NewTableConfiguration;
  import org.apache.accumulo.core.client.admin.TimeType;
 +import org.apache.accumulo.core.conf.Property;
  import org.apache.accumulo.core.data.Key;
  import org.apache.accumulo.core.data.Mutation;
 +import org.apache.accumulo.core.data.Range;
  import org.apache.accumulo.core.data.TableId;
  import org.apache.accumulo.core.data.Value;
+ import org.apache.accumulo.core.dataImpl.KeyExtent;
++import org.apache.accumulo.core.metadata.ReferencedTabletFile;
  import org.apache.accumulo.core.metadata.StoredTabletFile;
 -import org.apache.accumulo.core.metadata.TabletFile;
 +import org.apache.accumulo.core.metadata.schema.DataFileValue;
+ import org.apache.accumulo.core.metadata.schema.ExternalCompactionId;
+ import org.apache.accumulo.core.metadata.schema.ExternalCompactionMetadata;
  import org.apache.accumulo.core.security.Authorizations;
+ import org.apache.accumulo.core.spi.compaction.CompactionExecutorId;
+ import org.apache.accumulo.core.spi.compaction.CompactionKind;
 +import org.apache.accumulo.core.util.FastFormat;
  import org.apache.accumulo.core.util.Merge;
+ import org.apache.accumulo.core.util.compaction.CompactionExecutorIdImpl;
  import org.apache.accumulo.harness.AccumuloClusterHarness;
 +import org.apache.accumulo.test.TestIngest;
 +import org.apache.accumulo.test.TestIngest.IngestParams;
 +import org.apache.accumulo.test.VerifyIngest;
 +import org.apache.accumulo.test.VerifyIngest.VerifyParams;
+ import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.io.Text;
  import org.junit.jupiter.api.Test;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
  
  public class MergeIT extends AccumuloClusterHarness {
  
@@@ -568,4 -230,52 +579,53 @@@
}
  }
}
+ 
+   // Test that merge handles metadata from compactions
+   @Test
+   public void testCompactionMetadata() throws Exception {
+ try (AccumuloClient c = 
Accumulo.newClient().from(getClientProps()).build()) {
+   String tableName = getUniqueNames(1)[0];
+   c.tableOperations().create(tableName);
+ 
+   var split = new Text("m");
+   c.tableOperations().addSplits(tableName, new TreeSet<>(List.of(split)));
+ 
+   TableId tableId = getServerContext().getTableId(tableName);
+ 
+   // add metadata from compactions to tablets prior to merge
+   try (var tabletsMutator = 
getServerContext().getAmple().mutateTablets()) {
+ for (var extent : List.of(new KeyExtent(tableId, split, null),
+ new KeyExtent(tableId, null, split))) {
+   var tablet = tabletsMutator.mutateTablet(extent);
+   ExternalCompactionId ecid = 
ExternalCompactionId.generate(UUID.randomUUID());
+ 
 -  TabletFile tmpFile = new TabletFile(new 
Path("file:///accumulo/tables/t-0/b-0/c1.rf"));
++  ReferencedTabletFile tmpFile =
++  ReferencedTabletFile.of(new 
Path("file:///accumulo/tables/t-0/b-0/c1.rf"));
+   CompactionExecutorId 

(accumulo) 01/01: Merge branch '2.1'

2023-12-27 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 3792630c867b2affb4f16efc9f537a04ca66cf3e
Merge: b8869fb72e d973179452
Author: Daniel Roberts 
AuthorDate: Thu Dec 28 04:08:36 2023 +

Merge branch '2.1'

 .../accumulo/server/metadata/ServerAmpleImpl.java  | 18 ++
 .../accumulo/test/functional/GarbageCollectorIT.java   | 18 +++---
 2 files changed, 29 insertions(+), 7 deletions(-)

diff --cc 
server/base/src/main/java/org/apache/accumulo/server/metadata/ServerAmpleImpl.java
index 0e4fa2c478,ef02f22b4d..7aa6ecb6e1
--- 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/ServerAmpleImpl.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/ServerAmpleImpl.java
@@@ -227,13 -226,23 +227,23 @@@ public class ServerAmpleImpl extends Am
  }
  
  try (BatchWriter writer = context.createBatchWriter(level.metaTable())) {
-   for (GcCandidate candidate : candidates) {
- Mutation m = new 
Mutation(DeletesSection.encodeRow(candidate.getPath()));
- m.putDelete(EMPTY_TEXT, EMPTY_TEXT, candidate.getUid());
- writer.addMutation(m);
+   if (type == GcCandidateType.VALID) {
+ for (GcCandidate candidate : candidates) {
+   Mutation m = new 
Mutation(DeletesSection.encodeRow(candidate.getPath()));
+   // Removes all versions of the candidate to avoid reprocessing 
deleted file entries
+   m.putDelete(EMPTY_TEXT, EMPTY_TEXT);
+   writer.addMutation(m);
+ }
+   } else {
+ for (GcCandidate candidate : candidates) {
+   Mutation m = new 
Mutation(DeletesSection.encodeRow(candidate.getPath()));
+   // Removes this and older versions while allowing newer candidate 
versions to persist
+   m.putDelete(EMPTY_TEXT, EMPTY_TEXT, candidate.getUid());
+   writer.addMutation(m);
+ }
}
  } catch (MutationsRejectedException | TableNotFoundException e) {
 -  throw new RuntimeException(e);
 +  throw new IllegalStateException(e);
  }
}
  
diff --cc 
test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
index 82c657e1a5,1776bc4c03..01ca7b8f5d
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
@@@ -497,11 -510,10 +506,11 @@@ public class GarbageCollectorIT extend
  
  GcCandidate deleteCandidate = candidates.get(0);
  assertNotNull(deleteCandidate);
 -ample.putGcCandidates(tableId, List.of(new 
StoredTabletFile(deleteCandidate.getPath(;
 +ample.putGcCandidates(tableId,
 +List.of(StoredTabletFile.of(new Path(deleteCandidate.getPath();
  
  log.debug("Deleting Candidate {}", deleteCandidate);
- ample.deleteGcCandidates(datalevel, List.of(deleteCandidate), 
Ample.GcCandidateType.INUSE);
+ ample.deleteGcCandidates(datalevel, List.of(deleteCandidate), type);
  
  candidate = ample.getGcCandidates(datalevel);
  



(accumulo) 01/01: Merge branch '2.1'

2023-12-27 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit b8869fb72e2aa58736250c52f3366f196ac86c79
Merge: 829634653b fdd73fb8b2
Author: Daniel Roberts 
AuthorDate: Wed Dec 27 20:30:47 2023 +

Merge branch '2.1'

 .../spi/compaction/DefaultCompactionPlanner.java   |   6 +-
 .../compaction/CompactionPlannerInitParams.java|   2 +-
 .../compaction/DefaultCompactionPlannerTest.java   | 343 ++---
 3 files changed, 106 insertions(+), 245 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
index b73544143e,9385806831..8f7969519a
--- 
a/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
@@@ -279,106 -210,105 +280,107 @@@ public class DefaultCompactionPlanner i
  determineMaxFilesToCompact(params);
}
  
 -  @SuppressWarnings("removal")
++  @SuppressWarnings("deprecation")
private void determineMaxFilesToCompact(InitParameters params) {
 -String fqo = params.getFullyQualifiedOption("maxOpen");
 -if (!params.getServiceEnvironment().getConfiguration().isSet(fqo)
 -&& params.getServiceEnvironment().getConfiguration()
 -.isSet(Property.TSERV_MAJC_THREAD_MAXOPEN.getKey())) {
 -  log.warn("The property " + Property.TSERV_MAJC_THREAD_MAXOPEN.getKey()
 -  + " was set, it is deprecated.  Set the " + fqo + " option 
instead.");
 -  this.maxFilesToCompact = 
Integer.parseInt(params.getServiceEnvironment().getConfiguration()
 -  .get(Property.TSERV_MAJC_THREAD_MAXOPEN.getKey()));
 -} else {
 -  this.maxFilesToCompact = 
Integer.parseInt(params.getOptions().getOrDefault("maxOpen",
 -  
Property.TSERV_COMPACTION_SERVICE_DEFAULT_MAX_OPEN.getDefaultValue()));
 +
 +String maxOpen = params.getOptions().get("maxOpen");
 +if (maxOpen == null) {
-   maxOpen = "10";
-   log.trace("default maxOpen not set, defaulting to 10");
++  maxOpen = 
Property.TSERV_COMPACTION_SERVICE_DEFAULT_MAX_OPEN.getDefaultValue();
++  log.trace("default maxOpen not set, defaulting to {}", maxOpen);
  }
 +this.maxFilesToCompact = Integer.parseInt(maxOpen);
}
  
 -  @Override
 -  public CompactionPlan makePlan(PlanningParameters params) {
 -try {
 +  private void validateConfig(JsonElement json, List fields, String 
className) {
  
 -  if (params.getCandidates().isEmpty()) {
 -return params.createPlanBuilder().build();
 -  }
 +JsonObject jsonObject = GSON.get().fromJson(json, JsonObject.class);
 +
 +List objectProperties = new ArrayList<>(jsonObject.keySet());
 +HashSet classFieldNames = new HashSet<>(fields);
 +
 +if (!classFieldNames.containsAll(objectProperties)) {
 +  objectProperties.removeAll(classFieldNames);
 +  throw new JsonParseException(
 +  "Invalid fields: " + objectProperties + " provided for class: " + 
className);
 +}
 +  }
  
 -  Set filesCopy = new HashSet<>(params.getCandidates());
 +  @Override
 +  public CompactionPlan makePlan(PlanningParameters params) {
 +if (params.getCandidates().isEmpty()) {
 +  return params.createPlanBuilder().build();
 +}
  
 -  long maxSizeToCompact = getMaxSizeToCompact(params.getKind());
 +Set filesCopy = new HashSet<>(params.getCandidates());
  
 -  Collection group;
 -  if (params.getRunningCompactions().isEmpty()) {
 -group = findDataFilesToCompact(filesCopy, params.getRatio(), 
maxFilesToCompact,
 -maxSizeToCompact);
 +long maxSizeToCompact = getMaxSizeToCompact(params.getKind());
  
 -if (!group.isEmpty() && group.size() < params.getCandidates().size()
 -&& params.getCandidates().size() <= maxFilesToCompact
 -&& (params.getKind() == CompactionKind.USER
 -|| params.getKind() == CompactionKind.SELECTOR)) {
 -  // USER and SELECTOR compactions must eventually compact all files. 
When a subset of files
 -  // that meets the compaction ratio is selected, look ahead and see 
if the next compaction
 -  // would also meet the compaction ratio. If not then compact 
everything to avoid doing
 -  // more than logarithmic work across multiple comapctions.
 +Collection group;
 +if (params.getRunningCompactions().isEmpty()) {
 +  group =
 +  findDataFilesToCompact(filesCopy, params.getRatio(), 
maxFilesToCompact, maxSizeToCompact);
  
 -  filesCopy.removeAll(group);
 -  filesCopy.add(getExpected(group, 0));
 +  if (!group.isEmpty() && group.size() < params.getCandidates().size()
 +  && params.getCandidates().size() <= maxFilesToCompact
 +  && (params.getKind() == CompactionKind.USER
 +  || params.getKind() == 

(accumulo) 01/01: Merge branch '2.1'

2023-12-21 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit a6f22a32cedc4a50d75825813c1eef9ad9a0b0a2
Merge: 37117b2cb5 c7df850d83
Author: Christopher Tubbs 
AuthorDate: Thu Dec 21 02:13:19 2023 -0500

Merge branch '2.1'

 .github/ISSUE_TEMPLATE/post_vote_checklist.md  |  5 +-
 .github/workflows/maven-full-its.yaml  | 18 ++--
 .github/workflows/maven-on-demand.yaml |  8 +-
 .github/workflows/maven.yaml   | 21 +++--
 .github/workflows/scripts.yaml |  6 +-
 assemble/pom.xml   |  5 --
 core/pom.xml   |  4 -
 .../org/apache/accumulo/core/trace/TraceUtil.java  |  8 +-
 pom.xml| 99 --
 .../accumulo/server/util/RestoreZookeeper.java |  7 +-
 server/monitor/pom.xml |  6 ++
 11 files changed, 78 insertions(+), 109 deletions(-)

diff --cc pom.xml
index e49fd960d5,b982196bff..798c876af1
--- a/pom.xml
+++ b/pom.xml
@@@ -133,10 -134,9 +133,9 @@@
  
true
  
  
.+-SNAPSHOT,(?i).*(alpha|beta)[0-9.-]*,(?i).*[.-](m|rc)[0-9]+
- 11
- 3.6.0
+ 17
  
 -
2023-08-14T08:01:47Z
 +
2023-08-14T08:11:10Z
  true
  
source-release-tar
  
@@@ -151,11 -151,11 +150,10 @@@
  5.5.0
  2.23.0
  3.3.6
- 3.6.0
- 1.27.0
- 2.0.7
+ 1.33.0
 -2.0.9
+ 2.0.9
  0.17.0
- 3.8.3
+ 3.9.1


  
@@@ -295,8 -288,13 +286,8 @@@

  com.google.guava
  guava
- 32.0.1-jre
+ 33.0.0-jre

 -  
 -com.google.protobuf
 -protobuf-java
 -3.22.0
 -  

  com.lmax
  disruptor
@@@ -945,6 -985,10 +931,8 @@@
  org.apache.logging.log4j:log4j-1.2-api:jar:*
  
org.apache.logging.log4j:log4j-slf4j2-impl:jar:*
  org.apache.logging.log4j:log4j-web:jar:*
+ 
+ biz.aQute.bnd:biz.aQute.bnd.annotation:jar:*
 -
 -org.junit.vintage:junit-vintage-engine:jar:*
  org.junit.jupiter:junit-jupiter-engine:jar:*

  



(accumulo) 01/01: Merge branch '2.1'

2023-12-20 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 170f1b684bf31e36525447146b6a576b36bdeea8
Merge: f9897862dd 69381b494d
Author: Keith Turner 
AuthorDate: Wed Dec 20 16:49:02 2023 -0500

Merge branch '2.1'

 .../core/spi/compaction/DefaultCompactionPlanner.java   | 13 +
 .../accumulo/tserver/compactions/CompactionService.java |  9 +
 2 files changed, 14 insertions(+), 8 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2023-12-18 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 436a6835de165715c930f9d6cebe1cad76d9d578
Merge: 3061ff028d 8dfb4eb713
Author: Christopher Tubbs 
AuthorDate: Mon Dec 18 19:02:37 2023 -0500

Merge branch '2.1'

 core/pom.xml  | 4 ++--
 .../java/org/apache/accumulo/core/conf/ClientConfigGenerate.java  | 8 
 .../java/org/apache/accumulo/core/conf/ConfigurationDocGen.java   | 4 ++--
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --cc core/pom.xml
index e1a83b0228,7869dddb38..2ba4af4861
--- a/core/pom.xml
+++ b/core/pom.xml
@@@ -355,7 -355,7 +355,7 @@@
test

  --generate-markdown
--
${project.build.directory}/generated-docs/server-properties.md
++
${project.build.directory}/generated-docs/server-properties3.md

  

@@@ -370,7 -370,7 +370,7 @@@
test

  --generate-markdown
--
${project.build.directory}/generated-docs/client-properties.md
++
${project.build.directory}/generated-docs/client-properties3.md

  

diff --cc 
core/src/main/java/org/apache/accumulo/core/conf/ClientConfigGenerate.java
index d4d01d0786,0cd21758b1..f95688a4ed
--- a/core/src/main/java/org/apache/accumulo/core/conf/ClientConfigGenerate.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/ClientConfigGenerate.java
@@@ -29,8 -29,8 +29,8 @@@ import java.util.TreeMap
  import com.google.common.collect.Sets;
  
  /**
-- * Generates client-properties.md for documentation on Accumulo website and
-- * accumulo-client.properties for Accumulo distribution tarball
++ * Generates client properties documentation on Accumulo website and 
accumulo-client.properties for
++ * Accumulo distribution tarball
   */
  public class ClientConfigGenerate {
  
@@@ -86,9 -86,9 +86,9 @@@
  @Override
  void pageHeader() {
doc.println("---");
-   doc.println("title: Client Properties");
 -  doc.println("title: Client Properties (2.x)");
++  doc.println("title: Client Properties (3.x)");
doc.println("category: configuration");
--  doc.println("order: 3");
++  doc.println("order: 4");
doc.println("---\n");
doc.println("");
diff --cc 
core/src/main/java/org/apache/accumulo/core/conf/ConfigurationDocGen.java
index 163b150eab,51a6e24732..dc5320e93e
--- a/core/src/main/java/org/apache/accumulo/core/conf/ConfigurationDocGen.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/ConfigurationDocGen.java
@@@ -62,9 -62,9 +62,9 @@@ public class ConfigurationDocGen 
  
void pageHeader() {
  doc.println("---");
- doc.println("title: Server Properties");
 -doc.println("title: Server Properties (2.x)");
++doc.println("title: Server Properties (3.x)");
  doc.println("category: configuration");
- doc.println("order: 4");
 -doc.println("order: 5");
++doc.println("order: 6");
  doc.println("---\n");
  doc.println("\n");



(accumulo) 01/01: Merge branch '2.1'

2023-12-13 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 593711095aba3847aa5e1b773a5cdcde0c4bacfc
Merge: 4d38127e5a 5b46bd8f97
Author: Daniel Roberts 
AuthorDate: Wed Dec 13 19:58:32 2023 +

Merge branch '2.1'

 .../org/apache/accumulo/test/fate/zookeeper/FateIT.java | 13 ++---
 1 file changed, 10 insertions(+), 3 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2023-12-13 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 4d38127e5a3f10e404e90323c49cf146f4c70007
Merge: 1aa81d81b0 e62ff01808
Author: Daniel Roberts 
AuthorDate: Wed Dec 13 18:34:15 2023 +

Merge branch '2.1'

 .../org/apache/accumulo/tserver/tablet/Tablet.java | 45 ++
 1 file changed, 30 insertions(+), 15 deletions(-)

diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index 7c741729df,6a646c4f57..65db951634
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@@ -1733,17 -1750,40 +1733,40 @@@ public class Tablet extends TabletBase 
  throw new IOException("tablet " + extent + " is closed");
}
  
-   // TODO check seems unneeded now - ACCUMULO-1291
-   long lockWait = System.currentTimeMillis() - now;
-   if (lockWait
-   > 
getTabletServer().getConfiguration().getTimeInMillis(Property.GENERAL_RPC_TIMEOUT))
 {
- throw new IOException(
- "Timeout waiting " + (lockWait / 1000.) + " seconds to get tablet 
lock for " + extent);
+   long rpcTimeoutNanos = TimeUnit.MILLISECONDS.toNanos(
+   (long) 
(getTabletServer().getConfiguration().getTimeInMillis(Property.GENERAL_RPC_TIMEOUT)
+   * 1.1));
+ 
+   // wait for any files that are bulk importing up to the RPC timeout 
limit
+   while (!Collections.disjoint(bulkImporting, fileMap.keySet())) {
+ try {
+   wait(1_000);
+ } catch (InterruptedException e) {
+   Thread.currentThread().interrupt();
+   throw new IllegalStateException(e);
+ }
+ 
+ long lockWait = System.nanoTime() - now;
+ if (lockWait > rpcTimeoutNanos) {
+   throw new IOException("Timeout waiting " + 
TimeUnit.NANOSECONDS.toSeconds(lockWait)
+   + " seconds to get tablet lock for " + extent + " " + tid);
+ }
+   }
+ 
+   // need to check this again because when wait is called above the lock 
is released.
+   if (isClosed()) {
+ throw new IOException("tablet " + extent + " is closed");
+   }
+ 
+   long lockWait = System.nanoTime() - now;
+   if (lockWait > rpcTimeoutNanos) {
+ throw new IOException("Timeout waiting " + 
TimeUnit.NANOSECONDS.toSeconds(lockWait)
+ + " seconds to get tablet lock for " + extent + " " + tid);
}
  
 -  List alreadyImported = bulkImported.get(tid);
 +  List alreadyImported = bulkImported.get(tid);
if (alreadyImported != null) {
 -for (TabletFile entry : alreadyImported) {
 +for (ReferencedTabletFile entry : alreadyImported) {
if (fileMap.remove(entry) != null) {
  log.trace("Ignoring import of bulk file already imported: {}", 
entry);
}



(accumulo) 01/01: Merge branch '2.1'

2023-12-13 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 1aa81d81b0ff0da4dcd9ed4e33e599d701297c01
Merge: 6cfa1b2ea7 01f48adf38
Author: Daniel Roberts 
AuthorDate: Wed Dec 13 15:35:48 2023 +

Merge branch '2.1'

 .../core/client/MutationsRejectedException.java| 11 ++-
 .../server/constraints/MetadataConstraints.java| 20 +
 .../constraints/MetadataConstraintsTest.java   | 94 --
 3 files changed, 24 insertions(+), 101 deletions(-)

diff --cc 
server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
index aa9772a159,ced97d0a68..617bf20e86
--- 
a/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
@@@ -390,9 -327,7 +374,9 @@@ public class MetadataConstraints implem
case 7:
  return "Lock not held in zookeeper by writer";
case 8:
- return "Bulk load transaction no longer running";
+ return "Bulk load mutation contains either inconsistent files or 
multiple fateTX ids";
 +  case 9:
 +return "Invalid data file metadata format";
  }
  return null;
}
diff --cc 
server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java
index 38f6d27ad2,bd59fef1e7..135a2bce60
--- 
a/server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java
+++ 
b/server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java
@@@ -40,8 -33,6 +40,7 @@@ import org.apache.accumulo.core.metadat
  import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily;
  import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.TabletColumnFamily;
  import org.apache.accumulo.server.ServerContext;
- import org.apache.accumulo.server.zookeeper.TransactionWatcher.Arbitrator;
 +import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.io.Text;
  import org.easymock.EasyMock;
  import org.junit.jupiter.api.Test;
@@@ -158,376 -128,77 +136,332 @@@ public class MetadataConstraintsTest 
  Mutation m;
  List violations;
  
- // inactive txid
- m = new Mutation(new Text("0;foo"));
- m.put(
- BulkFileColumnFamily.NAME, StoredTabletFile
- .of(new 
Path("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/someFile")).getMetadataText(),
- new Value("12345"));
- m.put(
- DataFileColumnFamily.NAME, StoredTabletFile
- .of(new 
Path("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/someFile")).getMetadataText(),
- new DataFileValue(1, 1).encodeAsValue());
- assertViolation(mc, m, (short) 8);
- 
- // txid that throws exception
- m = new Mutation(new Text("0;foo"));
- m.put(
- BulkFileColumnFamily.NAME, StoredTabletFile
- .of(new 
Path("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/someFile")).getMetadataText(),
- new Value("9"));
- m.put(
- DataFileColumnFamily.NAME, StoredTabletFile
- .of(new 
Path("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/someFile")).getMetadataText(),
- new DataFileValue(1, 1).encodeAsValue());
- assertViolation(mc, m, (short) 8);
- 
- // active txid w/ file
+ // loaded marker w/ file
  m = new Mutation(new Text("0;foo"));
 -m.put(BulkFileColumnFamily.NAME, new Text("/someFile"), new Value("5"));
 -m.put(DataFileColumnFamily.NAME, new Text("/someFile"),
 +m.put(
 +BulkFileColumnFamily.NAME, StoredTabletFile
 +.of(new 
Path("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/someFile")).getMetadataText(),
 +new Value("5"));
 +m.put(
 +DataFileColumnFamily.NAME, StoredTabletFile
 +.of(new 
Path("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/someFile")).getMetadataText(),
  new DataFileValue(1, 1).encodeAsValue());
  violations = mc.check(createEnv(), m);
  assertNull(violations);
  
- // active txid w/o file
+ // loaded marker w/o file
  m = new Mutation(new Text("0;foo"));
 -m.put(BulkFileColumnFamily.NAME, new Text("/someFile"), new Value("5"));
 -violations = mc.check(createEnv(), m);
 -assertNotNull(violations);
 -assertEquals(1, violations.size());
 -assertEquals(Short.valueOf((short) 8), violations.get(0));
 +m.put(
 +BulkFileColumnFamily.NAME, StoredTabletFile
 +.of(new 
Path("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/someFile")).getMetadataText(),
 +new Value("5"));
 +assertViolation(mc, m, (short) 8);
  
- // two active txids w/ files
+ // two files w/ same txid
  m = new Mutation(new Text("0;foo"));
 -m.put(BulkFileColumnFamily.NAME, new Text("/someFile"), new Value("5"));
 -m.put(DataFileColumnFamily.NAME, new 

(accumulo) 01/01: Merge branch '2.1'

2023-12-02 Thread cshannon
This is an automated email from the ASF dual-hosted git repository.

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

commit b498c9797626b8d8eb9cdb9bbba246973463aafb
Merge: c650408d05 f8cb312032
Author: Christopher L. Shannon (cshannon) 
AuthorDate: Sat Dec 2 09:52:34 2023 -0500

Merge branch '2.1'

 .../accumulo/manager/TabletGroupWatcher.java   | 71 ++
 1 file changed, 45 insertions(+), 26 deletions(-)

diff --cc 
server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
index c4e29eaf69,8171aa..068bb4930b
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
@@@ -615,131 -669,10 +613,130 @@@ abstract class TabletGroupWatcher exten
  }
}
  
 +  // Remove the merged marker from the last tablet in the merge range
 +  private void clearMerged(MergeInfo mergeInfo, BatchWriter bw, HighTablet 
highTablet)
 +  throws AccumuloException {
 +Manager.log.debug("Clearing MERGED marker for {}", mergeInfo.getExtent());
 +var m = new Mutation(highTablet.getExtent().toMetaRow());
 +MergedColumnFamily.MERGED_COLUMN.putDelete(m);
 +bw.addMutation(m);
 +bw.flush();
 +  }
 +
 +  // This method finds returns the deletion starting row (exclusive) for 
tablets that
 +  // need to be actually deleted. If the startTablet is null then
 +  // the deletion start row will just be null as all tablets are being deleted
 +  // up to the end. Otherwise, this returns the endRow of the first tablet
 +  // as the first tablet should be kept and will have been previously
 +  // fenced if necessary
 +  private Text getDeletionStartRow(final KeyExtent startTablet) {
 +if (startTablet == null) {
 +  Manager.log.debug("First tablet for delete range is null");
 +  return null;
 +}
 +
 +final Text deletionStartRow = startTablet.endRow();
 +Manager.log.debug("Start row is {} for deletion", deletionStartRow);
 +
 +return deletionStartRow;
 +  }
 +
 +  // This method finds returns the deletion ending row (inclusive) for 
tablets that
 +  // need to be actually deleted. If the endTablet is null then
 +  // the deletion end row will just be null as all tablets are being deleted
 +  // after the start row. Otherwise, this returns the prevEndRow of the last 
tablet
 +  // as the last tablet should be kept and will have been previously
 +  // fenced if necessary
 +  private Text getDeletionEndRow(final KeyExtent endTablet) {
 +if (endTablet == null) {
 +  Manager.log.debug("Last tablet for delete range is null");
 +  return null;
 +}
 +
 +Text deletionEndRow = endTablet.prevEndRow();
 +Manager.log.debug("Deletion end row is {}", deletionEndRow);
 +
 +return deletionEndRow;
 +  }
 +
 +  private static boolean isFirstTabletInTable(KeyExtent tablet) {
 +return tablet != null && tablet.prevEndRow() == null;
 +  }
 +
 +  private static boolean isLastTabletInTable(KeyExtent tablet) {
 +return tablet != null && tablet.endRow() == null;
 +  }
 +
 +  private static boolean areContiguousTablets(KeyExtent firstTablet, 
KeyExtent lastTablet) {
 +return firstTablet != null && lastTablet != null
 +&& Objects.equals(firstTablet.endRow(), lastTablet.prevEndRow());
 +  }
 +
 +  private boolean hasTabletsToDelete(final KeyExtent firstTabletInRange,
 +  final KeyExtent lastTableInRange) {
 +// If the tablets are equal (and not null) then the deletion range is 
just part of 1 tablet
 +// which will be fenced so there are no tablets to delete. The null check 
is because if both
 +// are null then we are just deleting everything, so we do have tablets 
to delete
 +if (Objects.equals(firstTabletInRange, lastTableInRange) && 
firstTabletInRange != null) {
 +  Manager.log.trace(
 +  "No tablets to delete, firstTablet {} equals lastTablet {} in 
deletion range and was fenced.",
 +  firstTabletInRange, lastTableInRange);
 +  return false;
 +  // If the lastTablet of the deletion range is the first tablet of the 
table it has been fenced
 +  // already so nothing to actually delete before it
 +} else if (isFirstTabletInTable(lastTableInRange)) {
 +  Manager.log.trace(
 +  "No tablets to delete, lastTablet {} in deletion range is the first 
tablet of the table and was fenced.",
 +  lastTableInRange);
 +  return false;
 +  // If the firstTablet of the deletion range is the last tablet of the 
table it has been fenced
 +  // already so nothing to actually delete after it
 +} else if (isLastTabletInTable(firstTabletInRange)) {
 +  Manager.log.trace(
 +  "No tablets to delete, firstTablet {} in deletion range is the last 
tablet of the table and was fenced.",
 +  firstTabletInRange);
 +  return false;
 +  // If the firstTablet and 

(accumulo) 01/01: Merge branch '2.1'

2023-11-30 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 6abb607d12216fd38057df66154df02bdb854f0c
Merge: a03d364632 751a110efe
Author: Keith Turner 
AuthorDate: Thu Nov 30 16:19:24 2023 -0500

Merge branch '2.1'

 .../org/apache/accumulo/tserver/tablet/Tablet.java |  10 +-
 .../apache/accumulo/test/functional/BulkNewIT.java | 147 +
 2 files changed, 152 insertions(+), 5 deletions(-)

diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index fc373ae30c,3f7eebe95f..1b6ba2f3cf
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@@ -1770,9 -1787,14 +1770,14 @@@ public class Tablet extends TabletBase 
  try {
tabletServer.updateBulkImportState(files, BulkImportState.LOADING);
  
 -  var storedTabletFile = getDatafileManager().importMapFiles(tid, 
entries, setTime);
 -  lastMapFileImportTime = System.currentTimeMillis();
 +  getDatafileManager().importDataFiles(tid, entries, setTime);
 +  lastDataFileImportTime = System.currentTimeMillis();
  
+   synchronized (this) {
+ // only mark the bulk import a success if no exception was thrown
+ bulkImported.computeIfAbsent(tid, k -> new 
ArrayList<>()).addAll(fileMap.keySet());
+   }
+ 
if (isSplitPossible()) {
  getTabletServer().executeSplit(this);
} else {
diff --cc test/src/main/java/org/apache/accumulo/test/functional/BulkNewIT.java
index 5280d279dc,a8aebd2e25..6a0448749c
--- a/test/src/main/java/org/apache/accumulo/test/functional/BulkNewIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/BulkNewIT.java
@@@ -61,7 -71,9 +71,10 @@@ import org.apache.accumulo.core.data.co
  import org.apache.accumulo.core.file.FileOperations;
  import org.apache.accumulo.core.file.FileSKVWriter;
  import org.apache.accumulo.core.file.rfile.RFile;
+ import org.apache.accumulo.core.metadata.MetadataTable;
+ import org.apache.accumulo.core.metadata.StoredTabletFile;
 +import org.apache.accumulo.core.metadata.UnreferencedTabletFile;
+ import org.apache.accumulo.core.metadata.schema.MetadataSchema;
  import org.apache.accumulo.core.metadata.schema.TabletMetadata;
  import org.apache.accumulo.core.metadata.schema.TabletsMetadata;
  import org.apache.accumulo.core.security.Authorizations;



(accumulo) 01/01: Merge branch '2.1'

2023-11-30 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit a03d36463257f1a911812f76015b22da2f33110a
Merge: a47ee0b77d e34f7fe1ce
Author: Dave Marion 
AuthorDate: Thu Nov 30 18:11:37 2023 +

Merge branch '2.1'

 .../org/apache/accumulo/core/metrics/MetricsUtil.java| 16 +---
 .../accumulo/coordinator/CompactionCoordinator.java  |  2 +-
 .../java/org/apache/accumulo/compactor/Compactor.java|  2 +-
 .../org/apache/accumulo/gc/SimpleGarbageCollector.java   |  3 ++-
 .../main/java/org/apache/accumulo/manager/Manager.java   |  2 +-
 .../java/org/apache/accumulo/tserver/ScanServer.java |  2 +-
 .../java/org/apache/accumulo/tserver/TabletServer.java   |  4 ++--
 .../java/org/apache/accumulo/test/metrics/MetricsIT.java |  2 ++
 8 files changed, 19 insertions(+), 14 deletions(-)

diff --cc 
server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java
index ef84295540,88df289a56..cb7c4731bb
--- 
a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java
+++ 
b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java
@@@ -266,8 -268,7 +266,8 @@@ public class CompactionCoordinator exte
  
  try {
MetricsUtil.initializeMetrics(getContext().getConfiguration(), 
this.applicationName,
-   clientAddress);
+   clientAddress, getContext().getInstanceName());
 +  MetricsUtil.initializeProducers(this);
  } catch (ClassNotFoundException | InstantiationException | 
IllegalAccessException
  | IllegalArgumentException | InvocationTargetException | 
NoSuchMethodException
  | SecurityException e1) {
diff --cc 
server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
index fc7d6a0234,9662757d3d..682437d298
--- 
a/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
+++ 
b/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
@@@ -608,9 -616,7 +608,9 @@@ public class Compactor extends Abstract
  
  try {
MetricsUtil.initializeMetrics(getContext().getConfiguration(), 
this.applicationName,
-   clientAddress);
+   clientAddress, getContext().getInstanceName());
 +  pausedMetrics = new PausedCompactionMetrics();
 +  MetricsUtil.initializeProducers(this, pausedMetrics);
  } catch (ClassNotFoundException | InstantiationException | 
IllegalAccessException
  | IllegalArgumentException | InvocationTargetException | 
NoSuchMethodException
  | SecurityException e1) {
diff --cc 
server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
index 01198752d7,0c22c4b50a..7152016d73
--- a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
+++ b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
@@@ -157,8 -168,9 +157,9 @@@ public class SimpleGarbageCollector ext
  }
  
  try {
-   MetricsUtil.initializeMetrics(getContext().getConfiguration(), 
this.applicationName, address);
+   MetricsUtil.initializeMetrics(getContext().getConfiguration(), 
this.applicationName, address,
+   getContext().getInstanceName());
 -  MetricsUtil.initializeProducers(new GcMetrics(this));
 +  MetricsUtil.initializeProducers(this, new GcMetrics(this));
  } catch (ClassNotFoundException | InstantiationException | 
IllegalAccessException
  | IllegalArgumentException | InvocationTargetException | 
NoSuchMethodException
  | SecurityException e1) {
diff --cc server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
index b75c8601c4,9d71e542f9..7d3806840f
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
@@@ -1103,9 -1099,8 +1103,9 @@@ public class Manager extends AbstractSe
  
  try {
MetricsUtil.initializeMetrics(getContext().getConfiguration(), 
this.applicationName,
-   sa.getAddress());
+   sa.getAddress(), getContext().getInstanceName());
 -  ManagerMetrics.init(getConfiguration(), this);
 +  ManagerMetrics mm = new ManagerMetrics(getConfiguration(), this);
 +  MetricsUtil.initializeProducers(this, mm);
  } catch (ClassNotFoundException | InstantiationException | 
IllegalAccessException
  | IllegalArgumentException | InvocationTargetException | 
NoSuchMethodException
  | SecurityException e1) {
diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
index 8868065aa4,a34c2b1adc..fe227959f7
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
@@@ -370,9 -372,7 +370,9 @@@ public class ScanServer extends Abstrac
 

(accumulo) 01/01: Merge branch '2.1'

2023-11-27 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 3e07ea58c6a56177c1dc1e67027115db29e87d45
Merge: 764f55e0c8 914f73630d
Author: Keith Turner 
AuthorDate: Mon Nov 27 17:35:48 2023 -0500

Merge branch '2.1'




(accumulo) 01/01: Merge branch '2.1'

2023-11-21 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit df362efeee3113d3e3c23ff6f6778f394a588363
Merge: 19bee3da4e 6921f79083
Author: Christopher Tubbs 
AuthorDate: Tue Nov 21 15:39:19 2023 -0500

Merge branch '2.1'

 pom.xml | 10 +++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --cc pom.xml
index 7902225114,27eac387ab..0b772f5130
--- a/pom.xml
+++ b/pom.xml
@@@ -149,10 -150,10 +149,10 @@@
  1.1.1
  1.76
  5.5.0
- 2.20.0
+ 2.23.0
  3.3.6
 +3.6.0
  1.27.0
 -2.0.9
  2.0.7
  0.17.0
  3.8.3



(accumulo) 01/01: Merge branch '2.1'

2023-11-21 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 19bee3da4ed15f147ad4de9ed46d93d633507075
Merge: 2d2a0190b9 6829e02d7f
Author: Christopher Tubbs 
AuthorDate: Tue Nov 21 13:32:59 2023 -0500

Merge branch '2.1'

 shell/src/main/java/org/apache/accumulo/shell/commands/GrepCommand.java | 2 +-
 shell/src/main/java/org/apache/accumulo/shell/commands/ScanCommand.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)




(accumulo) 01/01: Merge branch '2.1'

2023-11-20 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 90821b115c90564004eb62625dab06864d4913be
Merge: b8089dd528 af53242538
Author: Keith Turner 
AuthorDate: Mon Nov 20 21:13:32 2023 -0500

Merge branch '2.1'

 .../accumulo/core/metrics/MetricsProducer.java | 150 ++---
 .../accumulo/tserver/tablet/CompactableImpl.java   |  11 +-
 .../tablet/CompactableImplFileManagerTest.java |  34 +
 3 files changed, 117 insertions(+), 78 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
index a2aa7d6a9a,1a8d618ce4..7aea9a7a6c
--- a/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
+++ b/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
@@@ -47,14 -47,7 +47,14 @@@ import io.micrometer.core.instrument.Me
   * 
   * N/A
   * N/A
-  * {@link #METRICS_LOW_MEMORY}
++ * {@value #METRICS_LOW_MEMORY}
 + * Guage
 + * reports 1 when process memory usage is above threshold, 0 when memory 
is okay
 + * 
 + * 
 + * N/A
 + * N/A
-  * {@link #METRICS_COMPACTOR_MAJC_STUCK}
+  * {@value #METRICS_COMPACTOR_MAJC_STUCK}
   * LongTaskTimer
   * 
   * 
@@@ -431,20 -424,6 +431,20 @@@
   * Counter
   * 
   * 
 + * 
 + * N/A
 + * N/A
-  * {@link #METRICS_SCAN_PAUSED_FOR_MEM}
++ * {@value #METRICS_SCAN_PAUSED_FOR_MEM}
 + * Counter
 + * 
 + * 
 + * 
 + * N/A
 + * N/A
-  * {@link #METRICS_SCAN_RETURN_FOR_MEM}
++ * {@value #METRICS_SCAN_RETURN_FOR_MEM}
 + * Counter
 + * 
 + * 
   * 
   * 
   * {i|e}_{compactionServiceName}_{executor_name}_queued
@@@ -484,11 -456,40 +484,11 @@@
   * Timer
   * 
   * 
 - * 
   * 
 - * ReplicationQueue
 - * Stat
 - * {@value #METRICS_REPLICATION_QUEUE}
 - * Timer
 - * 
 - * 
 - * 
 - * ReplicationQueue10m
 - * Quantiles
 - * N/A
 - * N/A
 - * 
 - * 
 - * 
 - * filesPendingReplication
 - * Stat
 - * {@value #METRICS_REPLICATION_PENDING_FILES}
 - * Gauge
   * 
 - * 
 - * 
 - * maxReplicationThreads
 - * Stat
 - * {@value #METRICS_REPLICATION_THREADS}
 - * Gauge
   * 
-  * {@link #METRICS_MINC_PAUSED}
 - * 
 - * 
 - * numPeers
 - * Stat
 - * {@value #METRICS_REPLICATION_PEERS}
 - * Gauge
++ * {@value #METRICS_MINC_PAUSED}
 + * Counter
   * 
   * 
   * 
diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
index 8fe91dab5b,11722c100f..ce91f5d3ac
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
@@@ -872,11 -1081,10 +878,10 @@@ public class CompactableImpl implement
  }
}
  }
- 
}
  
 -  static Collection asFileNames(Set files) {
 -return Collections2.transform(files, StoredTabletFile::getFileName);
 +  static Collection asMinimalString(Set files) {
 +return Collections2.transform(files, StoredTabletFile::toMinimalString);
}
  
@Override



(accumulo) 01/01: Merge branch '2.1'

2023-11-14 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 0e8dc7ab8495b0e34889f4a450fdf027a5f79bc4
Merge: 8f9636b268 db98f7d988
Author: Christopher Tubbs 
AuthorDate: Tue Nov 14 11:34:48 2023 -0500

Merge branch '2.1'

 .../org/apache/accumulo/shell/commands/GrepCommand.java  | 16 ++--
 .../org/apache/accumulo/shell/commands/ScanCommand.java  | 10 +-
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --cc 
shell/src/main/java/org/apache/accumulo/shell/commands/GrepCommand.java
index a5975d6e54,90c4a6fb44..2579fb4b01
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/GrepCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/GrepCommand.java
@@@ -49,7 -49,24 +49,21 @@@ public class GrepCommand extends ScanCo
if (cl.getArgList().isEmpty()) {
  throw new MissingArgumentException("No terms specified");
}
+   // Configure formatting options
+   final FormatterConfig config = new FormatterConfig();
+   config.setPrintTimestamps(cl.hasOption(timestampOpt.getOpt()));
+   if (cl.hasOption(showFewOpt.getOpt())) {
+ final String showLength = cl.getOptionValue(showFewOpt.getOpt());
+ try {
+   final int length = Integer.parseInt(showLength);
+   config.setShownLength(length);
+ } catch (NumberFormatException nfe) {
+   Shell.log.error("Arg must be an integer.", nfe);
+ } catch (IllegalArgumentException iae) {
+   Shell.log.error("Arg must be greater than one.", iae);
+ }
+   }
final Class formatter = getFormatter(cl, 
tableName, shellState);
 -  @SuppressWarnings("deprecation")
 -  final org.apache.accumulo.core.util.interpret.ScanInterpreter 
interpeter =
 -  getInterpreter(cl, tableName, shellState);
  
// handle first argument, if present, the authorizations list to
// scan with
@@@ -81,11 -98,9 +95,9 @@@
}
try {
  // handle columns
 -fetchColumns(cl, scanner, interpeter);
 +fetchColumns(cl, scanner);
  
  // output the records
- final FormatterConfig config = new FormatterConfig();
- config.setPrintTimestamps(cl.hasOption(timestampOpt.getOpt()));
  printRecords(cl, shellState, config, scanner, formatter, printFile);
} finally {
  scanner.close();
diff --cc 
shell/src/main/java/org/apache/accumulo/shell/commands/ScanCommand.java
index 2e8a7514d0,12ccc94350..a20b6f5c6d
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/ScanCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/ScanCommand.java
@@@ -56,9 -57,10 +56,10 @@@ import org.apache.hadoop.io.Text
  
  public class ScanCommand extends Command {
  
-   private Option scanOptAuths, scanOptRow, scanOptColumns, 
disablePaginationOpt, showFewOpt,
-   outputFileOpt, scanOptCf, scanOptCq;
 -  private Option scanOptAuths, scanOptRow, scanOptColumns, 
disablePaginationOpt, formatterOpt,
 -  interpreterOpt, formatterInterpeterOpt, outputFileOpt, scanOptCf, 
scanOptCq;
++  private Option scanOptAuths, scanOptRow, scanOptColumns, 
disablePaginationOpt, outputFileOpt,
++  scanOptCf, scanOptCq;
  
+   protected Option showFewOpt;
protected Option timestampOpt;
protected Option profileOpt;
private Option optStartRowExclusive;
@@@ -388,7 -481,9 +388,6 @@@
  o.addOption(timestampOpt);
  o.addOption(disablePaginationOpt);
  o.addOption(OptUtil.tableOpt("table to be scanned"));
- o.addOption(showFewOpt);
 -o.addOption(formatterOpt);
 -o.addOption(interpreterOpt);
 -o.addOption(formatterInterpeterOpt);
  o.addOption(timeoutOption);
  if (Arrays.asList(ScanCommand.class.getName(), 
GrepCommand.class.getName(),
  EGrepCommand.class.getName()).contains(this.getClass().getName())) {



(accumulo) 01/01: Merge branch '2.1'

2023-11-09 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit a4b4f540c839631a54746f977fc565272b29c020
Merge: 227f84fb48 4b63ead6cb
Author: Keith Turner 
AuthorDate: Thu Nov 9 11:31:45 2023 -0500

Merge branch '2.1'

 .../tserver/compactions/CompactionManager.java |  28 ++-
 .../tserver/compactions/CompactionService.java |  21 +-
 .../compactions/ProvisionalCompactionPlanner.java  |  67 ++
 .../compaction/BadCompactionServiceConfigIT.java   | 233 +
 4 files changed, 334 insertions(+), 15 deletions(-)

diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/compactions/CompactionManager.java
index 9957eb1dee,be872a6ed9..bbabc9f262
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/compactions/CompactionManager.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/compactions/CompactionManager.java
@@@ -53,7 -54,9 +54,9 @@@ import org.apache.accumulo.tserver.tabl
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
++import com.github.benmanes.caffeine.cache.Cache;
++import com.github.benmanes.caffeine.cache.Caffeine;
  import com.google.common.base.Preconditions;
 -import com.google.common.cache.Cache;
 -import com.google.common.cache.CacheBuilder;
  import com.google.common.collect.Sets;
  
  public class CompactionManager {
@@@ -187,6 -209,9 +199,8 @@@
  
  Map tmpServices = new HashMap<>();
  
 -unknownCompactionServiceErrorCache =
 -CacheBuilder.newBuilder().expireAfterWrite(5, MINUTES).build();
++unknownCompactionServiceErrorCache = 
Caffeine.newBuilder().expireAfterWrite(5, MINUTES).build();
+ 
  currentCfg.getPlanners().forEach((serviceName, plannerClassName) -> {
try {
  tmpServices.put(CompactionServiceId.of(serviceName),



(accumulo) 01/01: Merge branch '2.1'

2023-11-01 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit a4cc5f82c37b4ff1cb2bb44d99e0b7cef1302fc1
Merge: 3c4292d747 e34b439e7d
Author: Daniel Roberts 
AuthorDate: Thu Nov 2 04:26:36 2023 +

Merge branch '2.1'

 .../spi/compaction/DefaultCompactionPlanner.java   |  5 ++--
 .../test/functional/GarbageCollectorIT.java| 34 +-
 2 files changed, 24 insertions(+), 15 deletions(-)

diff --cc 
test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
index 73fb6d5665,b1372ac3ad..dc9fb34174
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
@@@ -32,10 -31,10 +32,9 @@@ import java.time.Duration
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Iterator;
 -import java.util.LinkedList;
  import java.util.List;
  import java.util.Map.Entry;
- import java.util.Objects;
 -import java.util.concurrent.TimeUnit;
 +import java.util.Optional;
  import java.util.stream.Collectors;
  import java.util.stream.Stream;
  



(accumulo) 01/01: Merge branch '2.1'

2023-10-30 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 3c4292d7476904f65da316c75889e417afb00c4e
Merge: 4641c55e93 f79bf07950
Author: Christopher Tubbs 
AuthorDate: Mon Oct 30 13:06:25 2023 -0400

Merge branch '2.1'

 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --cc pom.xml
index 0370acc1f7,12e7379046..7902225114
--- a/pom.xml
+++ b/pom.xml
@@@ -151,11 -152,11 +151,11 @@@
  5.5.0
  2.20.0
  3.3.6
 +3.6.0
  1.27.0
 -2.0.9
  2.0.7
  0.17.0
- 3.8.2
+ 3.8.3


  



(accumulo) 01/01: Merge branch '2.1'

2023-10-27 Thread cshannon
This is an automated email from the ASF dual-hosted git repository.

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

commit 4641c55e933ba0efa647562ea2c63caab63defcd
Merge: 60f46e1abd a2ce072e5c
Author: Christopher L. Shannon (cshannon) 
AuthorDate: Fri Oct 27 18:44:02 2023 -0400

Merge branch '2.1'

 .../java/org/apache/accumulo/manager/Manager.java  |  6 ++
 .../accumulo/manager/TabletGroupWatcher.java   | 27 +++-
 .../apache/accumulo/manager/state/MergeStats.java  | 23 +++
 .../accumulo/manager/state/MergeStatsTest.java | 71 ++
 .../apache/accumulo/test/manager/MergeStateIT.java | 19 ++
 5 files changed, 145 insertions(+), 1 deletion(-)

diff --cc server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
index 009a407dd0,196b50d76c..8142af7c3f
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
@@@ -648,8 -645,25 +648,14 @@@ public class Manager extends AbstractSe
  case COMPLETE:
break;
  case STARTED:
 -case SPLITTING:
 -  return TabletGoalState.HOSTED;
 -case WAITING_FOR_CHOPPED:
 -  if 
(tls.getState(tserverSet.getCurrentServers()).equals(TabletState.HOSTED)) {
 -if (tls.chopped) {
 -  return TabletGoalState.UNASSIGNED;
 -}
 -  } else if (tls.chopped && tls.walogs.isEmpty()) {
 -return TabletGoalState.UNASSIGNED;
 -  }
 -
return TabletGoalState.HOSTED;
  case WAITING_FOR_OFFLINE:
+   // If we have walogs we need to be HOSTED to recover
+   if (!tls.walogs.isEmpty()) {
+ return TabletGoalState.HOSTED;
+   } else {
+ return TabletGoalState.UNASSIGNED;
+   }
  case MERGING:
return TabletGoalState.UNASSIGNED;
}
diff --cc 
server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
index bbee9aea48,4ffeee967d..b99bf3473b
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
@@@ -836,65 -801,15 +847,74 @@@ abstract class TabletGroupWatcher exten
  Key key = entry.getKey();
  Value value = entry.getValue();
  
+ // Verify that Tablet is offline
+ if (isTabletAssigned(key)) {
+   throw new IllegalStateException(
+   "Tablet " + key.getRow() + " is assigned during a merge!");
+   // Verify that Tablet has no WALs
+ } else if (key.getColumnFamily().equals(LogColumnFamily.NAME)) {
+   throw new IllegalStateException("Tablet " + key.getRow() + " has 
walogs during a merge!");
 -} else if (key.getColumnFamily().equals(DataFileColumnFamily.NAME)) {
 -  m.put(key.getColumnFamily(), key.getColumnQualifier(), value);
++}
++
 +final KeyExtent keyExtent = KeyExtent.fromMetaRow(key.getRow());
 +
 +// Keep track of the last Key Extent seen so we can use it to fence
 +// of RFiles when merging the metadata
 +if (lastExtent != null && !keyExtent.equals(lastExtent)) {
 +  previousKeyExtent = lastExtent;
 +}
 +
 +// Special case to handle the highest/stop tablet, which is where 
files are
 +// merged to. The existing merge code won't delete files from this 
tablet
 +// so we need to handle the deletes in this tablet when fencing files.
 +// We may be able to make this simpler in the future.
 +if (keyExtent.equals(stopExtent)) {
 +  if (previousKeyExtent != null
 +  && key.getColumnFamily().equals(DataFileColumnFamily.NAME)) {
 +
 +// Fence off existing files by the end row of the previous tablet 
and current tablet
 +final StoredTabletFile existing = 
StoredTabletFile.of(key.getColumnQualifier());
 +// The end row should be inclusive for the current tablet and the 
previous end row
 +// should be exclusive for the start row
 +Range fenced = new Range(previousKeyExtent.endRow(), false, 
keyExtent.endRow(), true);
 +
 +// Clip range if exists
 +fenced = existing.hasRange() ? existing.getRange().clip(fenced) : 
fenced;
 +
 +final StoredTabletFile newFile = 
StoredTabletFile.of(existing.getPath(), fenced);
 +// If the existing metadata does not match then we need to delete 
the old
 +// and replace with a new range
 +if (!existing.equals(newFile)) {
 +  m.putDelete(DataFileColumnFamily.NAME, 
existing.getMetadataText());
 +  m.put(key.getColumnFamily(), newFile.getMetadataText(), value);
 +}
 

[accumulo] 01/01: Merge branch '2.1'

2023-10-26 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit e951e62d32dbcd66c31a9a4f881091c6a8d7f7b4
Merge: b5b48c3e38 75e959af26
Author: Christopher Tubbs 
AuthorDate: Thu Oct 26 22:31:00 2023 -0400

Merge branch '2.1'

 pom.xml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-10-24 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit c4c8c572c8be14d882899f8f9370700227e87423
Merge: c14a97fe8c e6cbdb4418
Author: Daniel Roberts 
AuthorDate: Tue Oct 24 17:21:21 2023 +

Merge branch '2.1'

 .../org/apache/accumulo/core/conf/Property.java| 243 ++---
 .../org/apache/accumulo/core/gc/Reference.java |   7 +
 .../accumulo/core/gc/ReferenceDirectory.java   |   2 +-
 .../org/apache/accumulo/core/gc/ReferenceFile.java |  32 ++-
 .../apache/accumulo/core/conf/PropertyTest.java|   4 +
 .../accumulo/server/gc/AllVolumesDirectory.java|   2 +-
 .../accumulo/server/metadata/ServerAmpleImpl.java  |   4 +-
 .../accumulo/server/util/ManagerMetadataUtil.java  |   4 +
 .../accumulo/server/util/MetadataTableUtil.java|   2 +-
 .../main/java/org/apache/accumulo/gc/GCRun.java|  31 +--
 .../accumulo/gc/GarbageCollectionAlgorithm.java|  16 +-
 .../apache/accumulo/gc/GarbageCollectionTest.java  | 164 --
 .../accumulo/manager/TabletGroupWatcher.java   |   2 +-
 .../tableOps/bulkVer2/CleanUpBulkImport.java   |   2 +-
 .../test/functional/GarbageCollectorIT.java|   2 +-
 15 files changed, 296 insertions(+), 221 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/conf/Property.java
index 903c5d7443,bafc826c5a..58be89df05
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@@ -60,28 -61,28 +60,28 @@@ public enum Property 
@Sensitive
RPC_SSL_KEYSTORE_PASSWORD("rpc.javax.net.ssl.keyStorePassword", "", 
PropertyType.STRING,
"Password used to encrypt the SSL private keystore. "
-   + "Leave blank to use the Accumulo instance secret",
+   + "Leave blank to use the Accumulo instance secret.",
"1.6.0"),
RPC_SSL_KEYSTORE_TYPE("rpc.javax.net.ssl.keyStoreType", "jks", 
PropertyType.STRING,
-   "Type of SSL keystore", "1.6.0"),
+   "Type of SSL keystore.", "1.6.0"),
RPC_SSL_TRUSTSTORE_PATH("rpc.javax.net.ssl.trustStore", "", 
PropertyType.PATH,
-   "Path of the truststore file for the root cert", "1.6.0"),
+   "Path of the truststore file for the root cert.", "1.6.0"),
@Sensitive
RPC_SSL_TRUSTSTORE_PASSWORD("rpc.javax.net.ssl.trustStorePassword", "", 
PropertyType.STRING,
-   "Password used to encrypt the SSL truststore. Leave blank to use no 
password", "1.6.0"),
+   "Password used to encrypt the SSL truststore. Leave blank to use no 
password.", "1.6.0"),
RPC_SSL_TRUSTSTORE_TYPE("rpc.javax.net.ssl.trustStoreType", "jks", 
PropertyType.STRING,
-   "Type of SSL truststore", "1.6.0"),
+   "Type of SSL truststore.", "1.6.0"),
RPC_USE_JSSE("rpc.useJsse", "false", PropertyType.BOOLEAN,
"Use JSSE system properties to configure SSL rather than the " + 
RPC_PREFIX.getKey()
-   + "javax.net.ssl.* Accumulo properties",
+   + "javax.net.ssl.* Accumulo properties.",
"1.6.0"),
RPC_SSL_CIPHER_SUITES("rpc.ssl.cipher.suites", "", PropertyType.STRING,
-   "Comma separated list of cipher suites that can be used by accepted 
connections", "1.6.1"),
+   "Comma separated list of cipher suites that can be used by accepted 
connections.", "1.6.1"),
 -  RPC_SSL_ENABLED_PROTOCOLS("rpc.ssl.server.enabled.protocols", "TLSv1.2", 
PropertyType.STRING,
 +  RPC_SSL_ENABLED_PROTOCOLS("rpc.ssl.server.enabled.protocols", "TLSv1.3", 
PropertyType.STRING,
-   "Comma separated list of protocols that can be used to accept 
connections", "1.6.2"),
+   "Comma separated list of protocols that can be used to accept 
connections.", "1.6.2"),
 -  RPC_SSL_CLIENT_PROTOCOL("rpc.ssl.client.protocol", "TLSv1.2", 
PropertyType.STRING,
 +  RPC_SSL_CLIENT_PROTOCOL("rpc.ssl.client.protocol", "TLSv1.3", 
PropertyType.STRING,
-   "The protocol used to connect to a secure server, must be in the list 
of enabled protocols "
-   + "on the server side (rpc.ssl.server.enabled.protocols)",
+   "The protocol used to connect to a secure server. Must be in the list 
of enabled protocols "
+   + "on the server side `rpc.ssl.server.enabled.protocols`.",
"1.6.2"),
RPC_SASL_QOP("rpc.sasl.qop", "auth", PropertyType.STRING,
"The quality of protection to be used with SASL. Valid values are 
'auth', 'auth-int',"
@@@ -250,7 -265,12 +250,7 @@@
"Enables tracing functionality using OpenTelemetry (assuming 
OpenTelemetry is configured).",
"2.1.0"),
GENERAL_THREADPOOL_SIZE("general.server.threadpool.size", "1", 
PropertyType.COUNT,
-   "The number of threads to use for server-internal scheduled tasks", 
"2.1.0"),
+   "The number of threads to use for server-internal scheduled tasks.", 
"2.1.0"),
 -  @Deprecated(since = "2.1.0")
 -  @ReplacedBy(property = GENERAL_THREADPOOL_SIZE)
 

[accumulo] 01/01: Merge branch '2.1'

2023-10-21 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit bc105dc66f1326597e9cc225f1294b34ef7a01a5
Merge: 62c6eb1c75 9dfa9e3b64
Author: Christopher Tubbs 
AuthorDate: Sat Oct 21 13:28:41 2023 -0400

Merge branch '2.1'




[accumulo] 01/01: Merge branch '2.1'

2023-10-17 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit 85b7d3be9f7c8942fe2ecd2c4a97e335cb150c8b
Merge: 4de6087f27 324f52b711
Author: Daniel Roberts 
AuthorDate: Tue Oct 17 17:27:03 2023 +

Merge branch '2.1'

 .../accumulo/tserver/TabletClientHandler.java  |   3 +
 .../accumulo/tserver/tablet/DatafileManager.java   |  53 +-
 .../accumulo/tserver/tablet/ScanDataSource.java| 108 +
 3 files changed, 99 insertions(+), 65 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-10-13 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit f203043e831391496a94210c8e10ebd9c805cb40
Merge: d20b5a8cde 719697786c
Author: Christopher Tubbs 
AuthorDate: Fri Oct 13 17:43:31 2023 -0400

Merge branch '2.1'

 LICENSE|   11 +-
 assemble/src/main/resources/LICENSE|   25 +
 .../core/clientImpl/TableOperationsImpl.java   |2 +-
 .../org/apache/accumulo/core/data/Mutation.java|4 +-
 .../miniclusterImpl/MiniAccumuloClusterImpl.java   |2 +-
 pom.xml|6 +-
 .../java/org/apache/accumulo/manager/Manager.java  |5 +-
 .../manager/ManagerClientServiceHandler.java   |2 +-
 .../manager/tableOps/compact/CompactionDriver.java |3 +-
 .../src/main/appended-resources/META-INF/LICENSE   |   11 +-
 .../accumulo/monitor/resources/css/screen.css  |3 +-
 .../external/bootstrap/css/bootstrap-icons.css | 2078 
 .../external/bootstrap/fonts/arrow-repeat.svg  |4 -
 .../external/bootstrap/fonts/bootstrap-icons.woff  |  Bin 0 -> 176200 bytes
 .../external/bootstrap/fonts/bootstrap-icons.woff2 |  Bin 0 -> 130608 bytes
 .../bootstrap/fonts/three-dots-vertical.svg|3 -
 .../apache/accumulo/monitor/resources/js/navbar.js |1 +
 .../accumulo/monitor/resources/js/systemAlert.js   |  172 ++
 .../apache/accumulo/monitor/templates/default.ftl  |3 +
 .../org/apache/accumulo/monitor/templates/ec.ftl   |4 +-
 .../apache/accumulo/monitor/templates/navbar.ftl   |5 +-
 .../accumulo/monitor/templates/systemAlert.ftl |   31 +
 .../accumulo/tserver/TabletClientHandler.java  |3 +-
 .../org/apache/accumulo/tserver/log/DfsLogger.java |2 +-
 .../org/apache/accumulo/tserver/log/LogSorter.java |4 +-
 .../accumulo/tserver/logger/LogFileValue.java  |2 +-
 .../apache/accumulo/tserver/logger/LogReader.java  |2 +-
 .../accumulo/shell/commands/GetAuthsCommand.java   |4 +-
 test/pom.xml   |4 +-
 .../test/compaction/CompactionExecutorIT.java  |2 +-
 .../accumulo/test/functional/CompactionIT.java |2 +-
 31 files changed, 2365 insertions(+), 35 deletions(-)

diff --cc server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
index d59ca8d552,b86cba576c..009a407dd0
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
@@@ -18,7 -18,7 +18,8 @@@
   */
  package org.apache.accumulo.manager;
  
 +import static 
com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
+ import static java.nio.charset.StandardCharsets.UTF_8;
  import static java.util.Collections.emptySortedMap;
  import static java.util.concurrent.TimeUnit.HOURS;
  import static java.util.concurrent.TimeUnit.MILLISECONDS;
diff --cc 
test/src/main/java/org/apache/accumulo/test/functional/CompactionIT.java
index 928810fbe1,9bff345b17..6e48bf1cf0
--- a/test/src/main/java/org/apache/accumulo/test/functional/CompactionIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/CompactionIT.java
@@@ -30,8 -28,8 +30,9 @@@ import static org.junit.jupiter.api.Ass
  import java.io.IOException;
  import java.time.Duration;
  import java.util.ArrayList;
+ import java.util.Arrays;
  import java.util.EnumSet;
 +import java.util.HashSet;
  import java.util.List;
  import java.util.Map;
  import java.util.Map.Entry;



[accumulo] 01/01: Merge branch '2.1'

2023-09-28 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 19b4c508bf316671af4158d46d49b29eed9caf48
Merge: b9fdbc3beb 84d034589d
Author: Christopher Tubbs 
AuthorDate: Thu Sep 28 20:03:47 2023 -0400

Merge branch '2.1'

 .../rpc/ProtocolOverridingSSLSocketFactory.java| 111 -
 .../accumulo/core/rpc/SslConnectionParams.java |  20 +---
 .../org/apache/accumulo/core/rpc/ThriftUtil.java   | 108 +---
 .../apache/accumulo/server/rpc/TServerUtils.java   |   2 +-
 4 files changed, 8 insertions(+), 233 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/rpc/ThriftUtil.java
index 5be5ce82aa,6924b4c862..dd44653dd3
--- a/core/src/main/java/org/apache/accumulo/core/rpc/ThriftUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/rpc/ThriftUtil.java
@@@ -18,14 -18,11 +18,12 @@@
   */
  package org.apache.accumulo.core.rpc;
  
 +import static org.apache.accumulo.core.util.LazySingletons.RANDOM;
 +
- import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.UncheckedIOException;
  import java.net.InetAddress;
  import java.nio.channels.ClosedByInterruptException;
- import java.security.KeyStore;
 -import java.security.SecureRandom;
  import java.util.HashMap;
  import java.util.Map;
  
@@@ -52,10 -44,6 +44,8 @@@ import org.apache.thrift.transport.TTra
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
 +import com.google.common.net.HostAndPort;
 +
- import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
- 
  /**
   * Factory methods for creating Thrift client objects
   */



[accumulo] 01/01: Merge branch '2.1'

2023-09-28 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 5488a7c74b8b1dc29df37be5dcaa7bace658ba10
Merge: 9aa08ef6fa 27b76c70b8
Author: Christopher Tubbs 
AuthorDate: Thu Sep 28 17:10:03 2023 -0400

Merge branch '2.1'

This merge retains the changes for automatic module names from commit
f5bbd894bc2248f7d6eb2e99f94c154b8f9097eb for PR #2498 that were reverted
by commit 27b76c70b8290f0354c2a8719f0658aa89281a1d in the 2.1 branch, as
explained in that commit.

 pom.xml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --cc pom.xml
index 38a5a5f920,68ed4d64ad..a92287c8f9
--- a/pom.xml
+++ b/pom.xml
@@@ -151,6 -152,6 +151,7 @@@
  5.5.0
  2.20.0
  3.3.6
++3.6.0
  1.27.0
  2.0.9
  2.0.7
@@@ -803,8 -821,8 +804,7 @@@

  

--
--
++
${accumulo.module.name}
  
${mvngit.commit.id}
  true

@@@ -821,6 -839,6 +821,7 @@@
  true
  -J-Xmx512m
  all,-missing
++true

  
  



[accumulo] 01/01: Merge branch '2.1'

2023-09-25 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 5aa53a8e0cd75c4f612785dc4cf8e5946e790ea0
Merge: 1ab0cc7808 af47a2f0bd
Author: Christopher Tubbs 
AuthorDate: Mon Sep 25 14:52:15 2023 -0400

Merge branch '2.1'

 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)




[accumulo] 01/01: Merge branch '2.1'

2023-09-20 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit ff916e6759fbfd88d09b2ff0b3681d082c1e342e
Merge: 7005006620 2262125874
Author: Christopher Tubbs 
AuthorDate: Wed Sep 20 14:13:08 2023 -0400

Merge branch '2.1'

 LICENSE|   13 +-
 .../src/main/appended-resources/META-INF/LICENSE   |   13 +-
 .../resources/external/bootstrap/css/bootstrap.css | 7217 
 .../external/bootstrap/css/bootstrap.css.map   |1 -
 .../external/bootstrap/js/bootstrap.bundle.js  | 6314 +
 .../resources/external/bootstrap/js/bootstrap.js   | 5016 --
 .../external/bootstrap/js/bootstrap.js.map |1 -
 .../datatables/css/dataTables.bootstrap5.css   |   87 +-
 .../external/datatables/css/jquery.dataTables.css  |  578 --
 .../external/datatables/images/sort_asc.png|  Bin 160 -> 0 bytes
 .../datatables/images/sort_asc_disabled.png|  Bin 148 -> 0 bytes
 .../external/datatables/images/sort_both.png   |  Bin 201 -> 0 bytes
 .../external/datatables/images/sort_desc.png   |  Bin 158 -> 0 bytes
 .../datatables/images/sort_desc_disabled.png   |  Bin 146 -> 0 bytes
 .../datatables/js/dataTables.bootstrap5.js |   86 +-
 .../external/datatables/js/jquery.dataTables.js|  235 +-
 .../external/flot/jquery.flot.drawSeries.js|  123 +-
 .../jquery/{jquery-3.6.1.js => jquery-3.7.1.js}| 1915 +++---
 .../apache/accumulo/monitor/templates/default.ftl  |4 +-
 19 files changed, 11791 insertions(+), 9812 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-09-18 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 48d69f30a18da524e03ad068f733906e7428c5ea
Merge: f7e59d3653 6c34c848c4
Author: Christopher Tubbs 
AuthorDate: Mon Sep 18 14:44:33 2023 -0400

Merge branch '2.1'

 .../java/org/apache/accumulo/tserver/tablet/DatafileManager.java | 5 ++---
 .../src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java | 5 ++---
 2 files changed, 4 insertions(+), 6 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-09-18 Thread ddanielr
This is an automated email from the ASF dual-hosted git repository.

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

commit f7e59d3653edddc9bc4554fea5dbcba386d04fab
Merge: e4127a5014 75140d8965
Author: Daniel Roberts 
AuthorDate: Mon Sep 18 18:24:46 2023 +

Merge branch '2.1'

 .../main/java/org/apache/accumulo/gc/GCRun.java| 24 +-
 1 file changed, 14 insertions(+), 10 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-09-14 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 688d2f58be12e40a2818ebc66376bd02a818e6b4
Merge: 59707d6002 de0cf9f739
Author: Keith Turner 
AuthorDate: Thu Sep 14 18:40:38 2023 -0400

Merge branch '2.1'

 .../accumulo/tserver/compactions/Compactable.java  |   5 +-
 .../compactions/InternalCompactionExecutor.java|  43 -
 .../accumulo/tserver/tablet/CompactableImpl.java   |  16 ++--
 .../accumulo/tserver/tablet/DatafileManager.java   |  15 ++-
 .../org/apache/accumulo/tserver/tablet/Tablet.java |  21 ++---
 .../test/compaction/CompactionConfigChangeIT.java  | 103 +
 6 files changed, 176 insertions(+), 27 deletions(-)

diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
index 3561904912,1a820bee5b..fb510c1eff
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
@@@ -1277,8 -1292,8 +1279,8 @@@ public class CompactableImpl implement
  try {
TabletLogger.compacting(getExtent(), job, cInfo.localCompactionCfg);
tablet.incrementStatusMajor();
-   var check = new CompactionCheck(service, kind, cInfo.checkCompactionId);
+   var check = new CompactionCheck(service, kind, keepRunning, 
cInfo.checkCompactionId);
 -  TabletFile tmpFileName = 
tablet.getNextMapFilenameForMajc(cInfo.propagateDeletes);
 +  ReferencedTabletFile tmpFileName = 
tablet.getNextDataFilenameForMajc(cInfo.propagateDeletes);
var compactEnv = new MajCEnv(kind, check, readLimiter, writeLimiter, 
cInfo.propagateDeletes);
  
SortedMap allFiles = 
tablet.getDatafiles();
diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
index 97cb8d23d7,07be1a70bc..2cba023e8f
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
@@@ -348,8 -358,48 +357,8 @@@ class DatafileManager 
  // before the following metadata write is made
  newFile = 
tablet.updateTabletDataFile(commitSession.getMaxCommittedTime(), newDatafile, 
dfv,
  unusedWalLogs, flushId);
 -
 -// Mark that we have data we want to replicate
 -// This WAL could still be in use by other Tablets *from the same 
table*, so we can only
 -// mark
 -// that there is data to replicate,
 -// but it is *not* closed. We know it is not closed by the fact that 
this MinC triggered. A
 -// MinC cannot happen unless the
 -// tablet is online and thus these WALs are referenced by that 
tablet. Therefore, the WAL
 -// replication status cannot be 'closed'.
 -@SuppressWarnings("deprecation")
 -boolean replicate = 
org.apache.accumulo.core.replication.ReplicationConfigurationUtil
 -.isEnabled(tablet.getExtent(), tablet.getTableConfiguration());
 -if (replicate) {
 -  // unusedWalLogs is of the form host/fileURI, need to strip off the 
host portion
 -  Set logFileOnly = new HashSet<>();
 -  for (String unusedWalLog : unusedWalLogs) {
 -int index = unusedWalLog.indexOf('/');
 -if (index == -1) {
 -  log.warn(
 -  "Could not find host component to strip from DFSLogger 
representation of WAL");
 -} else {
 -  unusedWalLog = unusedWalLog.substring(index + 1);
 -}
 -logFileOnly.add(unusedWalLog);
 -  }
 -
 -  if (log.isDebugEnabled()) {
 -log.debug("Recording that data has been ingested into {} using 
{}", tablet.getExtent(),
 -logFileOnly);
 -  }
 -  for (String logFile : logFileOnly) {
 -@SuppressWarnings("deprecation")
 -Status status =
 -
org.apache.accumulo.server.replication.StatusUtil.openWithUnknownLength();
 -ReplicationTableUtil.updateFiles(tablet.getContext(), 
tablet.getExtent(), logFile,
 -status);
 -  }
 -}
 -
 -tablet.finishClearingUnusedLogs();
} finally {
- tablet.finishClearingUnusedLogs();
+ tablet.getLogLock().unlock();
}
  
do {



[accumulo] 01/01: Merge branch '2.1'

2023-09-14 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 59707d6002b37defbbf29c536ab1af054627102c
Merge: 3409d958bb 11824cf7a5
Author: Christopher Tubbs 
AuthorDate: Thu Sep 14 17:13:03 2023 -0400

Merge branch '2.1'

 .../accumulo/core/conf/AccumuloConfiguration.java  |   4 +
 .../org/apache/accumulo/core/conf/Property.java|   5 +
 .../apache/accumulo/server/rpc/TServerUtils.java   |  63 +++--
 .../AccumuloConfigurationIsPropertySetTest.java| 302 +
 .../apache/accumulo/gc/SimpleGarbageCollector.java |   3 +-
 .../accumulo/test/functional/ZombieTServer.java|  10 +-
 .../accumulo/test/performance/NullTserver.java |   3 +-
 7 files changed, 360 insertions(+), 30 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/conf/AccumuloConfiguration.java
index f1131894b5,636b18db68..8a6e48ba86
--- 
a/core/src/main/java/org/apache/accumulo/core/conf/AccumuloConfiguration.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/conf/AccumuloConfiguration.java
@@@ -424,8 -430,49 +424,12 @@@ public abstract class AccumuloConfigura
  }
}
  
+   /**
+* @param prop Property to check
+* @return true if the given property has explicitly been set by a user, 
false otherwise
+*/
public abstract boolean isPropertySet(Property prop);
  
 -  // deprecation property warning could get spammy in tserver so only warn 
once
 -  boolean depPropWarned = false;
 -
 -  @SuppressWarnings("deprecation")
 -  Integer getDeprecatedScanThreads(String name, boolean isScanServer) {
 -
 -Property prop;
 -Property deprecatedProp;
 -
 -if (name.equals(SimpleScanDispatcher.DEFAULT_SCAN_EXECUTOR_NAME)) {
 -  prop = isScanServer ? Property.SSERV_SCAN_EXECUTORS_DEFAULT_THREADS
 -  : Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS;
 -  deprecatedProp = Property.TSERV_READ_AHEAD_MAXCONCURRENT;
 -} else if (name.equals("meta")) {
 -  prop = isScanServer ? Property.SSERV_SCAN_EXECUTORS_META_THREADS
 -  : Property.TSERV_SCAN_EXECUTORS_META_THREADS;
 -  deprecatedProp = Property.TSERV_METADATA_READ_AHEAD_MAXCONCURRENT;
 -} else {
 -  return null;
 -}
 -
 -if (!isPropertySet(prop) && isPropertySet(deprecatedProp)) {
 -  if (!depPropWarned) {
 -depPropWarned = true;
 -log.warn("Property {} is deprecated, use {} instead.", 
deprecatedProp.getKey(),
 -prop.getKey());
 -  }
 -  return Integer.valueOf(get(deprecatedProp));
 -} else if (isPropertySet(prop) && isPropertySet(deprecatedProp) && 
!depPropWarned) {
 -  depPropWarned = true;
 -  log.warn("Deprecated property {} ignored because {} is set", 
deprecatedProp.getKey(),
 -  prop.getKey());
 -}
 -
 -return null;
 -  }
 -
private static class RefCount {
  T obj;
  long count;
diff --cc 
test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java
index 2a8d023685,61c3c24e7c..2a8abcfffb
--- a/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java
@@@ -26,21 -27,24 +26,22 @@@ import java.util.UUID
  
  import org.apache.accumulo.core.Constants;
  import org.apache.accumulo.core.clientImpl.thrift.ClientService;
 +import org.apache.accumulo.core.clientImpl.thrift.TInfo;
+ import org.apache.accumulo.core.conf.Property;
  import org.apache.accumulo.core.conf.SiteConfiguration;
 -import org.apache.accumulo.core.fate.zookeeper.ServiceLock;
 -import org.apache.accumulo.core.fate.zookeeper.ServiceLock.LockLossReason;
 -import org.apache.accumulo.core.fate.zookeeper.ServiceLock.LockWatcher;
  import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
  import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeExistsPolicy;
 -import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 +import org.apache.accumulo.core.lock.ServiceLock;
 +import org.apache.accumulo.core.lock.ServiceLock.LockLossReason;
 +import org.apache.accumulo.core.lock.ServiceLock.LockWatcher;
 +import org.apache.accumulo.core.lock.ServiceLockData;
 +import org.apache.accumulo.core.lock.ServiceLockData.ThriftService;
 +import org.apache.accumulo.core.manager.thrift.TabletServerStatus;
  import org.apache.accumulo.core.rpc.clients.ThriftClientTypes;
  import org.apache.accumulo.core.securityImpl.thrift.TCredentials;
 -import org.apache.accumulo.core.tabletserver.thrift.TabletClientService;
 -import org.apache.accumulo.core.tabletserver.thrift.TabletScanClientService;
 +import org.apache.accumulo.core.tabletscan.thrift.TabletScanClientService;
 +import org.apache.accumulo.core.tabletserver.thrift.TabletServerClientService;
  import org.apache.accumulo.core.trace.TraceUtil;
 -import org.apache.accumulo.core.trace.thrift.TInfo;
 -import org.apache.accumulo.core.util.HostAndPort;
 -import 

[accumulo] 01/01: Merge branch '2.1'

2023-09-01 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 3409d958bb1d69baf5b93bb8a588a3e3ee9aab1c
Merge: 770c05b46a b1b2557f94
Author: Christopher Tubbs 
AuthorDate: Fri Sep 1 12:06:00 2023 -0400

Merge branch '2.1'

 .../TabletServerBatchReaderIterator.java   |  11 +-
 .../core/clientImpl/TabletServerBatchWriter.java   |   2 +-
 .../core/rpc/AccumuloTFramedTransportFactory.java  |  58 +
 .../org/apache/accumulo/core/rpc/ThriftUtil.java   |   7 +-
 .../apache/accumulo/core/rpc/ThriftUtilTest.java   | 132 +
 .../test/functional/ThriftMaxFrameSizeIT.java  | 115 --
 .../java/org/apache/accumulo/test/util/Wait.java   |   2 +-
 7 files changed, 282 insertions(+), 45 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-08-31 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 770c05b46a4e3c135c85d0772ebb2b02d9db5414
Merge: 1b6dfa7915 c78dfc5235
Author: Christopher Tubbs 
AuthorDate: Thu Aug 31 07:23:58 2023 -0400

Merge branch '2.1'

 .../core/clientImpl/TabletServerBatchWriter.java   | 260 +++--
 .../accumulo/tserver/TabletClientHandler.java  |  97 
 .../apache/accumulo/test/WriteAfterCloseIT.java| 203 
 3 files changed, 445 insertions(+), 115 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchWriter.java
index e0dd94d216,de66339886..cf6821c649
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchWriter.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchWriter.java
@@@ -66,12 -71,15 +72,13 @@@ import org.apache.accumulo.core.dataImp
  import org.apache.accumulo.core.dataImpl.TabletIdImpl;
  import org.apache.accumulo.core.dataImpl.thrift.TMutation;
  import org.apache.accumulo.core.dataImpl.thrift.UpdateErrors;
 -import org.apache.accumulo.core.fate.zookeeper.ServiceLock;
++import org.apache.accumulo.core.lock.ServiceLock;
  import org.apache.accumulo.core.rpc.ThriftUtil;
  import org.apache.accumulo.core.rpc.clients.ThriftClientTypes;
- import 
org.apache.accumulo.core.tabletingest.thrift.ConstraintViolationException;
 +import org.apache.accumulo.core.tabletingest.thrift.TabletIngestClientService;
- import org.apache.accumulo.core.tabletserver.thrift.NotServingTabletException;
+ import org.apache.accumulo.core.tabletserver.thrift.NoSuchScanIDException;
 -import org.apache.accumulo.core.tabletserver.thrift.TabletClientService;
  import org.apache.accumulo.core.trace.TraceUtil;
 -import org.apache.accumulo.core.trace.thrift.TInfo;
 -import org.apache.accumulo.core.util.HostAndPort;
+ import org.apache.accumulo.core.util.Retry;
  import org.apache.accumulo.core.util.threads.ThreadPools;
  import org.apache.accumulo.core.util.threads.Threads;
  import org.apache.thrift.TApplicationException;
@@@ -931,15 -945,17 +945,17 @@@ public class TabletServerBatchWriter im
  
timeoutTracker.startingWrite();
  
+   // If there is an open session, must close it before the batchwriter 
closes or writes could
+   // happen after the batch writer closes. See #3721
try {
  final HostAndPort parsedServer = HostAndPort.fromString(location);
 -final TabletClientService.Iface client;
 +final TabletIngestClientService.Iface client;
  
  if (timeoutTracker.getTimeOut() < context.getClientTimeoutInMillis()) 
{
 -  client = ThriftUtil.getClient(ThriftClientTypes.TABLET_SERVER, 
parsedServer, context,
 +  client = ThriftUtil.getClient(ThriftClientTypes.TABLET_INGEST, 
parsedServer, context,
timeoutTracker.getTimeOut());
  } else {
 -  client = ThriftUtil.getClient(ThriftClientTypes.TABLET_SERVER, 
parsedServer, context);
 +  client = ThriftUtil.getClient(ThriftClientTypes.TABLET_INGEST, 
parsedServer, context);
  }
  
  try {
@@@ -1038,6 -1048,114 +1048,114 @@@
  throw new IOException(e);
}
  }
+ 
+ class SessionCloser implements AutoCloseable {
+ 
+   private final String location;
+   private OptionalLong usid;
+ 
+   SessionCloser(String location) {
+ this.location = location;
+ usid = OptionalLong.empty();
+   }
+ 
+   void setSession(long usid) {
+ this.usid = OptionalLong.of(usid);
+   }
+ 
+   public long getSession() {
+ return usid.getAsLong();
+   }
+ 
+   void clearSession() {
+ usid = OptionalLong.empty();
+   }
+ 
+   @Override
+   public void close() throws ThriftSecurityException {
+ if (usid.isPresent()) {
+   try {
+ closeSession();
+   } catch (InterruptedException e) {
+ throw new IllegalStateException(e);
+   }
+ }
+   }
+ 
+   /**
+* Checks if there is a lock held by a tserver at a specific host and 
port.
+*/
+   private boolean isALockHeld(String tserver) {
+ var root = context.getZooKeeperRoot() + Constants.ZTSERVERS;
+ var zLockPath = ServiceLock.path(root + "/" + tserver);
+ return ServiceLock.getSessionId(context.getZooCache(), zLockPath) != 
0;
+   }
+ 
+   private void closeSession() throws InterruptedException, 
ThriftSecurityException {
+ 
+ Retry retry = Retry.builder().infiniteRetries().retryAfter(100, 
MILLISECONDS)
+ .incrementBy(100, MILLISECONDS).maxWait(60, 
SECONDS).backOffFactor(1.5)
+ .logInterval(3, MINUTES).createRetry();
+ 
+ final HostAndPort parsedServer = HostAndPort.fromString(location);
+ 
+ long startTime = 

[accumulo] 01/01: Merge branch '2.1'

2023-08-31 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 1b6dfa791554d08d6ae618dffe533925d4eed7c3
Merge: 81c6ae1657 f76f12baa6
Author: Christopher Tubbs 
AuthorDate: Thu Aug 31 06:59:31 2023 -0400

Merge branch '2.1'

This completes the removal of the single-mutation Writer class

This fixes #3735

 .../apache/accumulo/core/clientImpl/Writer.java| 122 -
 .../accumulo/server/problems/ProblemReport.java|  10 +-
 .../accumulo/server/problems/ProblemReports.java   |   5 +-
 .../accumulo/server/util/MetadataTableUtil.java|  51 +++--
 .../org/apache/accumulo/test/BatchWriterIT.java|  95 
 .../accumulo/test/MetaConstraintRetryIT.java   |  13 ++-
 6 files changed, 125 insertions(+), 171 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/clientImpl/Writer.java
index 4a358aee6f,9f124ede54..00
deleted file mode 100644,100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/Writer.java
+++ /dev/null
@@@ -1,122 -1,55 +1,0 @@@
--/*
-- * Licensed to the Apache Software Foundation (ASF) under one
-- * or more contributor license agreements.  See the NOTICE file
-- * distributed with this work for additional information
-- * regarding copyright ownership.  The ASF licenses this file
-- * to you under the Apache License, Version 2.0 (the
-- * "License"); you may not use this file except in compliance
-- * with the License.  You may obtain a copy of the License at
-- *
-- *   https://www.apache.org/licenses/LICENSE-2.0
-- *
-- * Unless required by applicable law or agreed to in writing,
-- * software distributed under the License is distributed on an
-- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-- * KIND, either express or implied.  See the License for the
-- * specific language governing permissions and limitations
-- * under the License.
-- */
--package org.apache.accumulo.core.clientImpl;
--
--import static com.google.common.base.Preconditions.checkArgument;
- import static 
com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
- import static java.nio.charset.StandardCharsets.UTF_8;
- import static java.util.concurrent.TimeUnit.MILLISECONDS;
--
--import org.apache.accumulo.core.client.AccumuloException;
- import org.apache.accumulo.core.client.AccumuloSecurityException;
--import org.apache.accumulo.core.client.TableNotFoundException;
- import org.apache.accumulo.core.clientImpl.TabletLocator.TabletLocation;
- import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
--import org.apache.accumulo.core.data.Mutation;
--import org.apache.accumulo.core.data.TableId;
- import org.apache.accumulo.core.dataImpl.KeyExtent;
- import org.apache.accumulo.core.rpc.ThriftUtil;
- import org.apache.accumulo.core.rpc.clients.ThriftClientTypes;
- import 
org.apache.accumulo.core.tabletingest.thrift.ConstraintViolationException;
- import org.apache.accumulo.core.tabletingest.thrift.TDurability;
- import org.apache.accumulo.core.tabletingest.thrift.TabletIngestClientService;
- import org.apache.accumulo.core.tabletserver.thrift.NotServingTabletException;
- import org.apache.accumulo.core.trace.TraceUtil;
- import org.apache.hadoop.io.Text;
- import org.apache.thrift.TException;
- import org.apache.thrift.TServiceClient;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import com.google.common.net.HostAndPort;
 -import org.apache.accumulo.core.metadata.schema.Ample;
--
--public class Writer {
- 
-   private static final Logger log = LoggerFactory.getLogger(Writer.class);
--
--  private ClientContext context;
--  private TableId tableId;
--
--  public Writer(ClientContext context, TableId tableId) {
--checkArgument(context != null, "context is null");
--checkArgument(tableId != null, "tableId is null");
--this.context = context;
--this.tableId = tableId;
-   }
- 
-   private static void updateServer(ClientContext context, Mutation m, 
KeyExtent extent,
-   HostAndPort server) throws TException, NotServingTabletException,
-   ConstraintViolationException, AccumuloSecurityException {
- checkArgument(m != null, "m is null");
- checkArgument(extent != null, "extent is null");
- checkArgument(server != null, "server is null");
- checkArgument(context != null, "context is null");
- 
- TabletIngestClientService.Iface client = null;
- try {
-   client = ThriftUtil.getClient(ThriftClientTypes.TABLET_INGEST, server, 
context);
-   client.update(TraceUtil.traceInfo(), context.rpcCreds(), 
extent.toThrift(), m.toThrift(),
-   TDurability.DEFAULT);
- } catch (ThriftSecurityException e) {
-   throw new AccumuloSecurityException(e.user, e.code);
- } finally {
-   ThriftUtil.returnClient((TServiceClient) client, context);
- }
--  }
--
-   public void update(Mutation m) 

[accumulo] 01/01: Merge branch '2.1'

2023-08-29 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 81c6ae16570ae1af23a91947b28fa2c673279b80
Merge: 5bec1c33af f02d2ac500
Author: Christopher Tubbs 
AuthorDate: Tue Aug 29 15:27:35 2023 -0400

Merge branch '2.1'

 .../org/apache/accumulo/core/conf/Property.java| 17 -
 .../server/tablets/UniqueNameAllocator.java| 43 ++
 2 files changed, 28 insertions(+), 32 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/conf/Property.java
index 1261d83b35,0bff139725..7abc163f1f
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@@ -1445,10 -1833,13 +1444,10 @@@ public enum Property 
  return key.startsWith(Property.TABLE_PREFIX.getKey())
  || key.startsWith(Property.TSERV_PREFIX.getKey())
  || key.startsWith(Property.MANAGER_PREFIX.getKey())
 -|| key.startsWith(Property.MASTER_PREFIX.getKey())
  || key.startsWith(Property.GC_PREFIX.getKey())
  || key.startsWith(Property.GENERAL_ARBITRARY_PROP_PREFIX.getKey())
- || key.equals(Property.GENERAL_FILENAME_BASE_ALLOCATION.getKey())
- || key.equals(Property.GENERAL_FILENAME_JITTER_ALLOCATION.getKey());
+ || 
key.equals(Property.GENERAL_FILE_NAME_ALLOCATION_BATCH_SIZE_MIN.getKey())
 -|| 
key.equals(Property.GENERAL_FILE_NAME_ALLOCATION_BATCH_SIZE_MAX.getKey())
 -|| key.startsWith(VFS_CONTEXT_CLASSPATH_PROPERTY.getKey())
 -|| key.startsWith(REPLICATION_PREFIX.getKey());
++|| 
key.equals(Property.GENERAL_FILE_NAME_ALLOCATION_BATCH_SIZE_MAX.getKey());
}
  
/**
diff --cc 
server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
index 5e4cc77a7d,cd633137c5..14026124df
--- 
a/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
@@@ -19,9 -19,11 +19,10 @@@
  package org.apache.accumulo.server.tablets;
  
  import static java.nio.charset.StandardCharsets.UTF_8;
 -
 -import java.security.SecureRandom;
 +import static org.apache.accumulo.core.util.LazySingletons.RANDOM;
  
  import org.apache.accumulo.core.Constants;
+ import org.apache.accumulo.core.conf.DefaultConfiguration;
  import org.apache.accumulo.core.conf.Property;
  import org.apache.accumulo.core.util.FastFormat;
  import org.apache.accumulo.server.ServerContext;
@@@ -36,15 -38,17 +37,16 @@@ import org.slf4j.LoggerFactory
   */
  public class UniqueNameAllocator {
  
-   private static Logger log = 
LoggerFactory.getLogger(UniqueNameAllocator.class);
+   private static final Logger log = 
LoggerFactory.getLogger(UniqueNameAllocator.class);
 -  private static final SecureRandom random = new SecureRandom();
+   private static final Property MIN_PROP = 
Property.GENERAL_FILE_NAME_ALLOCATION_BATCH_SIZE_MIN;
+   private static final Property MAX_PROP = 
Property.GENERAL_FILE_NAME_ALLOCATION_BATCH_SIZE_MAX;
+   private static final int DEFAULT_MIN = 
DefaultConfiguration.getInstance().getCount(MIN_PROP);
  
-   private static final int DEFAULT_BASE_ALLOCATION =
-   
Integer.parseInt(Property.GENERAL_FILENAME_BASE_ALLOCATION.getDefaultValue());
+   private final ServerContext context;
+   private final String nextNamePath;
  
-   private ServerContext context;
private long next = 0;
private long maxAllocated = 0;
-   private String nextNamePath;
  
public UniqueNameAllocator(ServerContext context) {
  this.context = context;
@@@ -75,25 -76,23 +74,23 @@@
}
  
private int getAllocation() {
- int baseAllocation =
- 
context.getConfiguration().getCount(Property.GENERAL_FILENAME_BASE_ALLOCATION);
- int jitterAllocation =
- 
context.getConfiguration().getCount(Property.GENERAL_FILENAME_JITTER_ALLOCATION);
+ int minAllocation = context.getConfiguration().getCount(MIN_PROP);
+ int maxAllocation = context.getConfiguration().getCount(MAX_PROP);
  
- if (baseAllocation <= 0) {
-   log.warn("{} was set to {}, must be greater than 0. Using the default 
{}.",
-   Property.GENERAL_FILENAME_BASE_ALLOCATION.getKey(), baseAllocation,
-   DEFAULT_BASE_ALLOCATION);
-   baseAllocation = DEFAULT_BASE_ALLOCATION;
+ if (minAllocation <= 0) {
+   log.warn("{} was set to {}, but must be greater than 0. Using the 
default ({}).",
+   MIN_PROP.getKey(), minAllocation, DEFAULT_MIN);
+   minAllocation = DEFAULT_MIN;
  }
  
- int totalAllocation = baseAllocation;
- if (jitterAllocation > 0) {
-   totalAllocation += RANDOM.get().nextInt(jitterAllocation);
+ if (maxAllocation < minAllocation) {
+   log.warn("{} was set to {}, must be greater than or equal to {} ({}). 
Using {}.",
+   

[accumulo] 01/01: Merge branch '2.1'

2023-08-28 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 5bec1c33af6c464ce75f25ade7b4bd4dba0709ea
Merge: 59897142d4 4c10226c76
Author: Keith Turner 
AuthorDate: Mon Aug 28 17:38:53 2023 -0400

Merge branch '2.1'

 .../org/apache/accumulo/core/conf/Property.java| 11 +++-
 .../server/tablets/UniqueNameAllocator.java| 33 +-
 2 files changed, 42 insertions(+), 2 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/conf/Property.java
index e64147f02e,77df51c5d8..1261d83b35
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@@ -1438,8 -1834,13 +1445,10 @@@ public enum Property 
  return key.startsWith(Property.TABLE_PREFIX.getKey())
  || key.startsWith(Property.TSERV_PREFIX.getKey())
  || key.startsWith(Property.MANAGER_PREFIX.getKey())
 -|| key.startsWith(Property.MASTER_PREFIX.getKey())
  || key.startsWith(Property.GC_PREFIX.getKey())
- || key.startsWith(Property.GENERAL_ARBITRARY_PROP_PREFIX.getKey());
+ || key.startsWith(Property.GENERAL_ARBITRARY_PROP_PREFIX.getKey())
+ || key.equals(Property.GENERAL_FILENAME_BASE_ALLOCATION.getKey())
 -|| key.equals(Property.GENERAL_FILENAME_JITTER_ALLOCATION.getKey())
 -|| key.startsWith(VFS_CONTEXT_CLASSPATH_PROPERTY.getKey())
 -|| key.startsWith(REPLICATION_PREFIX.getKey());
++|| key.equals(Property.GENERAL_FILENAME_JITTER_ALLOCATION.getKey());
}
  
/**
diff --cc 
server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
index 042cc5b3f0,7c0f29c5ea..5e4cc77a7d
--- 
a/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
@@@ -19,11 -19,15 +19,14 @@@
  package org.apache.accumulo.server.tablets;
  
  import static java.nio.charset.StandardCharsets.UTF_8;
 -
 -import java.security.SecureRandom;
 +import static org.apache.accumulo.core.util.LazySingletons.RANDOM;
  
  import org.apache.accumulo.core.Constants;
+ import org.apache.accumulo.core.conf.Property;
  import org.apache.accumulo.core.util.FastFormat;
  import org.apache.accumulo.server.ServerContext;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
  
  /**
   * Allocates unique names for an accumulo instance. The names are unique for 
the lifetime of the
@@@ -65,4 -75,27 +73,27 @@@ public class UniqueNameAllocator 
  return new String(FastFormat.toZeroPaddedString(next++, 7, 
Character.MAX_RADIX, new byte[0]),
  UTF_8);
}
+ 
+   private int getAllocation() {
+ int baseAllocation =
+ 
context.getConfiguration().getCount(Property.GENERAL_FILENAME_BASE_ALLOCATION);
+ int jitterAllocation =
+ 
context.getConfiguration().getCount(Property.GENERAL_FILENAME_JITTER_ALLOCATION);
+ 
+ if (baseAllocation <= 0) {
+   log.warn("{} was set to {}, must be greater than 0. Using the default 
{}.",
+   Property.GENERAL_FILENAME_BASE_ALLOCATION.getKey(), baseAllocation,
+   DEFAULT_BASE_ALLOCATION);
+   baseAllocation = DEFAULT_BASE_ALLOCATION;
+ }
+ 
+ int totalAllocation = baseAllocation;
+ if (jitterAllocation > 0) {
 -  totalAllocation += random.nextInt(jitterAllocation);
++  totalAllocation += RANDOM.get().nextInt(jitterAllocation);
+ }
+ 
+ log.debug("Allocating {} filenames", totalAllocation);
+ 
+ return totalAllocation;
+   }
  }



[accumulo] 01/01: Merge branch '2.1'

2023-08-28 Thread jmark99
This is an automated email from the ASF dual-hosted git repository.

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

commit 59897142d4ba39e563f1a9ad14ef512efb842abe
Merge: f88500dfd0 fc793ec9a1
Author: Mark Owens 
AuthorDate: Mon Aug 28 10:04:22 2023 -0400

Merge branch '2.1'

 shell/src/main/java/org/apache/accumulo/shell/Shell.java | 16 +---
 1 file changed, 13 insertions(+), 3 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-08-24 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit af972f223b7cb64bb522d5706fbbf4857a19e167
Merge: cd7642988b fa796c64cd
Author: Christopher Tubbs 
AuthorDate: Thu Aug 24 15:32:06 2023 -0400

Merge branch '2.1'

 .../org/apache/accumulo/core/fate/zookeeper/ZooReader.java | 10 --
 .../accumulo/core/fate/zookeeper/ZooReaderWriterTest.java  |  3 +++
 2 files changed, 11 insertions(+), 2 deletions(-)



[accumulo] 01/01: Merge branch '2.1'

2023-08-23 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit cd7642988bac831292e988326aaa96e07938c641
Merge: 8cd906ea18 fcaf4d35a6
Author: Christopher Tubbs 
AuthorDate: Wed Aug 23 12:38:05 2023 -0400

Merge branch '2.1'

 .../accumulo/tserver/tablet/DatafileManager.java  | 19 +++
 1 file changed, 19 insertions(+)




[accumulo] 01/01: Merge branch '2.1'

2023-08-21 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 80e63feaaaefee58f67436866fd8b6086f96ad8f
Merge: 05b0604f59 13ce0d1f27
Author: Christopher Tubbs 
AuthorDate: Mon Aug 21 17:29:07 2023 -0400

Merge branch '2.1'

 .../accumulo/server/fs/VolumeManagerImpl.java  | 43 --
 .../accumulo/server/fs/VolumeManagerImplTest.java  | 39 
 2 files changed, 71 insertions(+), 11 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-08-17 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit a658fa8cbace3381d10555eac51c9f1fbe28b531
Merge: e6026cbdc8 ded409fc46
Author: Christopher Tubbs 
AuthorDate: Thu Aug 17 19:27:39 2023 -0400

Merge branch '2.1'

 minicluster/minicluster.properties | 31 --
 pom.xml|  8 +--
 .../accumulo/shell/format/DeleterFormatter.java| 56 +++---
 .../shell/format/DeleterFormatterTest.java | 69 +++---
 .../build/create-release-candidate.sh  | 10 ++--
 5 files changed, 81 insertions(+), 93 deletions(-)

diff --cc pom.xml
index a2eecf76d7,033dc81abc..16a6426583
--- a/pom.xml
+++ b/pom.xml
@@@ -1163,7 -1174,7 +1163,7 @@@

warning
true
-   **/thrift/*.java,**/HelpMojo.java
 -  **/thrift/*.java,**/proto/*.java
++  **/thrift/*.java
  
  




[accumulo] 01/01: Merge branch '2.1'

2023-08-16 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit e6026cbdc81bc0fec7b4c5f90459cb68336293c8
Merge: 57903f4636 64916fb724
Author: Christopher Tubbs 
AuthorDate: Wed Aug 16 17:05:55 2023 -0400

Merge branch '2.1'

 assemble/bin/accumulo | 2 +-
 assemble/conf/accumulo-env.sh | 9 +++--
 2 files changed, 8 insertions(+), 3 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-08-14 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 57903f4636197202489f057fdbd0e2bb8f99a2f1
Merge: c99f708127 38c261d123
Author: Christopher Tubbs 
AuthorDate: Mon Aug 14 15:58:35 2023 -0400

Merge branch '2.1'

 .../main/java/org/apache/accumulo/shell/Shell.java | 21 ++
 .../accumulo/shell/commands/ConfigCommand.java | 32 --
 .../shell/commands/DeleteNamespaceCommand.java | 14 ++
 .../accumulo/shell/commands/DropUserCommand.java   |  9 +-
 .../accumulo/shell/commands/MergeCommand.java  | 11 +++-
 .../accumulo/shell/commands/TableOperation.java| 24 +++-
 .../shell/commands/DropUserCommandTest.java| 11 ++--
 .../org/apache/accumulo/test/shell/ShellIT.java| 10 ---
 8 files changed, 58 insertions(+), 74 deletions(-)

diff --cc test/src/main/java/org/apache/accumulo/test/shell/ShellIT.java
index 130451c853,b211d3880b..93ac1459f5
--- a/test/src/main/java/org/apache/accumulo/test/shell/ShellIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/shell/ShellIT.java
@@@ -416,10 -424,35 +418,10 @@@ public class ShellIT extends SharedMini
  String expectedFew = "1 123:12345 [12345678] 123456789\t12345";
  exec("scan -st", true, expected);
  exec("scan -st -f 5", true, expectedFew);
 -// also prove that BinaryFormatter behaves same as the default
 -exec("scan -st -fm org.apache.accumulo.core.util.format.BinaryFormatter", 
true, expected);
 -exec("scan -st -f 5 -fm 
org.apache.accumulo.core.util.format.BinaryFormatter", true,
 -expectedFew);
  exec("setauths -c", true);
- exec("deletetable test -f", true, "Table: [test] has been deleted");
+ exec("deletetable " + name + " -f", true, "Table: [" + name + "] has been 
deleted");
}
  
 -  @Test
 -  public void scanDateStringFormatterTest() throws IOException {
 -Shell.log.debug("Starting scan dateStringFormatter test 
--");
 -exec("createtable t", true);
 -exec("insert r f q v -ts 0", true);
 -@SuppressWarnings("deprecation")
 -DateFormat dateFormat =
 -new 
SimpleDateFormat(org.apache.accumulo.core.util.format.DateStringFormatter.DATE_FORMAT);
 -String expected = String.format("r f:q [] %s\tv", dateFormat.format(new 
Date(0)));
 -// historically, showing few did not pertain to ColVis or Timestamp
 -String expectedNoTimestamp = "r f:q []\tv";
 -exec("scan -fm org.apache.accumulo.core.util.format.DateStringFormatter 
-st", true, expected);
 -exec("scan -fm org.apache.accumulo.core.util.format.DateStringFormatter 
-st -f 1000", true,
 -expected);
 -exec("scan -fm org.apache.accumulo.core.util.format.DateStringFormatter 
-st -f 5", true,
 -expected);
 -exec("scan -fm org.apache.accumulo.core.util.format.DateStringFormatter", 
true,
 -expectedNoTimestamp);
 -exec("deletetable t -f", true, "Table: [t] has been deleted");
 -  }
 -
@Test
public void grepTest() throws IOException {
  Shell.log.debug("Starting grep test --");



[accumulo] 01/01: Merge branch '2.1'

2023-08-14 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit c99f7081272647f73339fffad01871aeba483210
Merge: 67ca64eeb5 12c0b7b018
Author: Christopher Tubbs 
AuthorDate: Mon Aug 14 13:40:26 2023 -0400

Merge branch '2.1'

 .../apache/accumulo/hadoop/its/mapreduce/AccumuloInputFormatIT.java| 2 +-
 test/src/main/java/org/apache/accumulo/test/functional/TabletIT.java   | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-08-14 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 67ca64eeb528b10203c3bfd9ae36b281b041c82c
Merge: 04262c07d7 c38c10fec1
Author: Christopher Tubbs 
AuthorDate: Mon Aug 14 03:42:08 2023 -0400

Merge branch '2.1'

 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)




[accumulo] 01/01: Merge branch '2.1'

2023-08-13 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 04262c07d776cf9b5bab5b008adb24b2c00f42b9
Merge: 12898a36b7 313238b5e8
Author: Christopher Tubbs 
AuthorDate: Mon Aug 14 00:44:18 2023 -0400

Merge branch '2.1'

 .../accumulo/core/metrics/MetricsProducer.java | 31 +++---
 .../tserver/metrics/TabletServerScanMetrics.java   |  2 +-
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
index 9e8e6ec5d1,82db7f71b2..a2aa7d6a9a
--- a/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
+++ b/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
@@@ -635,18 -635,22 +635,19 @@@ public interface MetricsProducer 
String METRICS_MINC_PREFIX = "accumulo.tserver.compactions.minc.";
String METRICS_MINC_QUEUED = METRICS_MINC_PREFIX + "queued";
String METRICS_MINC_RUNNING = METRICS_MINC_PREFIX + "running";
 -
 -  String METRICS_REPLICATION_PREFIX = "accumulo.replication.";
 -  String METRICS_REPLICATION_QUEUE = METRICS_REPLICATION_PREFIX + "queue";
 -  String METRICS_REPLICATION_PENDING_FILES = METRICS_REPLICATION_PREFIX + 
"files.pending";
 -  String METRICS_REPLICATION_PEERS = METRICS_REPLICATION_PREFIX + "peers";
 -  String METRICS_REPLICATION_THREADS = METRICS_REPLICATION_PREFIX + "threads";
 +  String METRICS_MINC_PAUSED = METRICS_MINC_PREFIX + "paused";
  
-   String METRICS_SCAN = "accumulo.tserver.scans";
-   String METRICS_SCAN_OPEN_FILES = METRICS_SCAN + ".files.open";
-   String METRICS_SCAN_RESULTS = METRICS_SCAN + ".result";
-   String METRICS_SCAN_YIELDS = METRICS_SCAN + ".yields";
-   String METRICS_SCAN_START = METRICS_SCAN + ".start";
-   String METRICS_SCAN_CONTINUE = METRICS_SCAN + ".continue";
-   String METRICS_SCAN_CLOSE = METRICS_SCAN + ".close";
-   String METRICS_SCAN_BUSY_TIMEOUT = METRICS_SCAN + ".busy_timeout";
-   String METRICS_SCAN_PAUSED_FOR_MEM = METRICS_SCAN + ".paused.for.memory";
-   String METRICS_SCAN_RETURN_FOR_MEM = METRICS_SCAN + 
".return.early.for.memory";
+   String METRICS_SCAN_PREFIX = "accumulo.tserver.scans.";
+   String METRICS_SCAN_TIMES = METRICS_SCAN_PREFIX + "times";
+   String METRICS_SCAN_OPEN_FILES = METRICS_SCAN_PREFIX + "files.open";
+   String METRICS_SCAN_RESULTS = METRICS_SCAN_PREFIX + "result";
+   String METRICS_SCAN_YIELDS = METRICS_SCAN_PREFIX + "yields";
+   String METRICS_SCAN_START = METRICS_SCAN_PREFIX + "start";
+   String METRICS_SCAN_CONTINUE = METRICS_SCAN_PREFIX + "continue";
+   String METRICS_SCAN_CLOSE = METRICS_SCAN_PREFIX + "close";
+   String METRICS_SCAN_BUSY_TIMEOUT = METRICS_SCAN_PREFIX + "busy.timeout";
++  String METRICS_SCAN_PAUSED_FOR_MEM = METRICS_SCAN_PREFIX + 
".paused.for.memory";
++  String METRICS_SCAN_RETURN_FOR_MEM = METRICS_SCAN_PREFIX + 
".return.early.for.memory";
  
String METRICS_TSERVER_PREFIX = "accumulo.tserver.";
String METRICS_TSERVER_ENTRIES = METRICS_TSERVER_PREFIX + "entries";



[accumulo] 01/01: Merge branch '2.1'

2023-08-11 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit fca29a9f85bd06f0a81d637a92bb5f4700a26894
Merge: 38d28c233c e3e4c26e65
Author: Keith Turner 
AuthorDate: Fri Aug 11 17:47:23 2023 -0400

Merge branch '2.1'

 .../accumulo/core/classloader/ClassLoaderUtil.java |  19 ++
 .../core/conf/ConfigurationTypeHelper.java |   2 +-
 .../core/spi/common/ContextClassLoaderFactory.java |   4 +-
 .../accumulo/server/conf/TableConfiguration.java   |   8 +
 .../org/apache/accumulo/server/util/PropUtil.java  |  15 +-
 .../accumulo/server/util/SystemPropUtil.java   |  19 +-
 .../accumulo/tserver/TabletClientHandler.java  |   3 +
 .../accumulo/tserver/tablet/CompactableImpl.java   |   7 +
 .../tserver/tablet/MinorCompactionTask.java|   9 +-
 .../org/apache/accumulo/tserver/tablet/Tablet.java |  78 --
 .../accumulo/shell/commands/ConfigCommand.java |  31 ++-
 .../test/functional/HalfClosedTablet2IT.java   | 121 +
 .../test/functional/HalfClosedTabletIT.java| 282 +
 .../org/apache/accumulo/test/shell/ShellIT.java|  16 +-
 .../apache/accumulo/test/shell/ShellServerIT.java  |  79 ++
 15 files changed, 651 insertions(+), 42 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/conf/ConfigurationTypeHelper.java
index 9daadb58b4,8893ae8ce9..ef5e0b3b5e
--- 
a/core/src/main/java/org/apache/accumulo/core/conf/ConfigurationTypeHelper.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/conf/ConfigurationTypeHelper.java
@@@ -172,8 -173,8 +172,8 @@@ public class ConfigurationTypeHelper 
  
  try {
instance = getClassInstance(context, clazzName, base);
 -} catch (RuntimeException | IOException | ReflectiveOperationException e) 
{
 +} catch (RuntimeException | ReflectiveOperationException e) {
-   log.warn("Failed to load class {} in classloader context {}", 
clazzName, context, e);
+   log.error("Failed to load class {} in classloader context {}", 
clazzName, context, e);
  }
  
  if (instance == null && defaultInstance != null) {
diff --cc 
core/src/main/java/org/apache/accumulo/core/spi/common/ContextClassLoaderFactory.java
index a742ad0a33,3d9c18683f..c0e1863802
--- 
a/core/src/main/java/org/apache/accumulo/core/spi/common/ContextClassLoaderFactory.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/spi/common/ContextClassLoaderFactory.java
@@@ -55,15 -55,16 +55,17 @@@ public interface ContextClassLoaderFact
default void init(ContextClassLoaderEnvironment env) {}
  
/**
 -   * Get the class loader for the given contextName. Callers should not cache 
the ClassLoader result
 -   * as it may change if/when the ClassLoader reloads. Implementations should 
throw a
 -   * RuntimeException of some type (such as IllegalArgumentException) if the 
provided contextName is
 -   * not supported or fails to be constructed.
 +   * Get the class loader for the given context. Callers should not cache the 
ClassLoader result as
 +   * it may change if/when the ClassLoader reloads. Implementations should 
throw a RuntimeException
 +   * of some type (such as IllegalArgumentException) if the provided context 
is not supported or
 +   * fails to be constructed.
 *
 -   * @param contextName the name of the context that represents a class 
loader that is managed by
 -   *this factory. Currently, Accumulo will only call this method for 
non-null and non-empty
 +   * @param context the name of the context that represents a class loader 
that is managed by this
-*factory (can be null)
++   *factory. Currently, Accumulo will only call this method for 
non-null and non-empty
+*context. For empty or null context, Accumulo will use the system 
classloader without
+*consulting this plugin.
 -   * @return the class loader for the given contextName
 +   * @return the class loader for the given context
 */
 -  ClassLoader getClassLoader(String contextName);
 +  ClassLoader getClassLoader(String context);
 +
  }
diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/MinorCompactionTask.java
index 349e36d43a,f190d79460..ec5db3b815
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/MinorCompactionTask.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/MinorCompactionTask.java
@@@ -18,10 -18,7 +18,8 @@@
   */
  package org.apache.accumulo.tserver.tablet;
  
- import java.io.IOException;
- 
 -import org.apache.accumulo.core.metadata.TabletFile;
 +import org.apache.accumulo.core.file.FilePrefix;
 +import org.apache.accumulo.core.metadata.ReferencedTabletFile;
  import org.apache.accumulo.core.metadata.schema.DataFileValue;
  import org.apache.accumulo.core.trace.TraceUtil;
  import org.apache.accumulo.tserver.MinorCompactionReason;
diff --cc 

[accumulo] 01/01: Merge branch '2.1'

2023-08-02 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 38d28c233cb21088534719fb31580f9d322a9201
Merge: 94a1d6f2a8 26a71d0627
Author: Christopher Tubbs 
AuthorDate: Wed Aug 2 12:35:08 2023 -0400

Merge branch '2.1'

 test/pom.xml   |  1 +
 .../apache/accumulo/harness/AccumuloITBase.java| 18 
 .../accumulo/test/BadDeleteMarkersCreatedIT.java   | 10 +
 .../apache/accumulo/test/ScanConsistencyIT.java| 11 +
 .../accumulo/test/functional/LargeRowIT.java   | 12 +-
 .../test/functional/ManagerAssignmentIT.java   | 13 +++---
 .../accumulo/test/functional/WALSunnyDayIT.java| 15 +--
 .../java/org/apache/accumulo/test/util/Wait.java   | 48 ++
 8 files changed, 60 insertions(+), 68 deletions(-)

diff --cc 
test/src/main/java/org/apache/accumulo/test/BadDeleteMarkersCreatedIT.java
index f5f02e839b,14beb2b723..6881bd0493
--- a/test/src/main/java/org/apache/accumulo/test/BadDeleteMarkersCreatedIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/BadDeleteMarkersCreatedIT.java
@@@ -18,9 -18,8 +18,8 @@@
   */
  package org.apache.accumulo.test;
  
 -import static 
org.apache.accumulo.core.util.UtilWaitThread.sleepUninterruptibly;
 +import static java.util.concurrent.TimeUnit.SECONDS;
  import static org.junit.jupiter.api.Assertions.assertNotNull;
- import static org.junit.jupiter.api.Assertions.assertTrue;
  import static org.junit.jupiter.api.Assertions.fail;
  
  import java.time.Duration;
diff --cc test/src/main/java/org/apache/accumulo/test/functional/LargeRowIT.java
index 3658225673,bef85c4d43..3f9f7e8f2a
--- a/test/src/main/java/org/apache/accumulo/test/functional/LargeRowIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/LargeRowIT.java
@@@ -19,8 -19,7 +19,7 @@@
  package org.apache.accumulo.test.functional;
  
  import static java.util.Collections.singletonMap;
 -import static 
org.apache.accumulo.core.util.UtilWaitThread.sleepUninterruptibly;
 +import static java.util.concurrent.TimeUnit.SECONDS;
- import static org.junit.jupiter.api.Assertions.assertTrue;
  
  import java.time.Duration;
  import java.util.Map;
diff --cc 
test/src/main/java/org/apache/accumulo/test/functional/ManagerAssignmentIT.java
index a9c8904f98,b1b71177e0..e194a10772
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/ManagerAssignmentIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/ManagerAssignmentIT.java
@@@ -43,9 -42,7 +43,7 @@@ import org.apache.accumulo.core.clientI
  import org.apache.accumulo.core.data.Mutation;
  import org.apache.accumulo.core.data.Range;
  import org.apache.accumulo.core.data.TableId;
- import org.apache.accumulo.core.data.Value;
 -import org.apache.accumulo.core.fate.zookeeper.ServiceLock;
 +import org.apache.accumulo.core.lock.ServiceLock;
  import org.apache.accumulo.core.metadata.MetadataTable;
  import org.apache.accumulo.core.metadata.RootTable;
  import org.apache.accumulo.core.metadata.TabletLocationState;



[accumulo] 01/01: Merge branch '2.1'

2023-08-02 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 94a1d6f2a8c48237bc28dc6de7cca8b0f3615d20
Merge: 91d81531ab a6f24d7f83
Author: Christopher Tubbs 
AuthorDate: Wed Aug 2 05:37:23 2023 -0400

Merge branch '2.1'

 .../monitor/rest/tables/TableInformation.java  | 12 +++---
 .../rest/tservers/TabletServerInformation.java | 12 +++---
 .../apache/accumulo/monitor/resources/js/table.js  | 46 ++
 .../accumulo/monitor/resources/js/tservers.js  | 46 ++
 .../apache/accumulo/monitor/templates/tables.ftl   | 30 +-
 5 files changed, 133 insertions(+), 13 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-08-02 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 91d81531ab19f240c255cac8e19db43e4490
Merge: b217d892cd fdee413764
Author: Christopher Tubbs 
AuthorDate: Wed Aug 2 04:53:27 2023 -0400

Merge branch '2.1'

 .../java/org/apache/accumulo/server/conf/util/ZooPropEditor.java  | 8 
 1 file changed, 8 deletions(-)



[accumulo] 01/01: Merge branch '2.1'

2023-08-01 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit b217d892cddd05577597decad52d3a5074dfa7a7
Merge: 4ec6dd2054 43df0b1db4
Author: Christopher Tubbs 
AuthorDate: Tue Aug 1 23:10:20 2023 -0400

Merge branch '2.1'




[accumulo] 01/01: Merge branch '2.1'

2023-07-18 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit 27b2113ab77afd59255b57199d24d8abae0a30fa
Merge: 3a83dd4355 3f48cefc7f
Author: Dave Marion 
AuthorDate: Tue Jul 18 12:12:25 2023 +

Merge branch '2.1'

 .../core/file/blockfile/impl/CachableBlockFile.java |  2 +-
 .../java/org/apache/accumulo/core/file/rfile/RFile.java | 17 ++---
 2 files changed, 11 insertions(+), 8 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-07-12 Thread kturner
This is an automated email from the ASF dual-hosted git repository.

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

commit 0a3feba20f2a0d0d542748776777969ba9dcd9b1
Merge: d4846d407e 0733d3ae86
Author: Keith Turner 
AuthorDate: Wed Jul 12 12:59:36 2023 -0400

Merge branch '2.1'

 .../accumulo/tserver/session/SessionManager.java   |   6 +-
 .../accumulo/tserver/tablet/ScanDataSource.java|  11 +++
 .../org/apache/accumulo/tserver/tablet/Tablet.java |  11 +++
 .../tserver/session/SessionManagerTest.java| 109 +
 4 files changed, 136 insertions(+), 1 deletion(-)




[accumulo] 01/01: Merge branch '2.1'

2023-07-10 Thread dlmarion
This is an automated email from the ASF dual-hosted git repository.

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

commit d4846d407e5b28482394e2c0baa16932ae35e086
Merge: ffe0018b51 9bbf42f4dc
Author: Dave Marion 
AuthorDate: Mon Jul 10 16:13:51 2023 +

Merge branch '2.1'

 .../hadoopImpl/mapred/AccumuloRecordWriter.java|   2 +-
 .../hadoopImpl/mapreduce/AccumuloRecordWriter.java |   2 +-
 .../manager/state/LoggingTabletStateStore.java |   6 +
 .../server/manager/state/MetaDataStateStore.java   |  15 +-
 .../server/manager/state/RootTabletStateStore.java |   5 +-
 .../server/manager/state/TabletStateStore.java |  11 +-
 .../server/manager/state/ZooTabletStateStore.java  |  10 +-
 .../manager/state/RootTabletStateStoreTest.java|   3 +-
 .../accumulo/manager/TabletGroupWatcher.java   |  49 +-
 .../apache/accumulo/manager/state/TableCounts.java |   9 ++
 .../apache/accumulo/manager/state/TableStats.java  |   6 +
 .../manager/tserverOps/ShutdownTServer.java|   3 +
 .../org/apache/accumulo/tserver/TabletServer.java  |   1 +
 .../accumulo/tserver/UnloadTabletHandler.java  |   1 +
 .../accumulo/tserver/session/ScanSession.java  |   4 +
 .../apache/accumulo/tserver/session/Session.java   |   6 +
 .../accumulo/tserver/session/SessionManager.java   |  83 ++
 .../org/apache/accumulo/tserver/tablet/Tablet.java |  14 +-
 .../test/functional/ManagerAssignmentIT.java   | 167 +
 test/src/main/resources/log4j2-test.properties |   3 +
 20 files changed, 351 insertions(+), 49 deletions(-)

diff --cc 
server/base/src/main/java/org/apache/accumulo/server/manager/state/LoggingTabletStateStore.java
index b5b16e61d4,84c62254ca..acfb363d2b
--- 
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/LoggingTabletStateStore.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/LoggingTabletStateStore.java
@@@ -26,10 -26,10 +26,11 @@@ import java.util.concurrent.TimeUnit
  import org.apache.accumulo.core.logging.TabletLogger;
  import org.apache.accumulo.core.metadata.TServerInstance;
  import org.apache.accumulo.core.metadata.TabletLocationState;
+ import org.apache.accumulo.core.metadata.schema.Ample.DataLevel;
 -import org.apache.accumulo.core.util.HostAndPort;
  import org.apache.hadoop.fs.Path;
  
 +import com.google.common.net.HostAndPort;
 +
  /**
   * Wraps a tablet state store and logs important events.
   */
diff --cc 
server/base/src/main/java/org/apache/accumulo/server/manager/state/ZooTabletStateStore.java
index 6b31568c9e,398e67c112..a2b28e1d71
--- 
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
@@@ -28,8 -28,8 +28,9 @@@ import org.apache.accumulo.core.clientI
  import org.apache.accumulo.core.metadata.RootTable;
  import org.apache.accumulo.core.metadata.TServerInstance;
  import org.apache.accumulo.core.metadata.TabletLocationState;
 +import 
org.apache.accumulo.core.metadata.TabletLocationState.BadLocationStateException;
  import org.apache.accumulo.core.metadata.schema.Ample;
+ import org.apache.accumulo.core.metadata.schema.Ample.DataLevel;
  import org.apache.accumulo.core.metadata.schema.Ample.ReadConsistency;
  import org.apache.accumulo.core.metadata.schema.Ample.TabletMutator;
  import org.apache.accumulo.core.metadata.schema.TabletMetadata;
diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/session/SessionManager.java
index 7f32b7bfda,f0f8a5de2a..75f1c5f99b
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/session/SessionManager.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/session/SessionManager.java
@@@ -18,8 -18,11 +18,11 @@@
   */
  package org.apache.accumulo.tserver.session;
  
+ import static java.util.concurrent.TimeUnit.MILLISECONDS;
+ import static java.util.concurrent.TimeUnit.MINUTES;
+ import static java.util.concurrent.TimeUnit.SECONDS;
 +import static org.apache.accumulo.core.util.LazySingletons.RANDOM;
  
 -import java.security.SecureRandom;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.HashSet;
@@@ -39,10 -45,11 +45,11 @@@ import org.apache.accumulo.core.conf.Pr
  import org.apache.accumulo.core.data.Column;
  import org.apache.accumulo.core.data.TableId;
  import org.apache.accumulo.core.dataImpl.thrift.MultiScanResult;
 -import org.apache.accumulo.core.tabletserver.thrift.ActiveScan;
 -import org.apache.accumulo.core.tabletserver.thrift.ScanState;
 -import org.apache.accumulo.core.tabletserver.thrift.ScanType;
 +import org.apache.accumulo.core.tabletscan.thrift.ActiveScan;
 +import org.apache.accumulo.core.tabletscan.thrift.ScanState;
 +import org.apache.accumulo.core.tabletscan.thrift.ScanType;
  import org.apache.accumulo.core.util.MapCounter;
+ import 

[accumulo] 01/01: Merge branch '2.1'

2023-06-30 Thread ctubbsii
This is an automated email from the ASF dual-hosted git repository.

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

commit 0252a64b6b665ad98349179c80727872e7c55c42
Merge: 46eca7af96 801db455a5
Author: Christopher Tubbs 
AuthorDate: Fri Jun 30 16:09:52 2023 -0400

Merge branch '2.1'

 .../compactions/InternalCompactionExecutor.java| 11 +++
 .../metrics/CompactionExecutorsMetrics.java| 34 --
 2 files changed, 22 insertions(+), 23 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-06-30 Thread cshannon
This is an automated email from the ASF dual-hosted git repository.

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

commit 46eca7af967d160e229d221c18e49be1a2a2effd
Merge: 81d404e6d4 dfbefd076b
Author: Christopher L. Shannon (cshannon) 
AuthorDate: Fri Jun 30 09:04:54 2023 -0400

Merge branch '2.1'

 .../org/apache/accumulo/core/metadata/ScanServerRefTabletFile.java   | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)




[accumulo] 01/01: Merge branch '2.1'

2023-06-30 Thread cshannon
This is an automated email from the ASF dual-hosted git repository.

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

commit 81d404e6d4bd377c70c98ff9e2377d21c10e2b7e
Merge: 2d12563ce1 5174be131a
Author: Christopher L. Shannon (cshannon) 
AuthorDate: Fri Jun 30 08:03:58 2023 -0400

Merge branch '2.1'

 .../main/java/org/apache/accumulo/core/metadata/StoredTabletFile.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/metadata/StoredTabletFile.java
index b20724869f,24da3132ba..614368ebcb
--- a/core/src/main/java/org/apache/accumulo/core/metadata/StoredTabletFile.java
+++ b/core/src/main/java/org/apache/accumulo/core/metadata/StoredTabletFile.java
@@@ -18,9 -18,8 +18,10 @@@
   */
  package org.apache.accumulo.core.metadata;
  
+ import java.net.URI;
 +import java.util.Objects;
  
 +import org.apache.accumulo.core.data.TableId;
  import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.io.Text;
  
@@@ -44,9 -42,8 +45,9 @@@ public class StoredTabletFile extends A
 * the entry can be deleted.
 */
public StoredTabletFile(String metadataEntry) {
- super(new Path(metadataEntry));
+ super(new Path(URI.create(metadataEntry)));
  this.metadataEntry = metadataEntry;
 +this.referencedTabletFile = ReferencedTabletFile.of(getPath());
}
  
/**



  1   2   >