ACCUMULO-3423 merging master
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/ac176e19 Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/ac176e19 Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/ac176e19 Branch: refs/heads/master Commit: ac176e193769b37dd3d21894d1a084426d9e7e1d Parents: f1591f0 bddb007 Author: Eric C. Newton <eric.new...@gmail.com> Authored: Wed Mar 18 15:41:32 2015 -0400 Committer: Eric C. Newton <eric.new...@gmail.com> Committed: Wed Mar 18 15:41:32 2015 -0400 ---------------------------------------------------------------------- .../accumulo/core/bloomfilter/BloomFilter.java | 5 +- .../accumulo/core/client/impl/MasterClient.java | 5 +- .../client/impl/MultiTableBatchWriterImpl.java | 5 +- .../core/client/impl/ScannerIterator.java | 28 +- .../accumulo/core/client/impl/ServerClient.java | 5 +- .../accumulo/core/client/impl/Tables.java | 5 +- .../client/impl/TabletServerBatchReader.java | 6 +- .../client/impl/TabletServerBatchWriter.java | 5 +- .../accumulo/core/client/impl/Writer.java | 5 +- .../client/mock/MockInstanceOperations.java | 5 +- .../client/mock/MockNamespaceOperations.java | 5 +- .../core/client/mock/MockTableOperations.java | 5 +- .../core/conf/AccumuloConfiguration.java | 6 +- .../accumulo/core/conf/ConfigSanityCheck.java | 8 +- .../accumulo/core/conf/ConfigurationDocGen.java | 7 +- .../org/apache/accumulo/core/conf/Property.java | 12 +- .../accumulo/core/conf/SiteConfiguration.java | 6 +- .../file/blockfile/impl/CachableBlockFile.java | 6 +- .../accumulo/core/file/rfile/CreateEmpty.java | 5 +- .../accumulo/core/file/rfile/PrintInfo.java | 5 +- .../apache/accumulo/core/file/rfile/RFile.java | 6 +- .../core/iterators/AggregatingIterator.java | 6 +- .../accumulo/core/iterators/DebugIterator.java | 5 +- .../accumulo/core/iterators/IteratorUtil.java | 5 +- .../iterators/aggregation/LongSummation.java | 6 +- .../core/iterators/system/MapFileIterator.java | 6 +- .../core/iterators/system/VisibilityFilter.java | 6 +- .../core/iterators/user/RegExFilter.java | 6 +- .../iterators/user/TransformingIterator.java | 6 +- .../core/replication/ReplicationTable.java | 5 +- .../accumulo/core/rpc/SslConnectionParams.java | 5 +- .../CachingHDFSSecretKeyEncryptionStrategy.java | 19 +- .../security/crypto/CryptoModuleFactory.java | 13 +- .../security/crypto/DefaultCryptoModule.java | 5 +- .../crypto/DefaultCryptoModuleUtils.java | 5 +- .../crypto/DiscardCloseOutputStream.java | 5 +- .../NonCachingSecretKeyEncryptionStrategy.java | 19 +- .../accumulo/core/trace/DistributedTrace.java | 5 +- .../org/apache/accumulo/core/util/CleanUp.java | 5 +- .../org/apache/accumulo/core/util/Merge.java | 5 +- .../accumulo/core/util/UtilWaitThread.java | 6 +- .../core/util/format/FormatterFactory.java | 6 +- .../apache/accumulo/core/volume/VolumeImpl.java | 6 +- .../apache/accumulo/core/zookeeper/ZooUtil.java | 6 +- .../core/file/BloomFilterLayerLookupTest.java | 5 +- .../iterators/aggregation/NumSummationTest.java | 8 +- .../iterators/user/VersioningIteratorTest.java | 13 +- .../main/asciidoc/accumulo_user_manual.asciidoc | 6 +- .../main/asciidoc/chapters/iterator_design.txt | 386 +++++++++++++++++++ docs/src/main/resources/isolation.html | 2 +- .../simple/client/RandomBatchScanner.java | 7 +- .../examples/simple/client/RowOperations.java | 6 +- .../examples/simple/client/TracingExample.java | 5 +- .../examples/simple/dirlist/Viewer.java | 5 +- .../simple/filedata/ChunkInputStream.java | 6 +- .../examples/simple/helloworld/ReadData.java | 5 +- .../simple/isolation/InterferenceTest.java | 7 +- .../examples/simple/mapreduce/NGramIngest.java | 5 +- .../simple/mapreduce/TokenFileWordCount.java | 6 +- .../examples/simple/mapreduce/WordCount.java | 5 +- .../simple/mapreduce/bulk/VerifyIngest.java | 5 +- .../examples/simple/reservations/ARS.java | 6 +- .../examples/simple/dirlist/CountTest.java | 6 +- .../simple/filedata/ChunkInputStreamTest.java | 15 +- .../org/apache/accumulo/fate/AdminUtil.java | 7 +- .../org/apache/accumulo/fate/AgeOffStore.java | 6 +- .../java/org/apache/accumulo/fate/Fate.java | 6 +- .../apache/accumulo/fate/util/AddressUtil.java | 6 +- .../accumulo/fate/util/LoggingRunnable.java | 3 +- .../accumulo/fate/util/UtilWaitThread.java | 6 +- .../zookeeper/DistributedReadWriteLock.java | 6 +- .../apache/accumulo/fate/zookeeper/Retry.java | 6 +- .../fate/zookeeper/TransactionWatcher.java | 6 +- .../accumulo/fate/zookeeper/ZooCache.java | 7 +- .../apache/accumulo/fate/zookeeper/ZooLock.java | 5 +- .../accumulo/fate/zookeeper/ZooReader.java | 5 +- .../fate/zookeeper/ZooReaderWriter.java | 5 +- .../accumulo/fate/zookeeper/ZooReservation.java | 4 +- .../accumulo/fate/zookeeper/ZooSession.java | 5 +- .../apache/accumulo/fate/zookeeper/ZooUtil.java | 5 +- .../accumulo/fate/util/AddressUtilTest.java | 6 +- .../minicluster/MiniAccumuloRunner.java | 5 +- .../impl/MiniAccumuloClusterControl.java | 5 +- .../impl/MiniAccumuloConfigImpl.java | 5 +- .../MiniAccumuloClusterStartStopTest.java | 5 +- .../java/org/apache/accumulo/proxy/Proxy.java | 14 +- .../org/apache/accumulo/proxy/ProxyServer.java | 7 +- .../server/client/ClientServiceHandler.java | 9 +- .../server/conf/NamespaceConfiguration.java | 5 +- .../server/conf/TableConfiguration.java | 5 +- .../server/conf/ZooCachePropertyAccessor.java | 5 +- .../accumulo/server/conf/ZooConfiguration.java | 5 +- .../server/constraints/MetadataConstraints.java | 5 +- .../server/fs/PreferredVolumeChooser.java | 5 +- .../accumulo/server/fs/VolumeManagerImpl.java | 10 +- .../apache/accumulo/server/fs/VolumeUtil.java | 5 +- .../apache/accumulo/server/init/Initialize.java | 55 +-- .../iterators/MetadataBulkLoadFilter.java | 7 +- .../accumulo/server/master/LiveTServerSet.java | 12 +- .../master/balancer/ChaoticLoadBalancer.java | 5 +- .../master/balancer/DefaultLoadBalancer.java | 5 +- .../master/balancer/TableLoadBalancer.java | 5 +- .../server/master/balancer/TabletBalancer.java | 5 +- .../server/master/recovery/HadoopLogCloser.java | 5 +- .../server/master/recovery/MapRLogCloser.java | 5 +- .../server/master/state/DeadServerList.java | 11 +- .../master/state/MetaDataTableScanner.java | 5 +- .../master/state/TabletStateChangeIterator.java | 7 +- .../accumulo/server/master/state/ZooStore.java | 5 +- .../master/state/ZooTabletStateStore.java | 5 +- .../server/metrics/AbstractMetricsImpl.java | 2 +- .../server/metrics/MetricsConfiguration.java | 2 +- .../accumulo/server/metrics/ThriftMetrics.java | 2 +- .../accumulo/server/monitor/LogService.java | 7 +- .../server/replication/StatusCombiner.java | 7 +- .../server/rpc/CustomNonBlockingServer.java | 5 +- .../server/rpc/TNonblockingServerSocket.java | 5 +- .../server/security/SecurityOperation.java | 7 +- .../accumulo/server/security/SecurityUtil.java | 5 +- .../security/handler/ZKAuthenticator.java | 28 +- .../server/security/handler/ZKAuthorizor.java | 21 +- .../server/security/handler/ZKPermHandler.java | 49 +-- .../server/security/handler/ZKSecurityTool.java | 11 +- .../accumulo/server/tables/TableManager.java | 14 +- .../tabletserver/LargestFirstMemoryManager.java | 5 +- .../org/apache/accumulo/server/util/Admin.java | 11 +- .../accumulo/server/util/CleanZookeeper.java | 8 +- .../apache/accumulo/server/util/FileUtil.java | 19 +- .../server/util/FindOfflineTablets.java | 5 +- .../org/apache/accumulo/server/util/Halt.java | 10 +- .../accumulo/server/util/ListInstances.java | 7 +- .../server/util/MasterMetadataUtil.java | 13 +- .../accumulo/server/util/MetadataTableUtil.java | 21 +- .../accumulo/server/util/RandomWriter.java | 9 +- .../accumulo/server/util/RandomizeVolumes.java | 7 +- .../accumulo/server/util/TableDiskUsage.java | 5 +- .../accumulo/server/util/TabletIterator.java | 7 +- .../server/util/VerifyTabletAssignments.java | 5 +- .../org/apache/accumulo/server/util/ZooZap.java | 7 +- .../accumulo/server/util/time/SimpleTimer.java | 5 +- .../server/zookeeper/DistributedWorkQueue.java | 5 +- .../security/handler/ZKAuthenticatorTest.java | 7 +- .../accumulo/gc/GarbageCollectionAlgorithm.java | 5 +- .../accumulo/gc/SimpleGarbageCollector.java | 27 +- .../accumulo/master/EventCoordinator.java | 5 +- .../java/org/apache/accumulo/master/Master.java | 9 +- .../master/metrics/ReplicationMetrics.java | 5 +- .../master/recovery/RecoveryManager.java | 7 +- .../accumulo/master/state/MergeStats.java | 7 +- .../accumulo/master/tableOps/BulkImport.java | 9 +- .../master/tableOps/ChangeTableState.java | 4 +- .../accumulo/master/tableOps/CloneTable.java | 8 +- .../accumulo/master/tableOps/CompactRange.java | 4 +- .../master/tableOps/CreateNamespace.java | 6 +- .../accumulo/master/tableOps/CreateTable.java | 6 +- .../master/tableOps/DeleteNamespace.java | 7 +- .../accumulo/master/tableOps/DeleteTable.java | 7 +- .../accumulo/master/tableOps/ImportTable.java | 9 +- .../accumulo/master/tableOps/MasterRepo.java | 5 +- .../master/tableOps/RenameNamespace.java | 4 +- .../accumulo/master/tableOps/RenameTable.java | 4 +- .../apache/accumulo/master/tableOps/Utils.java | 7 +- .../master/tserverOps/ShutdownTServer.java | 5 +- .../accumulo/monitor/ZooKeeperStatus.java | 7 +- .../accumulo/tracer/AsyncSpanReceiver.java | 5 +- .../accumulo/tracer/SendSpansViaThrift.java | 4 +- .../org/apache/accumulo/tracer/TraceServer.java | 7 +- .../apache/accumulo/tracer/ZooTraceClient.java | 5 +- .../server/GarbageCollectionLogger.java | 5 +- .../tserver/BulkFailedCopyProcessor.java | 5 +- .../apache/accumulo/tserver/FileManager.java | 7 +- .../apache/accumulo/tserver/InMemoryMap.java | 7 +- .../org/apache/accumulo/tserver/NativeMap.java | 5 +- .../apache/accumulo/tserver/WriteTracker.java | 7 +- .../tserver/constraints/ConstraintChecker.java | 5 +- .../accumulo/tserver/log/LocalWALRecovery.java | 5 +- .../apache/accumulo/tserver/log/LogSorter.java | 7 +- .../accumulo/tserver/log/SortedLogRecovery.java | 5 +- .../tserver/log/TabletServerLogger.java | 7 +- .../accumulo/tserver/logger/LogReader.java | 5 +- .../tserver/metrics/TabletServerMBeanImpl.java | 5 +- .../metrics/TabletServerMinCMetrics.java | 2 +- .../metrics/TabletServerScanMetrics.java | 2 +- .../metrics/TabletServerUpdateMetrics.java | 2 +- .../accumulo/tserver/scan/LookupTask.java | 5 +- .../accumulo/tserver/scan/NextBatchTask.java | 5 +- .../tserver/session/SessionManager.java | 5 +- .../accumulo/tserver/tablet/CommitSession.java | 7 +- .../tserver/tablet/CompactionWatcher.java | 6 +- .../accumulo/tserver/tablet/Compactor.java | 15 +- .../tserver/tablet/MinorCompactionTask.java | 5 +- .../accumulo/tserver/tablet/MinorCompactor.java | 5 +- .../accumulo/tserver/tablet/RootFiles.java | 5 +- .../apache/accumulo/tserver/tablet/Scanner.java | 5 +- .../accumulo/tserver/tablet/TabletMemory.java | 7 +- .../shell/commands/DeleteScanIterCommand.java | 1 + .../accumulo/shell/commands/MaxRowCommand.java | 5 +- .../ShellPluginConfigurationCommand.java | 10 +- .../accumulo/shell/format/DeleterFormatter.java | 5 +- .../java/org/apache/accumulo/start/Main.java | 5 +- .../start/classloader/AccumuloClassLoader.java | 5 +- .../vfs/AccumuloReloadingVFSClassLoader.java | 5 +- .../classloader/vfs/AccumuloVFSClassLoader.java | 9 +- .../classloader/vfs/UniqueFileReplicator.java | 5 +- .../org/apache/accumulo/test/CreateRFiles.java | 5 +- .../accumulo/test/NativeMapConcurrencyTest.java | 5 +- .../org/apache/accumulo/test/TestIngest.java | 3 - .../apache/accumulo/test/TestRandomDeletes.java | 5 +- .../org/apache/accumulo/test/VerifyIngest.java | 5 +- .../continuous/ContinuousStatsCollector.java | 5 +- .../test/continuous/ContinuousVerify.java | 5 +- .../test/continuous/PrintScanTimeHistogram.java | 9 +- .../accumulo/test/functional/ZombieTServer.java | 9 +- .../metadata/MetadataBatchScanTest.java | 5 +- .../performance/scan/CollectTabletStats.java | 5 +- .../accumulo/test/randomwalk/Environment.java | 7 +- .../apache/accumulo/test/randomwalk/State.java | 2 +- .../test/randomwalk/bulk/SelectiveQueueing.java | 5 +- .../test/randomwalk/concurrent/Replication.java | 201 ++++++++++ .../randomwalk/security/SecurityHelper.java | 5 +- .../randomwalk/security/WalkingSecurity.java | 5 +- .../test/randomwalk/shard/SortTool.java | 5 +- .../accumulo/test/scalability/Ingest.java | 6 +- .../apache/accumulo/test/scalability/Run.java | 5 +- .../accumulo/fate/zookeeper/ZooLockTest.java | 4 - .../org/apache/accumulo/harness/AccumuloIT.java | 17 +- .../accumulo/harness/MiniClusterHarness.java | 2 +- .../apache/accumulo/start/KeywordStartIT.java | 5 +- .../test/ArbitraryTablePropertiesIT.java | 5 +- .../test/BadDeleteMarkersCreatedIT.java | 5 +- .../accumulo/test/BulkImportVolumeIT.java | 2 - .../org/apache/accumulo/test/CleanWalIT.java | 5 +- .../accumulo/test/ConditionalWriterIT.java | 9 +- .../test/CreateTableWithNewTableConfigIT.java | 5 +- .../apache/accumulo/test/LargeSplitRowIT.java | 5 +- .../apache/accumulo/test/MetaGetsReadersIT.java | 2 +- .../accumulo/test/MultiTableRecoveryIT.java | 2 +- .../test/RewriteTabletDirectoriesIT.java | 2 - .../org/apache/accumulo/test/ShellServerIT.java | 5 +- .../test/TableConfigurationUpdateIT.java | 5 +- .../apache/accumulo/test/VolumeChooserIT.java | 3 - .../java/org/apache/accumulo/test/VolumeIT.java | 2 - .../test/functional/BatchScanSplitIT.java | 5 +- .../accumulo/test/functional/BloomFilterIT.java | 5 +- .../accumulo/test/functional/CleanUpIT.java | 5 +- .../test/functional/ConfigurableMacIT.java | 15 +- .../accumulo/test/functional/DeleteRowsIT.java | 5 +- .../test/functional/DeleteRowsSplitIT.java | 7 +- .../accumulo/test/functional/ExamplesIT.java | 5 +- .../test/functional/HalfDeadTServerIT.java | 2 +- .../accumulo/test/functional/LargeRowIT.java | 5 +- .../accumulo/test/functional/LogicalTimeIT.java | 5 +- .../test/functional/MonitorLoggingIT.java | 5 +- .../accumulo/test/functional/MonitorSslIT.java | 2 +- .../accumulo/test/functional/PermissionsIT.java | 5 +- .../functional/RecoveryWithEmptyRFileIT.java | 5 +- .../apache/accumulo/test/functional/SslIT.java | 2 +- .../test/replication/CyclicReplicationIT.java | 2 +- .../replication/ReplicationRandomWalkIT.java | 67 ++++ .../apache/accumulo/test/util/CertUtils.java | 5 +- .../randomwalk/conf/modules/Concurrent.xml | 5 + 261 files changed, 1639 insertions(+), 746 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/core/src/main/java/org/apache/accumulo/core/conf/Property.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/base/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java ---------------------------------------------------------------------- diff --cc server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java index eca8e7f,ab99396..bce20fd --- a/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java +++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java @@@ -21,18 -21,14 +21,19 @@@ import static java.nio.charset.Standard import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Map; import org.apache.accumulo.core.metadata.RootTable; +import org.apache.accumulo.core.metadata.schema.MetadataSchema; import org.apache.accumulo.core.tabletserver.log.LogEntry; +import org.apache.accumulo.server.AccumuloServerContext; import org.apache.commons.lang.NotImplementedException; +import org.apache.hadoop.fs.Path; - import org.apache.log4j.Logger; + import org.slf4j.Logger; + import org.slf4j.LoggerFactory; import com.google.common.net.HostAndPort; http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java ---------------------------------------------------------------------- diff --cc server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java index 96f9c9e,10cd749..db00b9c --- a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java @@@ -252,39 -253,6 +253,35 @@@ public class MetadataTableUtil } } + private static interface ZooOperation { + void run(IZooReaderWriter rw) throws KeeperException, InterruptedException, IOException; + } + + private static void retryZooKeeperUpdate(ClientContext context, ZooLock zooLock, ZooOperation op) { + while (true) { + try { + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); + if (zoo.isLockHeld(zooLock.getLockID())) { + op.run(zoo); + } + break; - } catch (KeeperException e) { - log.error(e, e); - } catch (InterruptedException e) { - log.error(e, e); - } catch (IOException e) { - log.error(e, e); ++ } catch (Exception e) { ++ log.error("Unexpected exception {}", e.getMessage(), e); + } + UtilWaitThread.sleep(1000); + } + } + + private static void addRootLogEntry(AccumuloServerContext context, ZooLock zooLock, final LogEntry entry) { + retryZooKeeperUpdate(context, zooLock, new ZooOperation() { + @Override + public void run(IZooReaderWriter rw) throws KeeperException, InterruptedException, IOException { + String root = getZookeeperLogLocation(); + rw.putPersistentData(root + "/" + entry.getUniqueID(), entry.toBytes(), NodeExistsPolicy.OVERWRITE); + } + }); + } + public static SortedMap<FileRef,DataFileValue> getDataFileSizes(KeyExtent extent, ClientContext context) throws IOException { TreeMap<FileRef,DataFileValue> sizes = new TreeMap<FileRef,DataFileValue>(); http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/master/src/main/java/org/apache/accumulo/master/Master.java ---------------------------------------------------------------------- diff --cc server/master/src/main/java/org/apache/accumulo/master/Master.java index f897162,3762f32..2be7238 --- a/server/master/src/main/java/org/apache/accumulo/master/Master.java +++ b/server/master/src/main/java/org/apache/accumulo/master/Master.java @@@ -422,12 -422,10 +422,13 @@@ public class Master extends AccumuloSer perm.grantNamespacePermission(user, Namespaces.ACCUMULO_NAMESPACE_ID, NamespacePermission.READ); } perm.grantNamespacePermission("root", Namespaces.ACCUMULO_NAMESPACE_ID, NamespacePermission.ALTER_TABLE); + + // add the currlog location for root tablet current logs + zoo.putPersistentData(ZooUtil.getRoot(getInstance()) + RootTable.ZROOT_TABLET_CURRENT_LOGS, new byte[0], NodeExistsPolicy.SKIP); haveUpgradedZooKeeper = true; } catch (Exception ex) { - log.error("Error performing upgrade", ex); + // ACCUMULO-3651 Changed level to error and added FATAL to message for slf4j compatibility + log.error("FATAL: Error performing upgrade", ex); System.exit(1); } } http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/master/src/main/java/org/apache/accumulo/master/state/MergeStats.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/tserver/src/main/java/org/apache/accumulo/server/GarbageCollectionLogger.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java ---------------------------------------------------------------------- diff --cc server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java index 64d2052,711c497..accfc5e --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java @@@ -51,9 -49,9 +51,10 @@@ import org.apache.accumulo.tserver.Tabl import org.apache.accumulo.tserver.TabletServer; import org.apache.accumulo.tserver.log.DfsLogger.LoggerOperation; import org.apache.accumulo.tserver.tablet.CommitSession; +import org.apache.accumulo.tserver.tablet.Tablet; import org.apache.hadoop.fs.Path; - import org.apache.log4j.Logger; + import org.slf4j.Logger; + import org.slf4j.LoggerFactory; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; @@@ -220,35 -211,8 +221,35 @@@ public class TabletServerLogger } } + // callers are synchronized already + private void createNextLog() { + if (nextLogMaker.getActiveCount() == 0) { + nextLogMaker.submit(new Runnable() { + @Override + public void run() { + try { + log.debug("Creating next WAL"); + DfsLogger alog = new DfsLogger(tserver.getServerConfig(), syncCounter, flushCounter); + alog.open(tserver.getClientAddressString()); + for (Tablet tablet : tserver.getOnlineTablets()) { + tserver.addLoggersToMetadata(alog, tablet.getExtent()); + } + log.debug("Created next WAL " + alog.getFileName()); + alog = nextLog.getAndSet(alog); + if (alog != null) { + log.debug("closing unused next log: " + alog.getFileName()); + alog.close(); + } + } catch (Exception t) { - log.error(t, t); ++ log.error("{}", t.getMessage(), t); + } + } + }); + } + } + public void resetLoggers() throws IOException { - logSetLock.writeLock().lock(); + logIdLock.writeLock().lock(); try { close(); } finally { http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CommitSession.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/test/src/test/java/org/apache/accumulo/test/BadDeleteMarkersCreatedIT.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/test/src/test/java/org/apache/accumulo/test/CleanWalIT.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/test/src/test/java/org/apache/accumulo/test/ConditionalWriterIT.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ac176e19/test/src/test/java/org/apache/accumulo/test/ShellServerIT.java ----------------------------------------------------------------------