[accumulo] 01/01: Merge branch '1.10' into 2.1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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'
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'
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'
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'
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'
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'
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
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'
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'
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'
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'
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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); - } +