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

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

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

commit 11320ee8e6906265f9c10e0974322a6665f02df4
Merge: 1fbac624e4 3cc35be037
Author: Christopher Tubbs 
AuthorDate: Fri May 12 00:09:20 2023 -0400

Merge branch '1.10' into 2.1

 .../org/apache/accumulo/core/conf/Property.java|   2 +-
 .../apache/accumulo/core/conf/PropertyType.java|   7 +-
 .../core/iteratorsImpl/system/MapFileIterator.java | 109 ++---
 .../accumulo/core/conf/PropertyTypeTest.java   |   7 ++
 4 files changed, 42 insertions(+), 83 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/conf/Property.java
index 3417cea934,369e310489..a47a0992ac
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@@ -1018,92 -682,41 +1018,92 @@@ public enum Property 
TABLE_MINC_COMPACT_IDLETIME("table.compaction.minor.idle", "5m", 
PropertyType.TIMEDURATION,
"After a tablet has been idle (no mutations) for this time period it 
may have its "
+ "in-memory map flushed to disk in a minor compaction. There is no 
guarantee an idle "
 -  + "tablet will be compacted."),
 -  
TABLE_MINC_MAX_MERGE_FILE_SIZE("table.compaction.minor.merge.file.size.max", 
"1",
 -  PropertyType.MEMORY,
 -  "The max file size used for a merging minor compaction. The value of 0 
is no max "
 -  + "file size. The default value is 1 byte, which should disable 
merging minor compactions."),
 -  TABLE_SCAN_MAXMEM("table.scan.max.memory", "512K", PropertyType.MEMORY,
 +  + "tablet will be compacted.",
 +  "1.3.5"),
 +  TABLE_COMPACTION_DISPATCHER("table.compaction.dispatcher",
 +  SimpleCompactionDispatcher.class.getName(), PropertyType.CLASSNAME,
 +  "A configurable dispatcher that decides what compaction service a table 
should use.",
 +  "2.1.0"),
 +  TABLE_COMPACTION_DISPATCHER_OPTS("table.compaction.dispatcher.opts.", null, 
PropertyType.PREFIX,
 +  "Options for the table compaction dispatcher", "2.1.0"),
 +  
TABLE_COMPACTION_SELECTION_EXPIRATION("table.compaction.selection.expiration.ms",
 "2m",
 +  PropertyType.TIMEDURATION,
 +  "User compactions select files and are then queued for compaction, 
preventing these files "
 +  + "from being used in system compactions.  This timeout allows 
system compactions to cancel "
 +  + "the hold queued user compactions have on files, when its queued 
for more than the "
 +  + "specified time.  If a system compaction cancels a hold and runs, 
then the user compaction"
 +  + " can reselect and hold files after the system compaction runs.",
 +  "2.1.0"),
 +  TABLE_COMPACTION_SELECTOR("table.compaction.selector", "", 
PropertyType.CLASSNAME,
 +  "A configurable selector for a table that can periodically select file 
for mandatory "
 +  + "compaction, even if the files do not meet the compaction ratio.",
 +  "2.1.0"),
 +  TABLE_COMPACTION_SELECTOR_OPTS("table.compaction.selector.opts.", null, 
PropertyType.PREFIX,
 +  "Options for the table compaction dispatcher", "2.1.0"),
 +  TABLE_COMPACTION_CONFIGURER("table.compaction.configurer", "", 
PropertyType.CLASSNAME,
 +  "A plugin that can dynamically configure compaction output files based 
on input files.",
 +  "2.1.0"),
 +  TABLE_COMPACTION_CONFIGURER_OPTS("table.compaction.configurer.opts.", null, 
PropertyType.PREFIX,
 +  "Options for the table compaction configuror", "2.1.0"),
 +  @Deprecated(since = "2.1.0", forRemoval = true)
 +  @ReplacedBy(property = TABLE_COMPACTION_SELECTOR)
 +  TABLE_COMPACTION_STRATEGY("table.majc.compaction.strategy",
 +  "org.apache.accumulo.tserver.compaction.DefaultCompactionStrategy", 
PropertyType.CLASSNAME,
 +  "See {% jlink -f org.apache.accumulo.core.spi.compaction}", "1.6.0"),
 +  @Deprecated(since = "2.1.0", forRemoval = true)
 +  @ReplacedBy(property = TABLE_COMPACTION_SELECTOR_OPTS)
 +  TABLE_COMPACTION_STRATEGY_PREFIX("table.majc.compaction.strategy.opts.", 
null,
 +  PropertyType.PREFIX,
 +  "Properties in this category are used to configure the compaction 
strategy.", "1.6.0"),
 +  // Crypto-related properties
 +  @Experimental
 +  TABLE_CRYPTO_PREFIX("table.crypto.opts.", null, PropertyType.PREFIX,
 +  "Properties related to on-disk file encryption.", "2.1.0"),
 +  @Experimental
 +  @Sensitive
 +  TABLE_CRYPTO_SENSITIVE_PREFIX("table.crypto.opts.sensitive.", null, 
PropertyType.PREFIX,
 +  "Sensitive properties related to on-disk file encryption.", "2.1.0"),
 +  TABLE_SCAN_DISPATCHER("table.scan.dispatcher", 
SimpleScanDispatcher.class.getName(),
 +  PropertyType.CLASSNAME,
 +  "This class is used to dynamically dispatch scans to configured scan 
executors.  Configured "
 +  + "classes must implement {% jlink " + 

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

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

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

commit 74009a505667c5a181d74e84cdc6d190d6cda6a9
Merge: 0dae0a2b7d 9938d99127
Author: Christopher Tubbs 
AuthorDate: Wed Apr 26 12:19:39 2023 -0400

Merge branch '1.10' into 2.1

 .../java/org/apache/accumulo/core/data/Range.java  | 22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/data/Range.java
index 487b6a7789,11daf627a6..2c896b0f7f
--- a/core/src/main/java/org/apache/accumulo/core/data/Range.java
+++ b/core/src/main/java/org/apache/accumulo/core/data/Range.java
@@@ -126,11 -140,16 +126,11 @@@ public class Range implements WritableC
/**
 * Creates a range from startRow to endRow.
 *
 -   * @param startRow
 -   *  starting row; set to null for negative infinity
 -   * @param startRowInclusive
 -   *  true to include start row, false to skip
 -   * @param endRow
 -   *  ending row; set to null for positive infinity
 -   * @param endRowInclusive
 -   *  true to include end row, false to skip
 -   * @throws IllegalArgumentException
 -   *   if end row is before start row
 +   * @param startRow starting row; set to null for negative infinity
 +   * @param startRowInclusive true to include start row, false to skip
 +   * @param endRow ending row; set to null for positive infinity
-* @param endRowInclusive true to include start row, false to skip
++   * @param endRowInclusive true to include end row, false to skip
 +   * @throws IllegalArgumentException if end row is before start row
 */
public Range(CharSequence startRow, boolean startRowInclusive, CharSequence 
endRow,
boolean endRowInclusive) {
@@@ -141,11 -160,16 +141,11 @@@
/**
 * Creates a range from startKey to endKey.
 *
 -   * @param startKey
 -   *  starting key; set to null for negative infinity
 -   * @param startKeyInclusive
 -   *  true to include start key, false to skip
 -   * @param endKey
 -   *  ending key; set to null for positive infinity
 -   * @param endKeyInclusive
 -   *  true to include end key, false to skip
 -   * @throws IllegalArgumentException
 -   *   if end key is before start key
 +   * @param startKey starting key; set to null for negative infinity
 +   * @param startKeyInclusive true to include start key, false to skip
 +   * @param endKey ending key; set to null for positive infinity
-* @param endKeyInclusive true to include start key, false to skip
++   * @param endKeyInclusive true to include end key, false to skip
 +   * @throws IllegalArgumentException if end key is before start key
 */
public Range(Key startKey, boolean startKeyInclusive, Key endKey, boolean 
endKeyInclusive) {
  this.start = startKey;
@@@ -745,8 -779,10 +745,8 @@@
/**
 * Creates a range that covers an exact row and column family.
 *
-* @param row row row to cover
 -   * @param row
 -   *  row to cover
 -   * @param cf
 -   *  column family to cover
++   * @param row row to cover
 +   * @param cf column family to cover
 */
public static Range exact(Text row, Text cf) {
  Key startKey = new Key(row, cf);
@@@ -756,9 -792,12 +756,9 @@@
/**
 * Creates a range that covers an exact row, column family, and column 
qualifier.
 *
-* @param row row row to cover
 -   * @param row
 -   *  row to cover
 -   * @param cf
 -   *  column family to cover
 -   * @param cq
 -   *  column qualifier to cover
++   * @param row row to cover
 +   * @param cf column family to cover
 +   * @param cq column qualifier to cover
 */
public static Range exact(Text row, Text cf, Text cq) {
  Key startKey = new Key(row, cf, cq);
@@@ -769,10 -808,14 +769,10 @@@
 * Creates a range that covers an exact row, column family, column 
qualifier, and column
 * visibility.
 *
-* @param row row row to cover
 -   * @param row
 -   *  row to cover
 -   * @param cf
 -   *  column family to cover
 -   * @param cq
 -   *  column qualifier to cover
 -   * @param cv
 -   *  column visibility to cover
++   * @param row row to cover
 +   * @param cf column family to cover
 +   * @param cq column qualifier to cover
 +   * @param cv column visibility to cover
 */
public static Range exact(Text row, Text cf, Text cq, Text cv) {
  Key startKey = new Key(row, cf, cq, cv);
@@@ -784,11 -827,16 +784,11 @@@
 * Creates a range that covers an exact row, column family, column 
qualifier, column visibility,
 * and timestamp.
 *
-* @param row row row to cover
 -   * @param row
 -   *  row to cover
 -   * @param cf
 -   *  column family to cover
 -   * @param cq
 -   *  column qualifier to cover
 -   * @param cv
 -   *  column 

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

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

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

commit 6a3c919eb45cb5c8af3703e16392b54e9bd3dac0
Merge: ef95ffcc3f 65badd7705
Author: Christopher Tubbs 
AuthorDate: Thu Apr 13 18:55:00 2023 -0400

Merge branch '1.10' into 2.1

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

diff --cc pom.xml
index 4de29a89fb,4713692c1b..239d6aaa29
--- a/pom.xml
+++ b/pom.xml
@@@ -143,9 -144,11 +143,9 @@@
  3.5.0
  2.0.9
  
- 
2022-10-27T05:45:29Z
+ 
2023-04-07T20:15:28Z
  true
 -
 -false
 -1.7.35
 +2.0.6
  
source-release-tar
  
  false



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

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

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

commit 0a0e2b8fc68a70397ec769d110f40b1461921ab1
Merge: fbe647e925 341b8b9540
Author: Christopher Tubbs 
AuthorDate: Fri Apr 7 15:28:50 2023 -0400

Merge branch '1.10' into 2.1




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

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

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

commit b5f5a85f4549a87eb8ffe4c145e2c94db00c8682
Merge: b6b4859f71 fb09e7e259
Author: Christopher Tubbs 
AuthorDate: Wed Apr 5 16:42:19 2023 -0400

Merge branch '1.10' into 2.1




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

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

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

commit 1864fe50fca922fe40c459745fcce92d72493bfd
Merge: aa474b9de5 8dd79a3b31
Author: Keith Turner 
AuthorDate: Fri Mar 24 20:59:42 2023 -0400

Merge branch '1.10' into 2.1




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

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

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

commit aa474b9de5287a94ade590686469373c5e5c3f68
Merge: 491497435d d61ba8ea3a
Author: Keith Turner 
AuthorDate: Fri Mar 24 20:44:47 2023 -0400

Merge branch '1.10' into 2.1

 .../org/apache/accumulo/tserver/TabletServer.java  |   2 +-
 .../tserver/tablet/MinorCompactionTask.java|   2 +-
 .../org/apache/accumulo/tserver/tablet/Tablet.java | 231 ++---
 3 files changed, 163 insertions(+), 72 deletions(-)

diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index 72e14e37fe,6e29beaae3..cbca095d55
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@@ -437,102 -729,1770 +437,102 @@@ public class TabletServer extends Abstr
  }
  
  @Override
 -public InitialMultiScan startMultiScan(TInfo tinfo, TCredentials 
credentials,
 -Map> tbatch, List tcolumns, 
List ssiList,
 -Map> ssio, List authorizations, 
boolean waitForWrites,
 -TSamplerConfiguration tSamplerConfig, long batchTimeOut, String 
context)
 -throws ThriftSecurityException, TSampleNotPresentException {
 -  // find all of the tables that need to be scanned
 -  final HashSet tables = new HashSet<>();
 -  for (TKeyExtent keyExtent : tbatch.keySet()) {
 -tables.add(new String(keyExtent.getTable(), UTF_8));
 -  }
 -
 -  if (tables.size() != 1)
 -throw new IllegalArgumentException("Cannot batch scan over multiple 
tables");
 -
 -  // check if user has permission to the tables
 -  for (String tableId : tables) {
 -String namespaceId;
 +public void run() {
 +  while (true) {
  try {
 -  namespaceId = Tables.getNamespaceId(getInstance(), tableId);
 -} catch (TableNotFoundException e1) {
 -  throw new ThriftSecurityException(credentials.getPrincipal(),
 -  SecurityErrorCode.TABLE_DOESNT_EXIST);
 -}
 -if (!security.canScan(credentials, tableId, namespaceId, tbatch, 
tcolumns, ssiList, ssio,
 -authorizations))
 -  throw new ThriftSecurityException(credentials.getPrincipal(),
 -  SecurityErrorCode.PERMISSION_DENIED);
 -  }
 -
 -  try {
 -if (!security.authenticatedUserHasAuthorizations(credentials, 
authorizations))
 -  throw new ThriftSecurityException(credentials.getPrincipal(),
 -  SecurityErrorCode.BAD_AUTHORIZATIONS);
 -  } catch (ThriftSecurityException tse) {
 -log.error("{} is not authorized", credentials.getPrincipal(), tse);
 -throw tse;
 -  }
 -  Map> batch = Translator.translate(tbatch, new 
TKeyExtentTranslator(),
 -  new Translator.ListTranslator<>(new TRangeTranslator()));
 -
 -  // This is used to determine which thread pool to use
 -  KeyExtent threadPoolExtent = batch.keySet().iterator().next();
 -
 -  if (waitForWrites)
 -writeTracker.waitForWrites(TabletType.type(batch.keySet()));
 -
 -  final MultiScanSession mss = new MultiScanSession(credentials, 
threadPoolExtent, batch,
 -  ssiList, ssio, new Authorizations(authorizations),
 -  SamplerConfigurationImpl.fromThrift(tSamplerConfig), batchTimeOut, 
context);
 -
 -  mss.numTablets = batch.size();
 -  for (List ranges : batch.values()) {
 -mss.numRanges += ranges.size();
 -  }
 -
 -  for (TColumn tcolumn : tcolumns)
 -mss.columnSet.add(new Column(tcolumn));
 -
 -  long sid = sessionManager.createSession(mss, true);
 -
 -  MultiScanResult result;
 -  try {
 -result = continueMultiScan(tinfo, sid, mss);
 -  } catch (NoSuchScanIDException e) {
 -log.error("the impossible happened", e);
 -throw new RuntimeException("the impossible happened", e);
 -  } finally {
 -sessionManager.unreserveSession(sid);
 -  }
 -
 -  return new InitialMultiScan(sid, result);
 -}
 -
 -@Override
 -public MultiScanResult continueMultiScan(TInfo tinfo, long scanID)
 -throws NoSuchScanIDException, TSampleNotPresentException {
 -
 -  MultiScanSession session = (MultiScanSession) 
sessionManager.reserveSession(scanID);
 -
 -  if (session == null) {
 -throw new NoSuchScanIDException();
 -  }
 -
 -  try {
 -return continueMultiScan(tinfo, scanID, session);
 -  } finally {
 -sessionManager.unreserveSession(session);
 -  }
 -}
 -
 -private MultiScanResult continueMultiScan(TInfo tinfo, long scanID, 
MultiScanSession session)
 -throws NoSuchScanIDException, TSampleNotPresentException {
 -
 -  if (session.lookupTask == null) {
 -session.lookupTask = new LookupTask(TabletServer.this, scanID);
 -

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

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

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

commit e79532a2d69429e8fdce3f75c1c3121f5673b856
Merge: 0c00ab519a 22a120f36f
Author: Christopher Tubbs 
AuthorDate: Mon Mar 13 13:38:19 2023 -0400

Merge branch '1.10' into 2.1

Fix merge of #3231 and #3235 from 1.10 to 2.1

 server/manager/src/main/java/org/apache/accumulo/manager/Manager.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --cc server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
index 60931b9c2b,00..5c5a5ad203
mode 100644,00..100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
@@@ -1,1812 -1,0 +1,1813 @@@
 +/*
 + * 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.manager;
 +
 +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;
 +import static java.util.concurrent.TimeUnit.MINUTES;
 +import static java.util.concurrent.TimeUnit.NANOSECONDS;
 +import static java.util.concurrent.TimeUnit.SECONDS;
 +import static 
org.apache.accumulo.core.util.UtilWaitThread.sleepUninterruptibly;
 +
 +import java.io.IOException;
 +import java.lang.reflect.InvocationTargetException;
 +import java.net.UnknownHostException;
 +import java.util.ArrayList;
 +import java.util.Collection;
 +import java.util.Collections;
 +import java.util.HashMap;
 +import java.util.HashSet;
 +import java.util.Iterator;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Map.Entry;
 +import java.util.Set;
 +import java.util.SortedMap;
 +import java.util.TreeMap;
 +import java.util.UUID;
 +import java.util.concurrent.ConcurrentSkipListMap;
 +import java.util.concurrent.CountDownLatch;
 +import java.util.concurrent.ExecutionException;
 +import java.util.concurrent.ExecutorService;
 +import java.util.concurrent.Future;
 +import java.util.concurrent.ScheduledFuture;
 +import java.util.concurrent.atomic.AtomicBoolean;
 +import java.util.concurrent.atomic.AtomicInteger;
 +import java.util.concurrent.atomic.AtomicReference;
 +import java.util.stream.Collectors;
 +
 +import org.apache.accumulo.core.Constants;
 +import org.apache.accumulo.core.client.AccumuloClient;
 +import org.apache.accumulo.core.client.Scanner;
 +import org.apache.accumulo.core.client.TableNotFoundException;
 +import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
 +import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType;
 +import 
org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException;
 +import org.apache.accumulo.core.conf.AccumuloConfiguration;
 +import org.apache.accumulo.core.conf.Property;
 +import org.apache.accumulo.core.data.InstanceId;
 +import org.apache.accumulo.core.data.Key;
 +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.fate.AgeOffStore;
 +import org.apache.accumulo.core.fate.Fate;
 +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.ServiceLockPath;
 +import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
 +import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
 +import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeExistsPolicy;
 +import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeMissingPolicy;
 +import org.apache.accumulo.core.manager.balancer.AssignmentParamsImpl;
 +import org.apache.accumulo.core.manager.balancer.BalanceParamsImpl;
 +import org.apache.accumulo.core.manager.balancer.TServerStatusImpl;
 +import org.apache.accumulo.core.manager.balancer.TabletServerIdImpl;
 +import org.apache.accumulo.core.manager.state.tables.TableState;
 +import 

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

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

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

commit 751ed7d2c077bd38caa06c643e5077c1fb371645
Merge: dcc897b739 da2b7ed883
Author: Christopher Tubbs 
AuthorDate: Mon Mar 6 13:20:34 2023 -0500

Merge branch '1.10' into 2.1

 .../main/java/org/apache/accumulo/server/fs/FileManager.java  | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --cc 
server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
index b859e7a39a,00..79f379a0cf
mode 100644,00..100644
--- a/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
@@@ -1,595 -1,0 +1,596 @@@
 +/*
 + * 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.server.fs;
 +
 +import java.io.IOException;
 +import java.util.ArrayList;
 +import java.util.Collection;
 +import java.util.Collections;
 +import java.util.HashMap;
 +import java.util.Iterator;
 +import java.util.LinkedList;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Map.Entry;
 +import java.util.concurrent.Semaphore;
 +import java.util.concurrent.TimeUnit;
 +import java.util.concurrent.atomic.AtomicBoolean;
 +import java.util.stream.Collectors;
 +
 +import org.apache.accumulo.core.client.SampleNotPresentException;
 +import org.apache.accumulo.core.conf.Property;
 +import org.apache.accumulo.core.data.Key;
 +import org.apache.accumulo.core.data.Value;
 +import org.apache.accumulo.core.dataImpl.KeyExtent;
 +import org.apache.accumulo.core.file.FileOperations;
 +import org.apache.accumulo.core.file.FileSKVIterator;
 +import org.apache.accumulo.core.file.blockfile.impl.CacheProvider;
 +import org.apache.accumulo.core.iterators.IteratorEnvironment;
 +import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
 +import org.apache.accumulo.core.iteratorsImpl.system.InterruptibleIterator;
 +import org.apache.accumulo.core.iteratorsImpl.system.SourceSwitchingIterator;
 +import 
org.apache.accumulo.core.iteratorsImpl.system.SourceSwitchingIterator.DataSource;
 +import org.apache.accumulo.core.iteratorsImpl.system.TimeSettingIterator;
 +import org.apache.accumulo.core.metadata.TabletFile;
 +import org.apache.accumulo.core.metadata.schema.DataFileValue;
 +import org.apache.accumulo.core.sample.impl.SamplerConfigurationImpl;
 +import org.apache.accumulo.core.util.threads.ThreadPools;
 +import org.apache.accumulo.server.ServerContext;
 +import org.apache.accumulo.server.problems.ProblemReport;
 +import org.apache.accumulo.server.problems.ProblemReportingIterator;
 +import org.apache.accumulo.server.problems.ProblemReports;
 +import org.apache.accumulo.server.problems.ProblemType;
 +import org.apache.hadoop.fs.FileSystem;
 +import org.apache.hadoop.fs.Path;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +import com.google.common.cache.Cache;
 +
 +public class FileManager {
 +
 +  private static final Logger log = 
LoggerFactory.getLogger(FileManager.class);
 +
 +  private int maxOpen;
 +
 +  private static class OpenReader implements Comparable {
 +long releaseTime;
 +FileSKVIterator reader;
 +String fileName;
 +
 +public OpenReader(String fileName, FileSKVIterator reader) {
 +  this.fileName = fileName;
 +  this.reader = reader;
 +  this.releaseTime = System.currentTimeMillis();
 +}
 +
 +@Override
 +public int compareTo(OpenReader o) {
 +  return Long.compare(releaseTime, o.releaseTime);
 +}
 +
 +@Override
 +public boolean equals(Object obj) {
 +  if (obj instanceof OpenReader) {
 +return compareTo((OpenReader) obj) == 0;
 +  }
 +  return false;
 +}
 +
 +@Override
 +public int hashCode() {
 +  return fileName.hashCode();
 +}
 +  }
 +
 +  private Map> openFiles;
 +  private HashMap reservedReaders;
 +
 +  private Semaphore filePermits;
 +
 +  private Cache fileLenCache;
 +
 +  private long maxIdleTime;
 +  private long slowFilePermitMillis;
 +
 +  private final ServerContext context;
 +
 +  private class 

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

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

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

commit f2589f312076b0e33a9d45f6f2576b4ba33f02fd
Merge: 7d7884787a 1ec4da2156
Author: Christopher Tubbs 
AuthorDate: Fri Mar 3 09:20:46 2023 -0500

Merge branch '1.10' into 2.1

 core/pom.xml   | 17 +++--
 pom.xml| 24 +---
 server/monitor/pom.xml | 11 ---
 server/tserver/pom.xml | 13 +
 4 files changed, 41 insertions(+), 24 deletions(-)

diff --cc core/pom.xml
index 73e6863029,163a1c062f..7a1b07b1ce
--- a/core/pom.xml
+++ b/core/pom.xml
@@@ -194,18 -136,6 +194,23 @@@
  
  

 +
 +  com.mycila
 +  license-maven-plugin
 +  
- 
-   
src/main/java/org/apache/accumulo/core/bloomfilter/*.java
-   
src/main/java/org/apache/accumulo/core/util/HostAndPort.java
-   src/test/resources/*.jceks
-   
src/test/resources/org/apache/accumulo/core/file/rfile/*.rf
- 
++
++  
++
${session.executionRootDirectory}/contrib/license-header.txt
++
++  
src/main/java/org/apache/accumulo/core/bloomfilter/*.java
++  
src/main/java/org/apache/accumulo/core/util/HostAndPort.java
++  src/test/resources/*.jceks
++  
src/test/resources/org/apache/accumulo/core/file/rfile/*.rf
++
++  
++
 +  
 +
  
org.apache.rat
apache-rat-plugin
diff --cc pom.xml
index a1fc550b43,7e1e7cd0d2..a430d2a15c
--- a/pom.xml
+++ b/pom.xml
@@@ -697,33 -617,7 +697,37 @@@
  
org.codehaus.mojo
versions-maven-plugin
 -  2.8.1
 +  2.12.0
 +
 +
 +  com.mycila
 +  license-maven-plugin
 +  4.1
 +  
- 
${session.executionRootDirectory}/contrib/license-header.txt
- 
-   **/DEPENDENCIES
-   **/LICENSE
-   **/NOTICE
-   **/target/**
-   contrib/javadoc11.patch
- 
++
++  
++
${session.executionRootDirectory}/contrib/license-header.txt
++
++  **/DEPENDENCIES
++  **/LICENSE
++  **/NOTICE
++  **/target/**
++  contrib/javadoc11.patch
++
++  
++
 +
 +  
 +  SCRIPT_STYLE
 +  SLASHSTAR_STYLE
 +  SLASHSTAR_STYLE
 +  SLASHSTAR_STYLE
 +  SLASHSTAR_STYLE
 +  SLASHSTAR_STYLE
 +  SLASHSTAR_STYLE
 +  SLASHSTAR_STYLE
 +
 +  
  
  
org.gaul
diff --cc server/monitor/pom.xml
index 82f3e23a36,523ab1b815..ca17126745
--- a/server/monitor/pom.xml
+++ b/server/monitor/pom.xml
@@@ -194,15 -129,6 +194,20 @@@

  

 +
 +  com.mycila
 +  license-maven-plugin
 +  
- 
-   
src/main/resources/org/apache/accumulo/monitor/resources/external/**/*
- 
++
++  
++
${session.executionRootDirectory}/contrib/license-header.txt
++
++  
src/main/resources/org/apache/accumulo/monitor/resources/external/**/*
++
++  
++
 +  
 +
  
org.apache.rat
apache-rat-plugin
diff --cc server/tserver/pom.xml
index 4745e8e1b5,18028634a9..a661df1373
--- a/server/tserver/pom.xml
+++ b/server/tserver/pom.xml
@@@ -154,16 -136,6 +154,21 @@@
  

  
 +
 +  com.mycila
 +  license-maven-plugin
 +  
- 
-   src/test/resources/*.walog
-   src/test/resources/walog-from-14/*
- 
++
++  
++
${session.executionRootDirectory}/contrib/license-header.txt
++
++  src/test/resources/*.walog
++  src/test/resources/walog-from-14/*
++
++  
++
 +  
 +
  
org.apache.rat
apache-rat-plugin



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

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

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

commit 895479eb08074b70df9ec71046ba6a75c099d360
Merge: efc882a8c5 b37b0626b6
Author: Christopher Tubbs 
AuthorDate: Wed Feb 8 12:45:19 2023 -0500

Merge branch '1.10' into 2.1

 .../core/client/ClientSideIteratorScanner.java |  8 +++
 .../accumulo/core/client/IsolatedScanner.java  |  8 +++
 .../accumulo/core/clientImpl/ScannerIterator.java  |  2 +-
 .../accumulo/core/clientImpl/ScannerOptions.java   | 26 +++---
 .../core/clientImpl/TabletServerBatchReader.java   |  2 +-
 .../TabletServerBatchReaderIterator.java   | 12 +-
 6 files changed, 29 insertions(+), 29 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
index 908d789588,556bc431f1..542273d470
--- 
a/core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
@@@ -213,13 -239,12 +213,13 @@@ public class ClientSideIteratorScanner 
  smi = new ScannerTranslatorImpl(scanner, 
scanner.getSamplerConfiguration());
  this.range = scanner.getRange();
  this.size = scanner.getBatchSize();
- this.timeOut = scanner.getTimeout(MILLISECONDS);
- this.batchTimeOut = scanner.getTimeout(MILLISECONDS);
 -this.retryTimeout = scanner.getTimeout(TimeUnit.MILLISECONDS);
 -this.batchTimeout = scanner.getTimeout(TimeUnit.MILLISECONDS);
++this.retryTimeout = scanner.getTimeout(MILLISECONDS);
++this.batchTimeout = scanner.getTimeout(MILLISECONDS);
  this.readaheadThreshold = scanner.getReadaheadThreshold();
  SamplerConfiguration samplerConfig = scanner.getSamplerConfiguration();
 -if (samplerConfig != null)
 +if (samplerConfig != null) {
setSamplerConfiguration(samplerConfig);
 +}
}
  
/**
@@@ -232,14 -257,13 +232,14 @@@
@Override
public Iterator> iterator() {
  smi.scanner.setBatchSize(size);
- smi.scanner.setTimeout(timeOut, MILLISECONDS);
- smi.scanner.setBatchTimeout(batchTimeOut, MILLISECONDS);
 -smi.scanner.setTimeout(retryTimeout, TimeUnit.MILLISECONDS);
 -smi.scanner.setBatchTimeout(batchTimeout, TimeUnit.MILLISECONDS);
++smi.scanner.setTimeout(retryTimeout, MILLISECONDS);
++smi.scanner.setBatchTimeout(batchTimeout, MILLISECONDS);
  smi.scanner.setReadaheadThreshold(readaheadThreshold);
 -if (isolated)
 +if (isolated) {
smi.scanner.enableIsolation();
 -else
 +} else {
smi.scanner.disableIsolation();
 +}
  
  smi.samplerConfig = getSamplerConfiguration();
  
diff --cc 
core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
index dcbb190dd3,6cd97de04f..518737b02d
--- a/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
@@@ -227,8 -228,8 +227,8 @@@ public class IsolatedScanner extends Sc
public IsolatedScanner(Scanner scanner, RowBufferFactory bufferFactory) {
  this.scanner = scanner;
  this.range = scanner.getRange();
- this.timeOut = scanner.getTimeout(MILLISECONDS);
- this.batchTimeOut = scanner.getBatchTimeout(MILLISECONDS);
 -this.retryTimeout = scanner.getTimeout(TimeUnit.MILLISECONDS);
 -this.batchTimeout = scanner.getBatchTimeout(TimeUnit.MILLISECONDS);
++this.retryTimeout = scanner.getTimeout(MILLISECONDS);
++this.batchTimeout = scanner.getBatchTimeout(MILLISECONDS);
  this.batchSize = scanner.getBatchSize();
  this.readaheadThreshold = scanner.getReadaheadThreshold();
  this.bufferFactory = bufferFactory;
@@@ -236,10 -237,28 +236,10 @@@
  
@Override
public Iterator> iterator() {
- return new RowBufferingIterator(scanner, this, range, timeOut, batchSize, 
readaheadThreshold,
- bufferFactory);
+ return new RowBufferingIterator(scanner, this, range, retryTimeout, 
batchSize,
+ readaheadThreshold, bufferFactory);
}
  
 -  @Deprecated
 -  @Override
 -  public void setTimeOut(int timeOut) {
 -if (timeOut == Integer.MAX_VALUE)
 -  setTimeout(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
 -else
 -  setTimeout(timeOut, TimeUnit.SECONDS);
 -  }
 -
 -  @Deprecated
 -  @Override
 -  public int getTimeOut() {
 -long timeout = getTimeout(TimeUnit.SECONDS);
 -if (timeout >= Integer.MAX_VALUE)
 -  return Integer.MAX_VALUE;
 -return (int) timeout;
 -  }
 -
@Override
public void setRange(Range range) {
  this.range = range;
diff --cc 
core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java
index c098440027,00..182b912c55
mode 100644,00..100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java
+++ 

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

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

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

commit 758191f62e1ced59ba3a7d0b8b7d4bf3e1f130b9
Merge: 39fbd1b63e cd81bc7922
Author: Christopher Tubbs 
AuthorDate: Thu Feb 2 10:04:26 2023 -0500

Merge branch '1.10' into 2.1

 .../org/apache/accumulo/core/clientImpl/ThriftScanner.java| 11 +++
 1 file changed, 11 insertions(+)

diff --cc 
core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftScanner.java
index f168c7d761,00..26ddf5abc2
mode 100644,00..100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftScanner.java
@@@ -1,756 -1,0 +1,767 @@@
 +/*
 + * 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 java.util.concurrent.TimeUnit.SECONDS;
 +
 +import java.io.IOException;
 +import java.security.SecureRandom;
 +import java.time.Duration;
 +import java.util.ArrayList;
 +import java.util.Collection;
 +import java.util.Collections;
 +import java.util.EnumMap;
 +import java.util.HashSet;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.SortedMap;
 +import java.util.SortedSet;
 +import java.util.stream.Collectors;
 +
 +import org.apache.accumulo.core.Constants;
 +import org.apache.accumulo.core.client.AccumuloException;
 +import org.apache.accumulo.core.client.AccumuloSecurityException;
 +import org.apache.accumulo.core.client.SampleNotPresentException;
 +import org.apache.accumulo.core.client.TableNotFoundException;
 +import org.apache.accumulo.core.client.sample.SamplerConfiguration;
 +import org.apache.accumulo.core.clientImpl.TabletLocator.TabletLocation;
 +import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
 +import org.apache.accumulo.core.conf.Property;
 +import org.apache.accumulo.core.data.Column;
 +import org.apache.accumulo.core.data.Key;
 +import org.apache.accumulo.core.data.KeyValue;
 +import org.apache.accumulo.core.data.PartialKey;
 +import org.apache.accumulo.core.data.Range;
 +import org.apache.accumulo.core.data.TableId;
 +import org.apache.accumulo.core.data.TabletId;
 +import org.apache.accumulo.core.data.Value;
 +import org.apache.accumulo.core.dataImpl.KeyExtent;
 +import org.apache.accumulo.core.dataImpl.TabletIdImpl;
 +import org.apache.accumulo.core.dataImpl.thrift.InitialScan;
 +import org.apache.accumulo.core.dataImpl.thrift.IterInfo;
 +import org.apache.accumulo.core.dataImpl.thrift.ScanResult;
 +import org.apache.accumulo.core.dataImpl.thrift.TKeyValue;
 +import org.apache.accumulo.core.rpc.ThriftUtil;
 +import org.apache.accumulo.core.rpc.clients.ThriftClientTypes;
 +import org.apache.accumulo.core.sample.impl.SamplerConfigurationImpl;
 +import org.apache.accumulo.core.security.Authorizations;
 +import org.apache.accumulo.core.spi.scan.ScanServerAttempt;
 +import org.apache.accumulo.core.spi.scan.ScanServerSelections;
 +import org.apache.accumulo.core.spi.scan.ScanServerSelector;
 +import org.apache.accumulo.core.tabletserver.thrift.NoSuchScanIDException;
 +import org.apache.accumulo.core.tabletserver.thrift.NotServingTabletException;
 +import org.apache.accumulo.core.tabletserver.thrift.ScanServerBusyException;
 +import 
org.apache.accumulo.core.tabletserver.thrift.TSampleNotPresentException;
 +import org.apache.accumulo.core.tabletserver.thrift.TabletScanClientService;
 +import org.apache.accumulo.core.tabletserver.thrift.TooManyFilesException;
 +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.OpTimer;
 +import org.apache.hadoop.io.Text;
 +import org.apache.thrift.TApplicationException;
 +import org.apache.thrift.TException;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +import io.opentelemetry.api.trace.Span;
 +import io.opentelemetry.context.Scope;
 +
 +public class ThriftScanner {
 +  private static final Logger log = 

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

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

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

commit cb22cc46bb4b8792c5b4c7a7a301b224ca1684c1
Merge: 7f19f96914 7328507396
Author: Keith Turner 
AuthorDate: Tue Jan 31 20:21:12 2023 -0500

Merge branch '1.10' into 2.1

 .../core/clientImpl/TabletLocatorImpl.java |  32 -
 .../core/clientImpl/TabletLocatorImplTest.java | 137 -
 2 files changed, 166 insertions(+), 3 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/clientImpl/TabletLocatorImpl.java
index 5b120911bc,00..31ec31c027
mode 100644,00..100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletLocatorImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletLocatorImpl.java
@@@ -1,756 -1,0 +1,784 @@@
 +/*
 + * 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 java.util.concurrent.TimeUnit.MILLISECONDS;
 +import static java.util.concurrent.TimeUnit.SECONDS;
 +import static 
org.apache.accumulo.core.util.UtilWaitThread.sleepUninterruptibly;
 +
 +import java.util.ArrayList;
 +import java.util.Collection;
 +import java.util.Collections;
 +import java.util.Comparator;
 +import java.util.HashMap;
 +import java.util.HashSet;
 +import java.util.Iterator;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Map.Entry;
 +import java.util.SortedMap;
 +import java.util.TreeMap;
 +import java.util.TreeSet;
 +import java.util.concurrent.locks.Lock;
 +import java.util.concurrent.locks.ReentrantReadWriteLock;
 +
 +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.data.Key;
 +import org.apache.accumulo.core.data.Mutation;
 +import org.apache.accumulo.core.data.PartialKey;
 +import org.apache.accumulo.core.data.Range;
 +import org.apache.accumulo.core.data.TableId;
 +import org.apache.accumulo.core.dataImpl.KeyExtent;
 +import org.apache.accumulo.core.util.OpTimer;
 +import org.apache.accumulo.core.util.Pair;
 +import org.apache.accumulo.core.util.TextUtil;
 +import org.apache.hadoop.io.Text;
 +import org.apache.hadoop.io.WritableComparator;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 +
 +public class TabletLocatorImpl extends TabletLocator {
 +
 +  private static final Logger log = 
LoggerFactory.getLogger(TabletLocatorImpl.class);
 +
 +  // MAX_TEXT represents a TEXT object that is greater than all others. 
Attempted to use null for
 +  // this purpose, but there seems to be a bug in TreeMap.tailMap with null. 
Therefore instead of
 +  // using null, created MAX_TEXT.
 +  static final Text MAX_TEXT = new Text();
 +
 +  static final Comparator END_ROW_COMPARATOR = (o1, o2) -> {
 +if (o1 == o2) {
 +  return 0;
 +}
 +if (o1 == MAX_TEXT) {
 +  return 1;
 +}
 +if (o2 == MAX_TEXT) {
 +  return -1;
 +}
 +return o1.compareTo(o2);
 +  };
 +
 +  protected TableId tableId;
 +  protected TabletLocator parent;
 +  protected TreeMap metaCache = new 
TreeMap<>(END_ROW_COMPARATOR);
 +  protected TabletLocationObtainer locationObtainer;
 +  private TabletServerLockChecker lockChecker;
 +  protected Text lastTabletRow;
 +
 +  private TreeSet badExtents = new TreeSet<>();
 +  private ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();
 +  private final Lock rLock = rwLock.readLock();
 +  private final Lock wLock = rwLock.writeLock();
 +
 +  public interface TabletLocationObtainer {
 +/**
 + * @return null when unable to read information successfully
 + */
 +TabletLocations lookupTablet(ClientContext context, TabletLocation src, 
Text row, Text stopRow,
 +TabletLocator parent) throws AccumuloSecurityException, 
AccumuloException;
 +
 +List lookupTablets(ClientContext context, String tserver,
 +Map> map, TabletLocator parent)
 +throws AccumuloSecurityException, 

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

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

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

commit a748ac9719aa7306c418e3d7759a74fcba8b2ce8
Merge: 4123f33ab3 88b75633f7
Author: Christopher Tubbs 
AuthorDate: Wed Jan 18 05:11:50 2023 -0500

Merge branch '1.10' into 2.1

 NOTICE  | 2 +-
 assemble/src/main/resources/NOTICE  | 2 +-
 server/native/src/main/resources/NOTICE | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --cc NOTICE
index d57731eeea,c40baf2839..2fb17fa5e8
--- a/NOTICE
+++ b/NOTICE
@@@ -1,5 -1,5 +1,5 @@@
  Apache Accumulo
- Copyright 2011-2022 The Apache Software Foundation
+ Copyright 2011-2023 The Apache Software Foundation
  
  This product includes software developed at
 -The Apache Software Foundation (http://www.apache.org/).
 +The Apache Software Foundation (https://www.apache.org/).
diff --cc assemble/src/main/resources/NOTICE
index 90d79029cf,3b8d4c837e..2642465e77
--- a/assemble/src/main/resources/NOTICE
+++ b/assemble/src/main/resources/NOTICE
@@@ -1,8 -1,8 +1,8 @@@
  Apache Accumulo
- Copyright 2011-2022 The Apache Software Foundation
+ Copyright 2011-2023 The Apache Software Foundation
  
  This product includes software developed at
 -The Apache Software Foundation (http://www.apache.org/).
 +The Apache Software Foundation (https://www.apache.org/).
  
  **
  
diff --cc server/native/src/main/resources/NOTICE
index 6641dec754,bef3673a3b..eaa93c66fb
--- a/server/native/src/main/resources/NOTICE
+++ b/server/native/src/main/resources/NOTICE
@@@ -1,5 -1,5 +1,5 @@@
  Apache Accumulo Native Libraries
- Copyright 2011-2022 The Apache Software Foundation
+ Copyright 2011-2023 The Apache Software Foundation
  
  This product includes software developed at
 -The Apache Software Foundation (http://www.apache.org/).
 +The Apache Software Foundation (https://www.apache.org/).



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

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

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

commit a2374bed3bca710a6e3fd4bcc2f679312bb8ff40
Merge: 5b4fe693dd 18c4f1ab71
Author: Christopher Tubbs 
AuthorDate: Tue Dec 13 15:46:29 2022 -0500

Merge branch '1.10' into 2.1

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




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

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

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

commit 1cdcb1a11c0191fd2532824a2539dbb407b991c0
Merge: d29c3e99ed 5548c9289a
Author: Christopher Tubbs 
AuthorDate: Sun Nov 6 14:27:28 2022 -0500

Merge branch '1.10' into 2.1




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

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

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

commit d29c3e99edd42cbc25085e4ef4d94b1b25a18d1d
Merge: d5a35f2f59 061ddc5fd2
Author: Christopher Tubbs 
AuthorDate: Sat Nov 5 10:33:46 2022 -0400

Merge branch '1.10' into 2.1

(Converge history only; no changes to the 2.1 branch)




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

2022-05-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 cdc957f222849a110d395addcfb0303109257096
Merge: ed5e188a92 c55821213f
Author: Christopher Tubbs 
AuthorDate: Tue May 17 17:10:02 2022 -0400

Merge branch '1.10'




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

2022-02-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 810db8e9dcdda0b6a06bac7e769e5d5e22af0fca
Merge: 7088cde e628166
Author: Christopher Tubbs 
AuthorDate: Sun Feb 13 10:50:06 2022 -0500

Merge branch '1.10'

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

diff --cc pom.xml
index 6cc0c70,3cb1869..c1e8f00
--- a/pom.xml
+++ b/pom.xml
@@@ -142,8 -144,10 +142,8 @@@
  3.5.0
  2.0.9
  
- 
2020-12-17T22:06:50Z
+ 
2022-02-08T14:59:16Z
  true
 -
 -false
  1.7.35
  
source-release-tar
  


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

2022-02-07 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 b12de8ab29d005d65326d7b526cbf796541b908a
Merge: a4189d3 7eda641
Author: Christopher Tubbs 
AuthorDate: Tue Feb 8 02:23:35 2022 -0500

Merge branch '1.10'

 .../accumulo/core/metadata/MetadataLocationObtainer.java |  3 +--
 .../apache/accumulo/core/metadata/TableMetadataServicer.java |  5 +
 pom.xml  | 12 ++--
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/metadata/MetadataLocationObtainer.java
index 12c3b20,b693ac1..07b7f11
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/MetadataLocationObtainer.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/MetadataLocationObtainer.java
@@@ -245,8 -253,9 +244,8 @@@ public class MetadataLocationObtainer i
  }
  location = new Text(val.toString());
  session = new Text(colq);
 -  } else if 
(TabletsSection.TabletColumnFamily.PREV_ROW_COLUMN.equals(colf, colq)) {
 -Value prevRow = new Value(val);
 -KeyExtent ke = new KeyExtent(key.getRow(), prevRow);
 +  } else if (TabletColumnFamily.PREV_ROW_COLUMN.equals(colf, colq)) {
- ke = KeyExtent.fromMetaPrevRow(entry);
++KeyExtent ke = KeyExtent.fromMetaPrevRow(entry);
  if (location != null)
results.add(new TabletLocation(ke, location.toString(), 
session.toString()));
  else
diff --cc 
core/src/main/java/org/apache/accumulo/core/metadata/TableMetadataServicer.java
index 9667971,f29ffe2..4669ade
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/TableMetadataServicer.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/TableMetadataServicer.java
@@@ -95,12 -90,11 +93,11 @@@ abstract class TableMetadataServicer ex
colf = entry.getKey().getColumnFamily(colf);
colq = entry.getKey().getColumnQualifier(colq);
  
 -  if (TabletsSection.TabletColumnFamily.PREV_ROW_COLUMN.equals(colf, 
colq)) {
 -KeyExtent currentKeyExtent = new KeyExtent(entry.getKey().getRow(), 
entry.getValue());
 +  if (TabletColumnFamily.PREV_ROW_COLUMN.equals(colf, colq)) {
- currentKeyExtent = KeyExtent.fromMetaPrevRow(entry);
++KeyExtent currentKeyExtent = KeyExtent.fromMetaPrevRow(entry);
  tablets.put(currentKeyExtent, location);
- currentKeyExtent = null;
  location = null;
 -  } else if 
(colf.equals(TabletsSection.CurrentLocationColumnFamily.NAME)) {
 +  } else if (colf.equals(CurrentLocationColumnFamily.NAME)) {
  location = entry.getValue().toString();
}
  
diff --cc pom.xml
index 0bf98b7,209fd58..6cc0c70
--- a/pom.xml
+++ b/pom.xml
@@@ -117,9 -116,9 +117,9 @@@
  
  ${project.version}
  
- 1.68
+ 1.70
  
 -2.11.0
 +5.1.0
  
  
${project.parent.basedir}/contrib/Eclipse-Accumulo-Codestyle.xml
  
@@@ -234,54 -171,23 +234,54 @@@

  com.beust
  jcommander
- 1.81
+ 1.82


 +com.fasterxml
 +classmate
 +1.5.1
 +  
 +  
 +com.github.ben-manes.caffeine
 +caffeine
 +3.0.2
 +  
 +  
 +com.github.spotbugs
 +spotbugs-annotations
 +4.4.2
 +  
 +  
  com.google.auto.service
  auto-service
 -
 -1.0-rc3
 +1.0
 +  
 +  
 +com.google.code.findbugs
 +jsr305
 +3.0.2


  com.google.code.gson
  gson
- 2.8.6
+ 2.8.9


 +
 +com.google.errorprone
 +error_prone_annotations
 +2.6.0
 +  
 +  
 +
 +com.google.guava
 +failureaccess
 +1.0.1
 +  
 +  
  com.google.guava
  guava
 -${guava.version}
 +30.1.1-jre


  com.google.protobuf
@@@ -869,9 -775,14 +869,9 @@@

  
  
 -  org.asciidoctor
 -  asciidoctor-maven-plugin
 -  2.2.2
 -
 -
org.codehaus.mojo
build-helper-maven-plugin
-   3.2.0
+   3.3.0
  
  
org.codehaus.mojo


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

2022-02-04 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 7aa51ab6bd5ca22553bd49cfd248b5953bb5f0f2
Merge: a80cf36 bbae5c6
Author: Christopher Tubbs 
AuthorDate: Fri Feb 4 16:11:26 2022 -0500

Merge branch '1.10'

 .../org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java  | 4 ++--
 pom.xml   | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --cc 
minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
index 73e2308,000..c096e20
mode 100644,00..100644
--- 
a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
+++ 
b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
@@@ -1,949 -1,0 +1,949 @@@
 +/*
 + * 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
 + *
 + *   http://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.miniclusterImpl;
 +
 +import static java.nio.charset.StandardCharsets.UTF_8;
 +import static java.util.Objects.requireNonNull;
 +import static java.util.concurrent.TimeUnit.NANOSECONDS;
 +import static 
org.apache.accumulo.fate.util.UtilWaitThread.sleepUninterruptibly;
 +
 +import java.io.File;
 +import java.io.FileInputStream;
 +import java.io.FileWriter;
 +import java.io.IOException;
 +import java.io.InputStream;
 +import java.io.UncheckedIOException;
 +import java.net.InetSocketAddress;
 +import java.net.Socket;
 +import java.net.URI;
 +import java.nio.file.Files;
 +import java.util.ArrayList;
 +import java.util.Arrays;
 +import java.util.Collection;
 +import java.util.Collections;
 +import java.util.HashMap;
 +import java.util.HashSet;
 +import java.util.LinkedList;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Map.Entry;
 +import java.util.Properties;
 +import java.util.Set;
 +import java.util.concurrent.ExecutionException;
 +import java.util.concurrent.ExecutorService;
 +import java.util.concurrent.Executors;
 +import java.util.concurrent.FutureTask;
 +import java.util.concurrent.TimeUnit;
 +import java.util.concurrent.TimeoutException;
 +import java.util.stream.Stream;
 +
 +import org.apache.accumulo.cluster.AccumuloCluster;
 +import org.apache.accumulo.core.Constants;
 +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.AccumuloSecurityException;
 +import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 +import org.apache.accumulo.core.clientImpl.ClientContext;
 +import org.apache.accumulo.core.clientImpl.ManagerClient;
 +import 
org.apache.accumulo.core.clientImpl.thrift.ThriftNotActiveServiceException;
 +import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
 +import org.apache.accumulo.core.conf.AccumuloConfiguration;
 +import org.apache.accumulo.core.conf.ClientProperty;
 +import org.apache.accumulo.core.conf.ConfigurationCopy;
 +import org.apache.accumulo.core.conf.DefaultConfiguration;
 +import org.apache.accumulo.core.conf.Property;
 +import org.apache.accumulo.core.conf.SiteConfiguration;
 +import org.apache.accumulo.core.manager.thrift.ManagerClientService;
 +import org.apache.accumulo.core.manager.thrift.ManagerGoalState;
 +import org.apache.accumulo.core.manager.thrift.ManagerMonitorInfo;
 +import org.apache.accumulo.core.trace.TraceUtil;
 +import org.apache.accumulo.core.util.Pair;
 +import org.apache.accumulo.fate.zookeeper.ZooReaderWriter;
 +import org.apache.accumulo.fate.zookeeper.ZooUtil;
 +import org.apache.accumulo.manager.state.SetGoalState;
 +import org.apache.accumulo.minicluster.MiniAccumuloCluster;
 +import org.apache.accumulo.minicluster.ServerType;
 +import org.apache.accumulo.server.ServerContext;
 +import org.apache.accumulo.server.ServerDirs;
 +import org.apache.accumulo.server.fs.VolumeManager;
 +import org.apache.accumulo.server.init.Initialize;
 +import org.apache.accumulo.server.util.AccumuloStatus;
 +import org.apache.accumulo.server.util.PortUtils;
 +import 

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

2022-01-10 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 a6da437cae6119db739fb6698ea711bb3b8c5cfa
Merge: 3951427 e237006
Author: Christopher Tubbs 
AuthorDate: Mon Jan 10 15:25:30 2022 -0500

Merge branch '1.10'

 NOTICE  | 2 +-
 assemble/src/main/resources/NOTICE  | 2 +-
 server/native/src/main/resources/NOTICE | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)



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

2021-12-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 ea0d2f26f40e330a6dde1221441be702554459bf
Merge: 7e97566 b94ce9a
Author: Christopher Tubbs 
AuthorDate: Thu Dec 2 21:50:27 2021 -0500

Merge branch '1.10'



[accumulo] 01/01: Merge branch '1.10' into main

2021-08-05 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 8e309e987c8e565fa48ed82ac98e6990464ddbc3
Merge: 1e9ac21 bbe2de8
Author: Keith Turner 
AuthorDate: Thu Aug 5 18:53:24 2021 -0400

Merge branch '1.10' into main



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

2021-05-12 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 f59e09af6464dae7650844edecd829144952824e
Merge: 5b1c0b5 ef253ee
Author: Christopher Tubbs 
AuthorDate: Wed May 12 19:08:17 2021 -0400

Merge branch '1.10'

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

diff --cc pom.xml
index b41ac03,47441b0..958131b
--- a/pom.xml
+++ b/pom.xml
@@@ -898,10 -790,10 +898,10 @@@
  
net.revelc.code
impsort-maven-plugin
-   1.5.0
+   1.6.1

  true
 -java.,javax.,org.,com.
 +java.,javax.,jakarta.,org.,com.
  
**/thrift/*.java
  


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

2021-04-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 70e1be41ae5f73fcb669f822674a1440262fe6a9
Merge: 8dfe443 631386d
Author: Christopher Tubbs 
AuthorDate: Wed Apr 21 13:01:33 2021 -0400

Merge branch '1.10'

No-op merge of #2006 into main branch. That issue only applies to 1.10



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

2021-04-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 dd0d88eb664fc60714a7283b357a51afaad3b899
Merge: af955c8 1dc2101
Author: Christopher Tubbs 
AuthorDate: Fri Apr 16 04:11:49 2021 -0400

Merge branch '1.10'

 .github/workflows/maven-full-its.yaml  | 15 +++
 .github/workflows/maven-on-demand.yaml | 15 +++
 .github/workflows/maven.yaml   | 15 +++
 3 files changed, 45 insertions(+)

diff --cc .github/workflows/maven.yaml
index 3da4bb7,b6dcf91..5a9666d
--- a/.github/workflows/maven.yaml
+++ b/.github/workflows/maven.yaml
@@@ -79,9 -78,24 +79,24 @@@ jobs
!~/.m2/repository/org/apache/accumulo
  key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
  restore-keys: ${{ runner.os }}-m2
+ - name: Override DNS to fix IP address for hostname
+   run: |
+ ip -br addr
+ echo "'hostname -i' shows '$(hostname -i)'"
+ echo "'hostname -I' shows '$(hostname -I)'"
+ hostname_short=$(hostname -s)
+ hostname_long=$(hostname -f)
+ if ! grep -q $hostname_short /etc/hosts; then
+   actual_ip=$(ip -4 addr show dev eth0 | grep -o 'inet [0-9.]*' | cut 
-f2 -d ' ')
+   echo "Setting $hostname_long / $hostname_short to $actual_ip in 
/etc/hosts"
+   echo "$actual_ip $hostname_long $hostname_short" | sudo tee -a 
/etc/hosts
+   ip -br addr
+   echo "'hostname -i' shows '$(hostname -i)'"
+   echo "'hostname -I' shows '$(hostname -I)'"
+ fi
  - name: Build with Maven (${{ matrix.profile.name }})
timeout-minutes: 60
 -  run: mvn -B -V -e -ntp "-Dstyle.color=always" ${{ matrix.profile.args }}
 +  run: mvn -B -V -e -ntp "-Dstyle.color=always" -DskipFormat ${{ 
matrix.profile.args }}
env:
  MAVEN_OPTS: -Djansi.force=true
  - name: Upload unit test results


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

2021-04-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 ebf743c7e7f048c448803491471a53722ad783be
Merge: d68bab1 a3d5a29
Author: Christopher Tubbs 
AuthorDate: Wed Apr 14 13:51:35 2021 -0400

Merge branch '1.10'

 .github/workflows/maven-full-its.yaml  | 4 ++--
 .github/workflows/maven-on-demand.yaml | 2 +-
 .github/workflows/maven.yaml   | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --cc .github/workflows/maven-full-its.yaml
index 9a8fa58,0036a76..7eb2897
--- a/.github/workflows/maven-full-its.yaml
+++ b/.github/workflows/maven-full-its.yaml
@@@ -61,7 -60,8 +60,8 @@@ jobs
  - name: Show the first log message
run: git log -n1
  - name: Build with Maven (Fast Build)
+   timeout-minutes: 20
 -  run: mvn -B -V -e -ntp "-Dstyle.color=always" clean package 
dependency:resolve -PskipQA
 +  run: mvn -B -V -e -ntp "-Dstyle.color=always" clean package 
dependency:resolve -DskipTests -DskipFormat -DverifyFormat
env:
  MAVEN_OPTS: -Djansi.force=true
creatematrix:
diff --cc .github/workflows/maven.yaml
index 2c16fa7,d2d49e4..3da4bb7
--- a/.github/workflows/maven.yaml
+++ b/.github/workflows/maven.yaml
@@@ -51,7 -50,8 +50,8 @@@ jobs
  - name: Show the first log message
run: git log -n1
  - name: Build with Maven (Fast Build)
+   timeout-minutes: 20
 -  run: mvn -B -V -e -ntp "-Dstyle.color=always" clean package 
dependency:resolve -PskipQA
 +  run: mvn -B -V -e -ntp "-Dstyle.color=always" clean package 
dependency:resolve -DskipTests -DskipFormat -DverifyFormat
env:
  MAVEN_OPTS: -Djansi.force=true
# more complete builds with tests
@@@ -60,11 -60,9 +60,10 @@@
  strategy:
matrix:
  profile:
 -  - {name: 'Hadoop2', args: 'verify javadoc:jar -DskipITs'}
 -  - {name: 'Hadoop3', args: 'verify javadoc:jar -DskipITs 
-Dhadoop.profile=3'}
 +  - {name: 'unit-tests',args: 'verify -PskipQA -DskipTests=false'}
 +  - {name: 'qa-checks', args: 'verify javadoc:jar -Psec-bugs 
-DskipTests -Dspotbugs.timeout=360'}
 +  - {name: 'hadoop-compat', args: 'package -DskipTests 
-Dhadoop.version=3.0.3'}
fail-fast: false
- timeout-minutes: 60
  runs-on: ubuntu-latest
  steps:
  - uses: actions/checkout@v2
@@@ -81,7 -79,8 +80,8 @@@
  key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
  restore-keys: ${{ runner.os }}-m2
  - name: Build with Maven (${{ matrix.profile.name }})
+   timeout-minutes: 60
 -  run: mvn -B -V -e -ntp "-Dstyle.color=always" ${{ matrix.profile.args }}
 +  run: mvn -B -V -e -ntp "-Dstyle.color=always" -DskipFormat ${{ 
matrix.profile.args }}
env:
  MAVEN_OPTS: -Djansi.force=true
  - name: Upload unit test results


[accumulo] 01/01: Merge branch '1.10' into main

2021-03-08 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 0a09c287e48485a4909fcdb5343db269898eec80
Merge: 51e18e2 05a4fc0
Author: Christopher Tubbs 
AuthorDate: Mon Mar 8 07:51:45 2021 -0500

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

2021-02-04 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 df85cfe6a51b2e2a025f7a6904910da4ac328e84
Merge: 675e41a 2dacbc3
Author: Christopher Tubbs 
AuthorDate: Thu Feb 4 09:25:15 2021 -0500

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

2021-01-13 Thread brianloss
This is an automated email from the ASF dual-hosted git repository.

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

commit bdcab448b5c4fb44118197615fe2e231816da01c
Merge: 9f549b2 0187567
Author: Brian Loss 
AuthorDate: Wed Jan 13 11:34:09 2021 -0500

Merge branch '1.10' into main

 .../apache/accumulo/fate/util/LoggingRunnable.java | 36 --
 1 file changed, 26 insertions(+), 10 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/fate/util/LoggingRunnable.java
index aafe45d,000..dfe1bf5
mode 100644,00..100644
--- a/core/src/main/java/org/apache/accumulo/fate/util/LoggingRunnable.java
+++ b/core/src/main/java/org/apache/accumulo/fate/util/LoggingRunnable.java
@@@ -1,56 -1,0 +1,72 @@@
 +/*
 + * 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
 + *
 + *   http://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.fate.util;
 +
 +import java.util.Date;
 +
 +import org.slf4j.Logger;
 +
 +public class LoggingRunnable implements Runnable {
 +  private Runnable runnable;
 +  private Logger log;
 +
 +  public LoggingRunnable(Logger log, Runnable r) {
 +this.runnable = r;
 +this.log = log;
 +  }
 +
 +  @Override
 +  public void run() {
 +try {
 +  runnable.run();
 +} catch (Throwable t) {
++  boolean errorOnRun = (t instanceof Error);
 +  try {
 +log.error("Thread \"{}\" died {}", Thread.currentThread().getName(), 
t.getMessage(), t);
 +  } catch (Throwable t2) {
- // maybe the logging system is screwed up OR there is a bug in the 
exception, like
- // t.getMessage() throws a NPE
- System.err.println(
- "ERROR " + new Date() + " Failed to log message about thread 
death " + t2.getMessage());
- t2.printStackTrace();
- 
- // try to print original exception
- System.err
- .println("ERROR " + new Date() + " Exception that failed to log : 
" + t.getMessage());
- t.printStackTrace();
++boolean errorOnLog = (t2 instanceof Error);
++try {
++  // maybe the logging system is screwed up OR there is a bug in the 
exception, like
++  // t.getMessage() throws a NPE
++  System.err.println("ERROR " + new Date() + " Failed to log message 
about thread death "
++  + t2.getMessage());
++  t2.printStackTrace();
++
++  // try to print original exception
++  System.err
++  .println("ERROR " + new Date() + " Exception that failed to log 
: " + t.getMessage());
++  t.printStackTrace();
++} catch (Throwable t3) {
++  // If printing to System.err didn't work then don't try to log that 
exception but do
++  // re-throw it if it's the most serious failure we've seen so far.
++  boolean errorOnPrint = (t3 instanceof Error);
++  if (errorOnPrint && !errorOnLog && !errorOnRun)
++throw t3;
++}
++
++// If we got a more serious failure when attempting to log the 
message,
++// then throw that instead of the original exception.
++if (errorOnLog && !errorOnRun)
++  throw t2;
 +  }
++  throw t;
 +}
 +  }
 +
 +}



[accumulo] 01/01: Merge branch '1.10' into main

2021-01-07 Thread brianloss
This is an automated email from the ASF dual-hosted git repository.

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

commit 0f7b66dcf9391ed49c4b79d85227d1c0771b6ff1
Merge: 81e36d0 e6bba1c
Author: Brian Loss 
AuthorDate: Thu Jan 7 16:51:14 2021 -0500

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

2020-12-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 658cd00f0448e48c942df21dc526049f33901f62
Merge: 9a7749f 6bf3f40
Author: Christopher Tubbs 
AuthorDate: Wed Dec 30 13:11:44 2020 -0500

Merge branch '1.10' into main

 .../org/apache/accumulo/master/replication/FinishedWorkUpdater.java   | 4 ++--
 .../accumulo/master/replication/RemoveCompleteReplicationRecords.java | 2 +-
 .../org/apache/accumulo/master/replication/ReplicationDriver.java | 2 +-
 .../main/java/org/apache/accumulo/master/replication/WorkDriver.java  | 2 +-
 .../main/java/org/apache/accumulo/master/replication/WorkMaker.java   | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --cc 
server/manager/src/main/java/org/apache/accumulo/master/replication/FinishedWorkUpdater.java
index 57e4118,000..0559b31
mode 100644,00..100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/master/replication/FinishedWorkUpdater.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/master/replication/FinishedWorkUpdater.java
@@@ -1,189 -1,0 +1,189 @@@
 +/*
 + * 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
 + *
 + *   http://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.master.replication;
 +
 +import java.io.IOException;
 +import java.util.Collections;
 +import java.util.HashMap;
 +import java.util.Map;
 +import java.util.Map.Entry;
 +import java.util.SortedMap;
 +
 +import org.apache.accumulo.core.client.AccumuloClient;
 +import org.apache.accumulo.core.client.BatchScanner;
 +import org.apache.accumulo.core.client.BatchWriter;
 +import org.apache.accumulo.core.client.IteratorSetting;
 +import org.apache.accumulo.core.client.MutationsRejectedException;
 +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.iterators.user.WholeRowIterator;
 +import org.apache.accumulo.core.protobuf.ProtobufUtil;
 +import org.apache.accumulo.core.replication.ReplicationSchema.StatusSection;
 +import org.apache.accumulo.core.replication.ReplicationSchema.WorkSection;
 +import org.apache.accumulo.core.replication.ReplicationTable;
 +import org.apache.accumulo.core.replication.ReplicationTableOfflineException;
 +import org.apache.accumulo.core.replication.ReplicationTarget;
 +import org.apache.accumulo.server.replication.StatusUtil;
 +import org.apache.accumulo.server.replication.proto.Replication.Status;
 +import org.apache.hadoop.io.Text;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +import com.google.protobuf.InvalidProtocolBufferException;
 +
 +/**
 + * Update the status record in the replication table with work that has been 
replicated to each
 + * configured peer.
 + */
 +public class FinishedWorkUpdater implements Runnable {
 +  private static final Logger log = 
LoggerFactory.getLogger(FinishedWorkUpdater.class);
 +
 +  private final AccumuloClient client;
 +
 +  public FinishedWorkUpdater(AccumuloClient client) {
 +this.client = client;
 +  }
 +
 +  @Override
 +  public void run() {
- log.debug("Looking for finished replication work");
++log.trace("Looking for finished replication work");
 +
 +if (!ReplicationTable.isOnline(client)) {
-   log.debug("Replication table is not yet online, will retry");
++  log.trace("Replication table is not yet online, will retry");
 +  return;
 +}
 +
 +BatchScanner bs;
 +BatchWriter replBw;
 +try {
 +  bs = ReplicationTable.getBatchScanner(client, 4);
 +  replBw = ReplicationTable.getBatchWriter(client);
 +} catch (ReplicationTableOfflineException e) {
 +  log.debug("Table is no longer online, will retry");
 +  return;
 +}
 +
 +IteratorSetting cfg = new IteratorSetting(50, WholeRowIterator.class);
 +bs.addScanIterator(cfg);
 +WorkSection.limit(bs);
 +bs.setRanges(Collections.singleton(new Range()));
 +
 +try {
 +  for (Entry serializedRow : bs) {
 +SortedMap wholeRow;
 +try {
 +  wholeRow = 

[accumulo] 01/01: Merge branch '1.10' into main

2020-12-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 9a7749f397a410b8c8692d308ccb24ae499709b5
Merge: 20ac9fc 3e3b199
Author: Christopher Tubbs 
AuthorDate: Tue Dec 29 00:41:28 2020 -0500

Merge branch '1.10' into main

 NOTICE  | 2 +-
 assemble/src/main/resources/NOTICE  | 2 +-
 server/native/src/main/resources/NOTICE | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)




[accumulo] 01/01: Merge branch '1.10' into main

2020-12-22 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 6ee740fd9dc034d19ab5781ac7813201d1c6c7a9
Merge: dc7277b cd8710a
Author: Christopher Tubbs 
AuthorDate: Tue Dec 22 14:22:09 2020 -0500

Merge branch '1.10' into main

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




[accumulo] 01/01: Merge branch '1.10' into main

2020-12-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 243e5771b03281c64115a625da83a20cd586adde
Merge: 185fc90 0773baa
Author: Christopher Tubbs 
AuthorDate: Wed Dec 16 23:23:29 2020 -0500

Merge branch '1.10' into main

 .../accumulo/test/functional/GcMetricsIT.java  | 268 +++--
 .../accumulo/test/functional/MasterMetricsIT.java  |  11 +-
 .../accumulo/test/metrics/MetricsFileTailer.java   |  27 ++-
 .../resources/hadoop-metrics2-accumulo.properties  |   2 +-
 .../test/metrics/MetricsFileTailerTest.java|  49 ++--
 5 files changed, 133 insertions(+), 224 deletions(-)

diff --cc 
test/src/main/java/org/apache/accumulo/test/functional/GcMetricsIT.java
index 94884b4,120ac35..5d76a21
--- a/test/src/main/java/org/apache/accumulo/test/functional/GcMetricsIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/GcMetricsIT.java
@@@ -18,7 -18,10 +18,9 @@@
   */
  package org.apache.accumulo.test.functional;
  
+ import static java.util.stream.Collectors.toMap;
  import static org.junit.Assert.assertTrue;
 -import static org.junit.Assume.assumeFalse;
+ import static org.junit.Assume.assumeTrue;
  
  import java.util.Collections;
  import java.util.Map;
@@@ -27,14 -30,14 +29,14 @@@ import java.util.TreeMap
  import java.util.concurrent.TimeUnit;
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;
+ import java.util.stream.Stream;
  
- import org.apache.accumulo.core.client.Accumulo;
- import org.apache.accumulo.core.client.AccumuloClient;
  import org.apache.accumulo.core.conf.Property;
  import org.apache.accumulo.gc.metrics.GcMetrics;
 -import org.apache.accumulo.minicluster.impl.MiniAccumuloConfigImpl;
 +import org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl;
  import org.apache.accumulo.test.metrics.MetricsFileTailer;
  import org.apache.hadoop.conf.Configuration;
+ import org.junit.After;
  import org.junit.Before;
  import org.junit.Test;
  import org.slf4j.Logger;
@@@ -73,137 -70,38 +69,36 @@@ public class GcMetricsIT extends Config
  return 4 * 60;
}
  
-   @Test
-   public void gcMetricsPublished() throws InterruptedException {
- boolean gcMetricsEnabled =
- 
cluster.getSiteConfiguration().getBoolean(Property.GC_METRICS_ENABLED);
- 
- if (!gcMetricsEnabled) {
-   log.info("gc metrics are disabled with GC_METRICS_ENABLED=true");
-   return;
- }
- 
- log.debug("Client started, properties:{}", accumuloClient.properties());
- 
- MetricsFileTailer gcTail = new MetricsFileTailer("accumulo.sink.file-gc");
- Thread t1 = new Thread(gcTail);
- t1.start();
- 
- // uncomment for manual jmx / jconsole validation - not for automated 
testing
- // Thread.sleep(320_000);
- 
- try {
- 
-   var updateTimestamp = System.currentTimeMillis();
+   private final MetricsFileTailer gcTail = new 
MetricsFileTailer("accumulo.sink.file-gc");
  
-   // Get next update after current time
-   LineUpdate firstUpdate = waitForUpdate(updateTimestamp, gcTail);
- 
-   Map firstSeenMap = parseLine(firstUpdate.getLine());
- 
-   log.debug("L:{}", firstUpdate.getLine());
-   log.debug("M:{}", firstSeenMap);
- 
-   assertTrue(lookForExpectedKeys(firstSeenMap));
-   sanity(updateTimestamp, firstSeenMap);
- 
-   // Get next update after the first one
-   updateTimestamp = firstUpdate.getLastUpdate();
-   LineUpdate nextUpdate = waitForUpdate(updateTimestamp, gcTail);
- 
-   Map updateSeenMap = parseLine(nextUpdate.getLine());
- 
-   log.debug("Line received:{}", nextUpdate.getLine());
-   log.debug("Mapped values:{}", updateSeenMap);
- 
-   assertTrue(lookForExpectedKeys(updateSeenMap));
-   sanity(updateTimestamp, updateSeenMap);
- 
-   validate(firstSeenMap, updateSeenMap);
- 
- } catch (Exception ex) {
-   log.debug("reads", ex);
- }
+   @Before
+   public void startTailer() {
+ gcTail.startDaemonThread();
}
  
-   /**
-* Validate metrics for consistency withing a run cycle.
-*
-* @param values
-*  map of values from one run cycle.
-*/
-   private void sanity(final long testStart, final Map values) {
- 
- long start = values.get("AccGcStarted");
- long finished = values.get("AccGcFinished");
- 
- log.debug("test start: {}, gc start: {}, gc finished: {}", testStart, 
start, finished);
- 
- assertTrue(start >= testStart);
- assertTrue(finished >= start);
- 
- start = values.get("AccGcWalStarted");
- finished = values.get("AccGcWalFinished");
- 
- log.debug("test start: {}, walgc start: {}, walgc finished: {}", 
testStart, start, finished);
- 
- assertTrue(start >= testStart);
- assertTrue(finished >= start);
- 
+   @After
+   public void stopTailer() {
+ gcTail.close();
}
  
-   /**
-* A series of sanity checks for the metrics 

[accumulo] 01/01: Merge branch '1.10' into main

2020-12-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 357c54c677b662497f4d417de88e14a38fe18c7a
Merge: 1750cd7 d4fd27f
Author: Christopher Tubbs 
AuthorDate: Tue Dec 15 14:30:06 2020 -0500

Merge branch '1.10' into main

 .../org/apache/accumulo/core/util/UnsynchronizedBufferTest.java | 6 +++---
 core/src/test/java/org/apache/accumulo/fate/util/RetryTest.java | 5 ++---
 .../src/test/java/org/apache/accumulo/tserver/InMemoryMapTest.java  | 4 ++--
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --cc 
core/src/test/java/org/apache/accumulo/core/util/UnsynchronizedBufferTest.java
index 93c2b89,b842f3c..2d44494
--- 
a/core/src/test/java/org/apache/accumulo/core/util/UnsynchronizedBufferTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/util/UnsynchronizedBufferTest.java
@@@ -52,10 -50,11 +52,10 @@@ public class UnsynchronizedBufferTest 
  assertEquals("34567", new String(buf, UTF_8));
  
  buf = new byte[6];
 -
 +// the byte buffer has the extra byte, but should not be able to read 
it...
- final UnsynchronizedBuffer.Reader ub2 = ub;
- final byte[] buf2 = buf;
- assertThrows(ArrayIndexOutOfBoundsException.class, () -> 
ub2.readBytes(buf2));
+ final UnsynchronizedBuffer.Reader finalUb = ub;
+ final byte[] finalBuf = buf;
 -assertThrows("the byte buffer has the extra byte, but should not be able 
to read it",
 -ArrayIndexOutOfBoundsException.class, () -> 
finalUb.readBytes(finalBuf));
++assertThrows(ArrayIndexOutOfBoundsException.class, () -> 
finalUb.readBytes(finalBuf));
}
  
@Test
diff --cc core/src/test/java/org/apache/accumulo/fate/util/RetryTest.java
index 745d268,000..72e3c9b
mode 100644,00..100644
--- a/core/src/test/java/org/apache/accumulo/fate/util/RetryTest.java
+++ b/core/src/test/java/org/apache/accumulo/fate/util/RetryTest.java
@@@ -1,331 -1,0 +1,330 @@@
 +/*
 + * 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
 + *
 + *   http://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.fate.util;
 +
 +import static java.util.concurrent.TimeUnit.DAYS;
 +import static java.util.concurrent.TimeUnit.HOURS;
 +import static java.util.concurrent.TimeUnit.MILLISECONDS;
 +import static java.util.concurrent.TimeUnit.MINUTES;
 +import static java.util.concurrent.TimeUnit.NANOSECONDS;
 +import static org.junit.Assert.assertEquals;
 +import static org.junit.Assert.assertFalse;
 +import static org.junit.Assert.assertThrows;
 +import static org.junit.Assert.assertTrue;
 +
 +import java.util.concurrent.TimeUnit;
 +
 +import org.apache.accumulo.fate.util.Retry.NeedsLogInterval;
 +import org.apache.accumulo.fate.util.Retry.NeedsMaxWait;
 +import org.apache.accumulo.fate.util.Retry.NeedsRetries;
 +import org.apache.accumulo.fate.util.Retry.NeedsRetryDelay;
 +import org.apache.accumulo.fate.util.Retry.NeedsTimeIncrement;
 +import org.apache.accumulo.fate.util.Retry.RetryFactory;
 +import org.easymock.EasyMock;
 +import org.junit.Before;
 +import org.junit.Test;
 +import org.slf4j.Logger;
 +
 +public class RetryTest {
 +
 +  private Retry retry;
 +  private static final long INITIAL_WAIT = 1000;
 +  private static final long WAIT_INC = 1000;
 +  private static final double BACKOFF_FACTOR = 1.0;
 +  private static final long MAX_RETRIES = 5;
 +  private static final long LOG_INTERVAL = 1000;
 +  private Retry unlimitedRetry;
 +  private static final TimeUnit MS = MILLISECONDS;
 +
 +  @Before
 +  public void setup() {
 +retry = Retry.builder().maxRetries(MAX_RETRIES).retryAfter(INITIAL_WAIT, 
MS)
 +.incrementBy(WAIT_INC, MS).maxWait(MAX_RETRIES * WAIT_INC, 
MS).backOffFactor(BACKOFF_FACTOR)
 +.logInterval(LOG_INTERVAL, MS).createRetry();
 +unlimitedRetry = 
Retry.builder().infiniteRetries().retryAfter(INITIAL_WAIT, MS)
 +.incrementBy(WAIT_INC, MS).maxWait(MAX_RETRIES * WAIT_INC, 
MS).backOffFactor(BACKOFF_FACTOR)
 +.logInterval(LOG_INTERVAL, MS).createRetry();
 +  }
 +
 +  @Test
 +  public void canRetryDoesntAlterState() {
 +for (int i = 0; i < MAX_RETRIES + 1; i++) {
 +  assertTrue(retry.canRetry());
 +}
 +  }
 +
 +  @Test
 +  

[accumulo] 01/01: Merge branch '1.10' into main

2020-12-09 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 848c60a324cf127393438fc4a0302028f9c154b4
Merge: 3b23f6a 56142a8
Author: Christopher Tubbs 
AuthorDate: Wed Dec 9 11:49:34 2020 -0500

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

2020-11-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 27ea8a1e21428eb8c0d0fe8eb4bf5241015a8721
Merge: 0cd52e9 7e2e09e
Author: Christopher Tubbs 
AuthorDate: Thu Nov 26 14:14:27 2020 -0500

Merge branch '1.10' into main

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

diff --cc pom.xml
index 8dd884d,6606c0f..b0b4497
--- a/pom.xml
+++ b/pom.xml
@@@ -1342,9 -1066,9 +1342,8 @@@
  true
  true
  true
- true
  true
  true
 -true
  true
  true
  true



[accumulo] 01/01: Merge branch '1.10' into main

2020-11-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 0cd52e9854f9972550f2bb494697d39c1cd5665e
Merge: f279ae8 64e01c8
Author: Christopher Tubbs 
AuthorDate: Wed Nov 25 11:58:17 2020 -0500

Merge branch '1.10' into main

 pom.xml | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)




[accumulo] 01/01: Merge branch '1.10' into main

2020-10-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 c4e47bab9d86eca894317efcb19fa11e6225425f
Merge: 353c611 51dde75
Author: Christopher Tubbs 
AuthorDate: Wed Oct 28 12:57:21 2020 -0400

Merge branch '1.10' into main

 .github/workflows/maven.yaml  |  2 +-
 minicluster/pom.xml   | 13 +
 pom.xml   | 18 --
 test/src/test/scripts/run-test.sh |  2 +-
 4 files changed, 31 insertions(+), 4 deletions(-)

diff --cc .github/workflows/maven.yaml
index 279fade,09839b9..c14acb8
--- a/.github/workflows/maven.yaml
+++ b/.github/workflows/maven.yaml
@@@ -60,9 -60,8 +60,9 @@@ jobs
  strategy:
matrix:
  profile:
-   - {name: 'unit-tests',args: 'verify -PskipQA -DskipTests=false 
-DforkCount=1C'}
 -  - {name: 'Hadoop2', args: 'verify javadoc:jar -DskipITs'}
 -  - {name: 'Hadoop3', args: 'verify javadoc:jar -DskipITs 
-Dhadoop.profile=3'}
++  - {name: 'unit-tests',args: 'verify -PskipQA -DskipTests=false'}
 +  - {name: 'qa-checks', args: 'verify javadoc:jar -Psec-bugs 
-DskipTests=true -Dspotbugs.timeout=360'}
 +  - {name: 'hadoop-compat', args: 'package -DskipTests 
-Dhadoop.version=3.0.3'}
fail-fast: false
  timeout-minutes: 60
  runs-on: ubuntu-latest
diff --cc pom.xml
index f067b23,a794f6c..ba39330
--- a/pom.xml
+++ b/pom.xml
@@@ -122,21 -122,20 +122,20 @@@
  
  
${project.parent.basedir}/contrib/Eclipse-Accumulo-Codestyle.xml
  
+ 1
  
- 
- 1
 -
 -14.0.1
 -2.6.5
 +3.2.1
 +2.6.1
  4.1.0-incubating
 -3.1.0-incubating
 +3.2.0-incubating
  false
 -
 -9.2.26.v20180806
 -8
 -1.8
 -1.8
 -3.5.0
 +3.0.1-b06
 +2.3.0.1
 +2.30.1
 +9.4.27.v20200227
 +11
 +11
 +11
  
  
true
  2.0.7
@@@ -1607,25 -1368,42 +1609,37 @@@
  
src/main/spotbugs/exclude-filter.xml

  
 -
  
 -  hadoop-default
 -  
 -
 -  !hadoop.profile
 -
 -  
 -  
 -2
 -  
 -
 -
 -
 -  hadoop3
 -  
 -
 -  hadoop.profile
 -  3
 -
 -  
 -  
 -3.0.3
 -  
 +  sec-bugs
 +  
 +
 +  
 +com.github.spotbugs
 +spotbugs-maven-plugin
 +
 +  
 +
 +  com.h3xstream.findsecbugs
 +  findsecbugs-plugin
 +  1.8.0
 +
 +  
 +
 +  
 +
 +  
  
+ 
+   forkCount
+   
+ 
+   forkCount
+ 
+   
+   
+ ${forkCount}
+ ${forkCount}
+   
+ 

  



[accumulo] 01/01: Merge branch '1.10' into main

2020-10-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 0dd13dd38022414500dbb4b379f5eabed4c62e22
Merge: 5c365f9 2ef1477
Author: Christopher Tubbs 
AuthorDate: Thu Oct 15 13:33:30 2020 -0400

Merge branch '1.10' into main

No change in main branch




[accumulo] 01/01: Merge branch '1.10' into main

2020-10-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 75b19431a1b5e3573a9a54d3874d745f100d3297
Merge: 3dae7d3 ecfa294
Author: Christopher Tubbs 
AuthorDate: Wed Oct 14 15:08:13 2020 -0400

Merge branch '1.10' into main

 assemble/bin/accumulo-util | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --cc assemble/bin/accumulo-util
index b0533c1,000..0280999
mode 100755,00..100755
--- a/assemble/bin/accumulo-util
+++ b/assemble/bin/accumulo-util
@@@ -1,220 -1,0 +1,220 @@@
 +#! /usr/bin/env bash
 +#
 +# 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
 +#
 +#   http://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.
 +#
 +
 +function print_usage {
 +  cat < ( ...)
 +
 +Commands:
 +  build-nativeBuilds Accumulo native libraries
 +  dump-zooDumps data in ZooKeeper
 +  gen-monitor-certGenerates Accumulo monitor certficate
 +  load-jars-hdfs  Loads Accumulo jars in lib/ to HDFS for VFS classloader
 +  
 +EOF
 +  exit 1
 +}
 +
 +function build_native() {
 +  final_native_target="$basedir/lib/native"
 +  if [[ -f "$final_native_target/libaccumulo.so" ]] || [[ -f 
"$final_native_target/libaccumulo.dylib" ]]; then
 +echo "Accumulo native library already exists in $final_native_target"
 +exit 0
 +  fi
 +
 +  native_tarballs=("$basedir"/lib/accumulo-native-*.tar.gz)
 +  if (( ${#native_tarballs[@]} > 1 )); then
 +echo "Found multiple native tar.gz files: ${native_tarballs[*]}"
 +exit 1
 +  fi
 +
 +  if [[ ! -f ${native_tarballs[0]} ]]; then
 +echo "Could not find native code artifact: ${native_tarballs[0]}" 1>&2
 +exit 1
 +  fi
 +
 +  # Make the destination for the native library
 +  mkdir -p "${final_native_target}" || exit 1
 +
 +  # Make a directory for us to unpack the native source into
-   TMP_DIR=$(mktemp -d /tmp/accumulo-native.) || exit 1
++  TMP_DIR=$(mktemp -d /tmp/accumulo-native.XX) || exit 1
 +
 +  # Unpack the tarball to our temp directory
 +  if ! tar xf "${native_tarballs[0]}" -C "${TMP_DIR}"
 +  then
 +  echo "Failed to unpack native tarball to ${TMP_DIR}"
 +  exit 1
 +  fi
 +
 +  # Move to the first (only) directory in our unpacked tarball
 +  native_dir=$(find "${TMP_DIR}" -maxdepth 1 -mindepth 1 -type d)
 +
 +  cd "${native_dir}" || exit 1
 +
 +  # Make the native library
 +  export USERFLAGS="$*"
 +  make || { echo 'Make failed!'; exit 1; }
 +
 +  # "install" the artifact
 +  cp libaccumulo.* "${final_native_target}" || exit 1
 +
 +  # Clean up our temp directory
 +  rm -rf "${TMP_DIR}"
 +
 +  echo "Successfully installed native library"
 +}
 +
 +function gen_monitor_cert() {
 +  if [[ -z "$JAVA_HOME" || ! -d "$JAVA_HOME" ]]; then
 +echo "JAVA_HOME=${JAVA_HOME} must be set and exist"
 +exit 1
 +  fi
 +
 +  ALIAS="default"
 +  KEYPASS=$(LC_CTYPE=C tr -dc '#-~' < /dev/urandom | tr -d '<>&' | head -c 20)
 +  STOREPASS=$(LC_CTYPE=C tr -dc '#-~' < /dev/urandom | tr -d '<>&' | head -c 
20)
 +  KEYSTOREPATH="${conf}/keystore.jks"
 +  TRUSTSTOREPATH="${conf}/cacerts.jks"
 +  CERTPATH="${conf}/server.cer"
 +
 +  if [[ -e "$KEYSTOREPATH" ]]; then
 + rm -i "$KEYSTOREPATH"
 + if [[ -e "$KEYSTOREPATH" ]]; then
 +echo "KeyStore already exists, exiting"
 +exit 1
 + fi
 +  fi
 +  if [[ -e "$TRUSTSTOREPATH" ]]; then
 + rm -i "$TRUSTSTOREPATH"
 + if [[ -e "$TRUSTSTOREPATH" ]]; then
 +echo "TrustStore already exists, exiting"
 +exit 2
 + fi
 +  fi
 +  if [[ -e "$CERTPATH" ]]; then
 + rm -i "$CERTPATH"
 + if [[ -e "$CERTPATH" ]]; then
 +echo "Certificate already exists, exiting"
 +exit 3
 +fi
 +  fi
 +
 +  "${JAVA_HOME}/bin/keytool" -genkey -alias "$ALIAS" -keyalg RSA -keypass 
"$KEYPASS" -storepass "$KEYPASS" -keystore "$KEYSTOREPATH"
 +  "${JAVA_HOME}/bin/keytool" -export -alias "$ALIAS" -storepass "$KEYPASS" 
-file "$CERTPATH" -keystore "$KEYSTOREPATH"
 +  "${JAVA_HOME}/bin/keytool" -import -v -trustcacerts -alias "$ALIAS" -file 
"$CERTPATH" -keystore "$TRUSTSTOREPATH" -storepass "$STOREPASS" <<< "yes"
 +
 +  echo
 +  echo "keystore and truststore generated.  now add the following to 
accumulo.properties:"
 +  echo
 +  echo 

[accumulo] 01/01: Merge branch '1.10' into main

2020-10-09 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 70a73b1aa8ac435a87aeb1fd2c8daf46b176c204
Merge: f1f7812 1a801bd
Author: Christopher Tubbs 
AuthorDate: Fri Oct 9 16:37:47 2020 -0400

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

2020-10-09 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 f1f7812fbd7872282998ce2d460fa8966cd99c39
Merge: 542dfd5 64372ba
Author: Christopher Tubbs 
AuthorDate: Fri Oct 9 16:20:47 2020 -0400

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

2020-10-09 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 542dfd5d6daac813ac8efe6681c91b345b521dbd
Merge: 9b537ca 49b7cd6
Author: Christopher Tubbs 
AuthorDate: Fri Oct 9 16:15:48 2020 -0400

Merge branch '1.10' into main

 .github/workflows/maven-full-its.yaml  | 15 +++
 .github/workflows/maven-on-demand.yaml | 11 +++
 .github/workflows/maven.yaml   |  5 +
 3 files changed, 31 insertions(+)




[accumulo] 01/01: Merge branch '1.10' into main

2020-10-07 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 80ee9ca8092dc4bf07aa1a046d6e668f0e16300e
Merge: 6281a33 314f2aa
Author: Christopher Tubbs 
AuthorDate: Wed Oct 7 13:21:46 2020 -0400

Merge branch '1.10' into main

 assemble/build.sh | 157 +++---
 pom.xml   |   6 +--
 2 files changed, 116 insertions(+), 47 deletions(-)

diff --cc pom.xml
index 3f62ad3,84101f1..8f7f1b1
--- a/pom.xml
+++ b/pom.xml
@@@ -118,11 -118,9 +118,9 @@@
  
  1.66
  
 -2.11.0
 +4.3.0
  
  
${project.parent.basedir}/contrib/Eclipse-Accumulo-Codestyle.xml
- 
- 
  
  
  
@@@ -941,12 -683,12 +939,12 @@@
org.apache.maven.plugins
maven-release-plugin

- -P !autoformat,thrift,sunny -Dtimeout.factor=2 
${extraReleaseArguments}
+ -P !autoformat,thrift -DskipTests
  true
  clean deploy
- clean verify
+ clean package
  rel/@{project.version}
 -
apache-release,accumulo-release,skip-plugin-its-with-skipTests
 +apache-release,accumulo-release
  false
  false
  true



[accumulo] 01/01: Merge branch '1.10' into main

2020-09-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 550b494418024b7ff23a1a6cd78d25192c903fd3
Merge: eecdd59 9a65fe0
Author: Christopher Tubbs 
AuthorDate: Tue Sep 29 16:11:07 2020 -0400

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

2020-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 b3cc58a5a39a8125f30a71f2d6cb4828dc980762
Merge: 21c7a0b c21396d
Author: Christopher Tubbs 
AuthorDate: Mon Sep 28 17:24:45 2020 -0400

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

2020-09-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 90b9cacb5bd5b6dc15c7000475e10e55007094a5
Merge: c997ab7 8ff6765
Author: Christopher Tubbs 
AuthorDate: Wed Sep 2 22:30:12 2020 -0400

Merge branch '1.10' into main

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

diff --cc pom.xml
index 371e8e8,dd8397e..83880e3
--- a/pom.xml
+++ b/pom.xml
@@@ -143,10 -143,10 +143,10 @@@
  
true
  2.0.7
  
- 
2020-08-18T00:00:00Z
+ 
2020-08-27T15:56:15Z
  
  false
 -1.7.25
 +1.7.30
  
source-release-tar
  
  false



[accumulo] 01/01: Merge branch '1.10' into main

2020-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 c997ab7017c6d03bed7f02384f09b41e97ff2b06
Merge: 72e8bc4 c03d770
Author: Christopher Tubbs 
AuthorDate: Tue Sep 1 13:50:21 2020 -0400

Merge branch '1.10' into main

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




[accumulo] 01/01: Merge branch '1.10' into main

2020-08-27 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 3a6a94618efb11765f954d689c1ed641ea785435
Merge: 677f460 cfb33e1
Author: Christopher Tubbs 
AuthorDate: Thu Aug 27 10:07:51 2020 -0400

Merge branch '1.10' into main

 pom.xml | 6 ++
 1 file changed, 6 insertions(+)




[accumulo] 01/01: Merge branch '1.10' into main

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

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

commit 677f46040aad0a81862378c1099a6cf33cb59cf2
Merge: 0702e08 a6cbf09
Author: Mike Miller 
AuthorDate: Mon Aug 24 14:54:31 2020 -0400

Merge branch '1.10' into main

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

diff --cc pom.xml
index 224aeca,7a5d566..4df5105
--- a/pom.xml
+++ b/pom.xml
@@@ -116,9 -116,9 +116,9 @@@
  
  ${project.version}
  
- 1.64
+ 1.66
  
 -2.11.0
 +4.3.0
  
  
${project.parent.basedir}/contrib/Eclipse-Accumulo-Codestyle.xml
  
@@@ -127,21 -127,21 +127,21 @@@
  
  
  1
 -
 -14.0.1
 -2.6.5
 +3.2.1
 +2.6.1
  4.1.0-incubating
 -3.1.0-incubating
 +3.2.0-incubating
  false
 -
 -9.2.26.v20180806
 -8
 -1.8
 -1.8
 -3.5.0
 +3.0.1-b06
 +2.3.0.1
 +2.30.1
 +9.4.27.v20200227
 +11
 +11
 +11
  
  
true
- 2.0.5
+ 2.0.7
  
  
2020-08-18T00:00:00Z
  



[accumulo] 01/01: Merge branch '1.10' into main

2020-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 0702e08645d94a2ebae829ba2c8f2588177799a6
Merge: 47d7b70 f80843e
Author: Christopher Tubbs 
AuthorDate: Fri Aug 21 11:27:39 2020 -0400

Merge branch '1.10' into main

 .../main/java/org/apache/accumulo/test/BalanceWithOfflineTableIT.java | 4 ++--
 test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java  | 2 +-
 test/src/main/java/org/apache/accumulo/test/LocatorIT.java| 2 +-
 test/src/main/java/org/apache/accumulo/test/ScanFlushWithTimeIT.java  | 2 +-
 .../java/org/apache/accumulo/test/TableConfigurationUpdateIT.java | 2 +-
 .../src/main/java/org/apache/accumulo/test/TabletServerGivesUpIT.java | 2 +-
 .../org/apache/accumulo/test/TracerRecoversAfterOfflineTableIT.java   | 2 +-
 test/src/main/java/org/apache/accumulo/test/VolumeChooserIT.java  | 2 +-
 8 files changed, 9 insertions(+), 9 deletions(-)

diff --cc 
test/src/main/java/org/apache/accumulo/test/BalanceWithOfflineTableIT.java
index 9010deb,ba458f3..4dd8ebe
--- a/test/src/main/java/org/apache/accumulo/test/BalanceWithOfflineTableIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/BalanceWithOfflineTableIT.java
@@@ -49,41 -47,43 +49,41 @@@ public class BalanceWithOfflineTableIT 
  final String tableName = tableNames[0];
  // create a table with a bunch of splits
  
 -final Connector c = getConnector();
 -log.info("Creating table " + tableName);
 -c.tableOperations().create(tableName);
 -final SortedSet splits = new TreeSet<>();
 -for (String split : 
"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".split(",")) {
 -  splits.add(new Text(split));
 -}
 -log.info("Splitting table " + tableName);
 -c.tableOperations().addSplits(tableName, splits);
 -log.info("Balancing");
 -c.instanceOperations().waitForBalance();
 -log.info("Balanced");
 +try (AccumuloClient c = 
Accumulo.newClient().from(getClientProperties()).build()) {
 +  log.info("Creating table {}", tableName);
 +  c.tableOperations().create(tableName);
 +  final SortedSet splits = new TreeSet<>();
 +  for (String split : 
"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".split(",")) {
 +splits.add(new Text(split));
 +  }
 +  log.info("Splitting table {}", tableName);
 +  c.tableOperations().addSplits(tableName, splits);
 +  log.info("Balancing");
 +  c.instanceOperations().waitForBalance();
 +  log.info("Balanced");
  
 -// create a new table which will unbalance the cluster
 -final String table2 = tableNames[1];
 -log.info("Creating table " + table2);
 -c.tableOperations().create(table2);
 -log.info("Creating splits " + table2);
 -c.tableOperations().addSplits(table2, splits);
 +  // create a new table which will unbalance the cluster
 +  final String table2 = tableNames[1];
 +  log.info("Creating table {}", table2);
 +  c.tableOperations().create(table2);
 +  log.info("Creating splits {}", table2);
 +  c.tableOperations().addSplits(table2, splits);
  
 -// offline the table, hopefully while there are some migrations going on
 -log.info("Offlining " + table2);
 -c.tableOperations().offline(table2, true);
 -log.info("Offlined " + table2);
 +  // offline the table, hopefully while there are some migrations going on
 +  log.info("Offlining {}", table2);
 +  c.tableOperations().offline(table2, true);
 +  log.info("Offlined {}", table2);
  
 -log.info("Waiting for balance");
 +  log.info("Waiting for balance");
  
 -SimpleThreadPool pool = new SimpleThreadPool(1, "waitForBalance");
 -Future wait = pool.submit(new Callable() {
 -  @Override
 -  public Boolean call() throws Exception {
 +  SimpleThreadPool pool = new SimpleThreadPool(1, "waitForBalance");
 +  Future wait = pool.submit(() -> {
  c.instanceOperations().waitForBalance();
  return true;
 -  }
 -});
 -wait.get((2 * defaultTimeoutSeconds()) / 3, TimeUnit.SECONDS);
 -log.info("Balance succeeded with an offline table");
 +  });
-   wait.get(20, TimeUnit.SECONDS);
++  wait.get((2 * defaultTimeoutSeconds()) / 3, TimeUnit.SECONDS);
 +  log.info("Balance succeeded with an offline table");
 +}
}
  
  }
diff --cc test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java
index dbbdb5d,67a22a6..b409430
--- a/test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java
@@@ -114,27 -114,16 +114,27 @@@ public class ConditionalWriterIT extend
  
@Override
protected int defaultTimeoutSeconds() {
- return 60;
+ return 120;
}
  
 -  @Override
 -  public void configureMiniCluster(MiniAccumuloConfigImpl cfg, Configuration 
hadoopCoreSite) {
 -

[accumulo] 01/01: Merge branch '1.10' into main

2020-08-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 47d7b708cf14b9d935a889c1082e211075338ed1
Merge: 0c5bc31 dab5b80
Author: Christopher Tubbs 
AuthorDate: Thu Aug 20 18:38:46 2020 -0400

Merge branch '1.10' into main

 pom.xml| 19 ++--
 .../replication/CloseWriteAheadLogReferences.java  | 27 
 .../RemoveCompleteReplicationRecords.java  | 12 
 .../apache/accumulo/test/functional/ScannerIT.java | 36 --
 4 files changed, 34 insertions(+), 60 deletions(-)

diff --cc pom.xml
index aec76ba,5f1fae3..224aeca
--- a/pom.xml
+++ b/pom.xml
@@@ -127,24 -127,26 +127,26 @@@
  
  
  1
 -
 -14.0.1
 -2.6.5
 +3.2.1
 +2.6.1
  4.1.0-incubating
 -3.1.0-incubating
 +3.2.0-incubating
  false
 -
 -9.2.26.v20180806
 -8
 -1.8
 -1.8
 -3.5.0
 +3.0.1-b06
 +2.3.0.1
 +2.30.1
 +9.4.27.v20200227
 +11
 +11
 +11
  
  
true
 -2.0.2
 +2.0.5
+ 
+ 
2020-08-18T00:00:00Z
  
  false
 -1.7.25
 +1.7.30
  
source-release-tar
  
  false
diff --cc 
server/gc/src/main/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferences.java
index 7f5a7c4,5dd25a1..479618f
--- 
a/server/gc/src/main/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferences.java
+++ 
b/server/gc/src/main/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferences.java
@@@ -18,8 -16,10 +18,9 @@@
   */
  package org.apache.accumulo.gc.replication;
  
+ import java.time.Duration;
  import java.util.Collections;
  import java.util.HashSet;
 -import java.util.List;
  import java.util.Map.Entry;
  import java.util.Set;
  
@@@ -76,36 -83,49 +76,35 @@@ public class CloseWriteAheadLogReferenc
  
@Override
public void run() {
- // As long as we depend on a newer Guava than Hadoop uses, we have to 
make sure we're compatible
- // with
- // what the version they bundle uses.
- Stopwatch sw = Stopwatch.createUnstarted();
 -// Guava Stopwatch is useful here, for a friendlier toString, but the 
version of Guava in Hadoop
 -// 2 and 3 are different in incompatible ways, so we avoid it here and 
use Duration instead, so
 -// there won't be conflicts with the older Guava that ships by default 
with Hadoop 2.
++// Guava Stopwatch is useful here, for a friendlier toString, but the 
versions of Guava
++// are different in incompatible ways, so we avoid it here and use 
Duration instead, so
++// there won't be conflicts.
+ long startTime;
+ Duration duration;
  
 -Connector conn;
 -try {
 -  conn = context.getConnector();
 -} catch (Exception e) {
 -  log.error("Could not create connector", e);
 -  throw new RuntimeException(e);
 -}
 -
 -if (!ReplicationTable.isOnline(conn)) {
 +if (!ReplicationTable.isOnline(context)) {
log.debug("Replication table isn't online, not attempting to clean up 
wals");
return;
  }
  
 -Span findWalsSpan = Trace.start("findReferencedWals");
  HashSet closed = null;
 -try {
 +try (TraceScope findWalsSpan = Trace.startSpan("findReferencedWals")) {
-   sw.start();
+   startTime = System.nanoTime();
 -  closed = getClosedLogs(conn);
 +  closed = getClosedLogs();
- } finally {
-   sw.stop();
+   duration = Duration.ofNanos(System.nanoTime() - startTime);
 -} finally {
 -  findWalsSpan.stop();
  }
  
- log.info("Found {} WALs referenced in metadata in {}", closed.size(), sw);
- sw.reset();
 -log.info("Found " + closed.size() + " WALs referenced in metadata in " + 
duration);
++log.info("Found {} WALs referenced in metadata in {}", closed.size(), 
duration);
  
 -Span updateReplicationSpan = Trace.start("updateReplicationTable");
  long recordsClosed = 0;
 -try {
 +try (TraceScope updateReplicationSpan = 
Trace.startSpan("updateReplicationTable")) {
-   sw.start();
+   startTime = System.nanoTime();
 -  recordsClosed = updateReplicationEntries(conn, closed);
 +  recordsClosed = updateReplicationEntries(context, closed);
- } finally {
-   sw.stop();
+   duration = Duration.ofNanos(System.nanoTime() - startTime);
 -} finally {
 -  updateReplicationSpan.stop();
  }
  
- log.info("Closed {} WAL replication references in replication table in 
{}", recordsClosed, sw);
 -log.info("Closed " + recordsClosed + " WAL replication references in 
replication table in "
 -+ duration);
++log.info("Closed {} WAL replication references in replication table in 
{}", recordsClosed,
++duration);
}
  
/**
diff --cc 
server/manager/src/main/java/org/apache/accumulo/master/replication/RemoveCompleteReplicationRecords.java

[accumulo] 01/01: Merge branch '1.10' into main

2020-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 4cbff2aa1ac4cd32ac69838487b8810096049785
Merge: 61eb916 7a2d12e
Author: Christopher Tubbs 
AuthorDate: Mon Aug 17 14:05:45 2020 -0400

Merge branch '1.10' into main

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

diff --cc pom.xml
index 93f13d1,3b30cd8..aec76ba
--- a/pom.xml
+++ b/pom.xml
@@@ -235,11 -193,26 +235,11 @@@
  1.14


 -commons-collections
 -commons-collections
 -3.2.2
 -  
 -  
 -commons-configuration
 -commons-configuration
 -1.6
 -  
 -  
  commons-io
  commons-io
- 2.6
+ 2.7


 -commons-lang
 -commons-lang
 -2.6
 -  
 -  
  commons-logging
  commons-logging
  1.2



[accumulo] 01/01: Merge branch '1.10' into main

2020-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 61eb91632c04b592231a2af8dc45c0d3deafec64
Merge: 6844fde 92af87e
Author: Christopher Tubbs 
AuthorDate: Sun Aug 16 15:12:11 2020 -0400

Merge branch '1.10' into main

 .github/workflows/maven-on-demand.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



[accumulo] 01/01: Merge branch '1.10' into main

2020-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 6844fde30c3ee1b24bd4f2610da1ce89916fb391
Merge: 37fa85b 367a53e
Author: Christopher Tubbs 
AuthorDate: Sun Aug 16 15:06:20 2020 -0400

Merge branch '1.10' into main

 .github/workflows/maven-on-demand.yaml | 92 ++
 1 file changed, 92 insertions(+)



[accumulo] 01/01: Merge branch '1.10' into main

2020-08-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 37fa85baf5a63392bd64e2afe4d63f809199b19c
Merge: d3afe5b 64dc5db
Author: Christopher Tubbs 
AuthorDate: Sat Aug 15 16:57:44 2020 -0400

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

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

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

commit d3afe5b394b9907126d7e841559ed99a9ed11f9f
Merge: e7cc0d3 7a01fb0
Author: Mike Miller 
AuthorDate: Fri Aug 14 15:38:20 2020 -0400

Merge branch '1.10' into main




[accumulo] 01/01: Merge branch '1.10' into main

2020-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 e7cc0d35717b099a38542a111bbd5be839302676
Merge: a165264 c581c43
Author: Christopher Tubbs 
AuthorDate: Thu Aug 13 21:05:30 2020 -0400

Merge branch '1.10' into main

 .../accumulo/iteratortest/IteratorTestInput.java   | 41 --
 .../iteratortest/testcases/DeepCopyTestCase.java   |  5 ++-
 .../testcases/IsolatedDeepCopiesTestCase.java  | 18 +-
 .../testcases/MultipleHasTopCalls.java |  3 +-
 .../iteratortest/testcases/ReSeekTestCase.java |  5 ++-
 .../iteratortest/testcases/YieldingTestCase.java   |  3 +-
 .../test/iterator/SummingCombinerTest.java | 10 +-
 7 files changed, 62 insertions(+), 23 deletions(-)

diff --cc 
iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/IteratorTestInput.java
index 05c42aa,32f0a87..5630f64
--- 
a/iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/IteratorTestInput.java
+++ 
b/iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/IteratorTestInput.java
@@@ -61,7 -62,31 +64,31 @@@ public class IteratorTestInput 
 */
public IteratorTestInput(Class> 
iteratorClass,
Map iteratorOptions, Range range, SortedMap 
input) {
- this(iteratorClass, iteratorOptions, range, input, 
Collections.emptySet(), false);
 -this(iteratorClass, iteratorOptions, range, input, 
Collections.emptySet(), false,
++this(iteratorClass, iteratorOptions, range, input, 
Collections.emptySet(), false,
+ new SimpleIteratorEnvironment());
+   }
+ 
+   /**
+* Construct an instance of the test input.
+*
+* @param iteratorClass
+*  The class for the iterator to test.
+* @param iteratorOptions
+*  Options, if any, to provide to the iterator ({@link 
IteratorSetting}'s Map of
+*  properties).
+* @param range
+*  The Range of data to query ({@link Scanner#setRange(Range)}). 
By default no column
+*  families filter is specified.
+* @param input
+*  A sorted collection of Key-Value pairs acting as the table.
+* @param iterEnv
+*  A provided {@link IteratorEnvironment}.
+*/
+   public IteratorTestInput(Class> 
iteratorClass,
+   Map iteratorOptions, Range range, SortedMap 
input,
+   IteratorEnvironment iterEnv) {
 -this(iteratorClass, iteratorOptions, range, input, 
Collections.emptySet(), false,
++this(iteratorClass, iteratorOptions, range, input, 
Collections.emptySet(), false,
+ requireNonNull(iterEnv));
}
  
/**
diff --cc 
iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/testcases/IsolatedDeepCopiesTestCase.java
index 98fea67,1cf199f..ba86ff8
--- 
a/iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/testcases/IsolatedDeepCopiesTestCase.java
+++ 
b/iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/testcases/IsolatedDeepCopiesTestCase.java
@@@ -52,10 -49,11 +52,11 @@@ public class IsolatedDeepCopiesTestCas
  final SortedKeyValueIterator source = 
IteratorTestUtil.createSource(testInput);
  
  try {
-   skvi.init(source, testInput.getIteratorOptions(), new 
SimpleIteratorEnvironment());
 -  IteratorEnvironment iteratorEnvironment = 
testInput.getIteratorEnvironment();
++  var iteratorEnvironment = testInput.getIteratorEnvironment();
+   skvi.init(source, testInput.getIteratorOptions(), iteratorEnvironment);
  
-   SortedKeyValueIterator copy1 = skvi.deepCopy(new 
SimpleIteratorEnvironment());
-   SortedKeyValueIterator copy2 = copy1.deepCopy(new 
SimpleIteratorEnvironment());
+   SortedKeyValueIterator copy1 = 
skvi.deepCopy(iteratorEnvironment);
+   SortedKeyValueIterator copy2 = 
copy1.deepCopy(iteratorEnvironment);
  
Range seekRange = testInput.getRange();
Collection seekColumnFamilies = testInput.getFamilies();
diff --cc 
iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/testcases/YieldingTestCase.java
index d2f2ef7,392770d..ea20b32
--- 
a/iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/testcases/YieldingTestCase.java
+++ 
b/iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/testcases/YieldingTestCase.java
@@@ -46,10 -44,12 +45,10 @@@ public class YieldingTestCase extends O
  final SortedKeyValueIterator source = 
IteratorTestUtil.createSource(testInput);
  
  try {
-   skvi.init(source, testInput.getIteratorOptions(), new 
SimpleIteratorEnvironment());
+   skvi.init(source, testInput.getIteratorOptions(), 
testInput.getIteratorEnvironment());
  
YieldCallback yield = new YieldCallback<>();
 -  if (skvi instanceof YieldingKeyValueIterator) {
 -((YieldingKeyValueIterator) skvi).enableYielding(yield);
 -  }
 +