-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21752/
-----------------------------------------------------------

Review request for accumulo.


Bugs: ACCUMULO-378
    https://issues.apache.org/jira/browse/ACCUMULO-378


Repository: accumulo


Description
-------

Initial implementation that covers (high-level) replication of "live" data 
using WAls (no support for bulk-imports yet), master->slave and master->master 
configurations, replication implementations to another Accumulo instance, and 
multiple replication "assignment" implementations (in what order do we 
replicate WALs, replicating WALs concurrently, etc). Normal code path (no 
tables configured for replication) should not have been altered. Some effort 
was put into code cleanup (compiler warnings, unused imports, formatting 
issues), but I'd ask that reviewers focus on the substance rather than the 
nitty-gritty at the moment. I think this is at a fairly stable point right now, 
so I wanted to make it available to those who plan to look at it.

"Big" things that aren't yet addressed: insight via monitor, bulk-import 
replication, authentication/authorization to the remote Accumulo cluster and 
encryption of data to remote Accumulo cluster. All of these (maybe not 
bulk-import replication) should be done before this gets merged in upstream.

The ITs are a great place to start looking to see how things work.


Diffs
-----

  core/pom.xml 2c3f648 
  core/src/main/java/org/apache/accumulo/core/Constants.java 7d602bb 
  core/src/main/java/org/apache/accumulo/core/client/Connector.java 4a2acff 
  
core/src/main/java/org/apache/accumulo/core/client/admin/ReplicationOperations.java
 PRE-CREATION 
  core/src/main/java/org/apache/accumulo/core/client/impl/ConnectorImpl.java 
0df35f6 
  core/src/main/java/org/apache/accumulo/core/client/impl/MasterClient.java 
1fa8f12 
  
core/src/main/java/org/apache/accumulo/core/client/impl/ReplicationClient.java 
PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/client/impl/ReplicationOperationsImpl.java
 PRE-CREATION 
  core/src/main/java/org/apache/accumulo/core/client/mock/MockAccumulo.java 
2c26ecc 
  core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java 
996198c 
  core/src/main/java/org/apache/accumulo/core/client/mock/MockTable.java 
cb50761 
  
core/src/main/java/org/apache/accumulo/core/client/mock/MockTableOperations.java
 a44a027 
  
core/src/main/java/org/apache/accumulo/core/client/replication/PeerExistsException.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/client/replication/PeerNotFoundException.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/client/replication/ReplicaSystem.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/client/replication/ReplicaSystemFactory.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/client/replication/ReplicationTable.java
 PRE-CREATION 
  core/src/main/java/org/apache/accumulo/core/conf/Property.java 62b0a33 
  core/src/main/java/org/apache/accumulo/core/data/ConditionalMutation.java 
e43968c 
  core/src/main/java/org/apache/accumulo/core/data/Mutation.java 42fa143 
  core/src/main/java/org/apache/accumulo/core/data/thrift/MultiScanResult.java 
f0b8a87 
  core/src/main/java/org/apache/accumulo/core/data/thrift/ScanResult.java 
6472587 
  
core/src/main/java/org/apache/accumulo/core/data/thrift/TConditionalMutation.java
 3f9b3f7 
  core/src/main/java/org/apache/accumulo/core/data/thrift/TMutation.java 
f698892 
  core/src/main/java/org/apache/accumulo/core/data/thrift/UpdateErrors.java 
59ce5cb 
  core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java ceb4411 
  
core/src/main/java/org/apache/accumulo/core/metadata/schema/MetadataSchema.java 
06eae23 
  core/src/main/java/org/apache/accumulo/core/protobuf/ProtobufUtil.java 
PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/AccumuloReplicationReplayer.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/PrintReplicationRecords.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/RemoteReplicationErrorCode.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtil.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/ReplicationCoordinatorErrorCode.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/ReplicationSchema.java 
PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/ReplicationTarget.java 
PRE-CREATION 
  core/src/main/java/org/apache/accumulo/core/replication/StatusUtil.java 
PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/proto/Replication.java 
PRE-CREATION 
  core/src/main/java/org/apache/accumulo/core/replication/thrift/KeyValues.java 
PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/thrift/RemoteCoordinationException.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/thrift/RemoteReplicationException.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/thrift/Replication.java 
PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/thrift/ReplicationCoordinator.java
 PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/replication/thrift/ReplicationServicer.java
 PRE-CREATION 
  core/src/main/java/org/apache/accumulo/core/replication/thrift/WalEdits.java 
PRE-CREATION 
  core/src/main/java/org/apache/accumulo/core/schema/Section.java PRE-CREATION 
  
core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ReplicationFailedException.java
 PRE-CREATION 
  core/src/main/protobuf/replication.proto PRE-CREATION 
  core/src/main/scripts/generate-protobuf.sh PRE-CREATION 
  core/src/main/scripts/generate-thrift.sh 5a5d69f 
  core/src/main/thrift/data.thrift ae6f439 
  core/src/main/thrift/replication.thrift PRE-CREATION 
  
core/src/test/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtilTest.java
 PRE-CREATION 
  
core/src/test/java/org/apache/accumulo/core/replication/ReplicationOperationsImplTest.java
 PRE-CREATION 
  
core/src/test/java/org/apache/accumulo/core/replication/ReplicationSchemaTest.java
 PRE-CREATION 
  
core/src/test/java/org/apache/accumulo/core/replication/ReplicationTargetTest.java
 PRE-CREATION 
  core/src/test/java/org/apache/accumulo/core/replication/StatusUtilTest.java 
PRE-CREATION 
  core/src/test/java/org/apache/accumulo/core/replication/proto/StatusTest.java 
PRE-CREATION 
  docs/src/main/resources/design/ACCUMULO-378-design.mdtext PRE-CREATION 
  docs/src/main/resources/state/replicationstatus.gv PRE-CREATION 
  docs/src/main/resources/state/replicationstatus.png PRE-CREATION 
  
minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloConfigImpl.java
 3258991 
  server/base/pom.xml f698621 
  
server/base/src/main/java/org/apache/accumulo/server/conf/TableConfigurationCopy.java
 PRE-CREATION 
  
server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
 ecb0db8 
  server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java 
436667c 
  server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java 
10cdce6 
  
server/base/src/main/java/org/apache/accumulo/server/replication/AbstractWorkAssigner.java
 PRE-CREATION 
  
server/base/src/main/java/org/apache/accumulo/server/replication/ReplicationTable.java
 PRE-CREATION 
  
server/base/src/main/java/org/apache/accumulo/server/replication/StatusCombiner.java
 PRE-CREATION 
  
server/base/src/main/java/org/apache/accumulo/server/replication/WorkAssigner.java
 PRE-CREATION 
  
server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
 e936b97 
  
server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
 341f39a 
  
server/base/src/main/java/org/apache/accumulo/server/util/ReplicationTableUtil.java
 PRE-CREATION 
  server/base/src/main/java/org/apache/accumulo/server/util/SystemPropUtil.java 
1d93f90 
  
server/base/src/main/java/org/apache/accumulo/server/zookeeper/DistributedWorkQueue.java
 4738c2b 
  
server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
 82e5885 
  
server/base/src/test/java/org/apache/accumulo/server/replication/ReplicationTableTest.java
 PRE-CREATION 
  
server/base/src/test/java/org/apache/accumulo/server/replication/StatusCombinerTest.java
 PRE-CREATION 
  
server/base/src/test/java/org/apache/accumulo/server/util/ReplicationTableUtilTest.java
 PRE-CREATION 
  server/gc/pom.xml 5c501de 
  
server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectWriteAheadLogs.java
 ae850af 
  
server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectionAlgorithm.java 
40fb847 
  
server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectionEnvironment.java
 3e36617 
  server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java 
7ebfff0 
  
server/gc/src/main/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferences.java
 PRE-CREATION 
  
server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectWriteAheadLogsTest.java
 f90b965 
  server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectionTest.java 
537fc46 
  
server/gc/src/test/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferencesTest.java
 PRE-CREATION 
  server/gc/src/test/resources/log4j.properties e74337f 
  server/master/pom.xml fd53a8c 
  server/master/src/main/java/org/apache/accumulo/master/Master.java 526ca8a 
  
server/master/src/main/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssigner.java
 PRE-CREATION 
  
server/master/src/main/java/org/apache/accumulo/master/replication/FinishedWorkUpdater.java
 PRE-CREATION 
  
server/master/src/main/java/org/apache/accumulo/master/replication/MasterReplicationCoordinator.java
 PRE-CREATION 
  
server/master/src/main/java/org/apache/accumulo/master/replication/RemoveCompleteReplicationRecords.java
 PRE-CREATION 
  
server/master/src/main/java/org/apache/accumulo/master/replication/ReplicationDriver.java
 PRE-CREATION 
  
server/master/src/main/java/org/apache/accumulo/master/replication/SequentialWorkAssigner.java
 PRE-CREATION 
  
server/master/src/main/java/org/apache/accumulo/master/replication/StatusMaker.java
 PRE-CREATION 
  
server/master/src/main/java/org/apache/accumulo/master/replication/WorkDriver.java
 PRE-CREATION 
  
server/master/src/main/java/org/apache/accumulo/master/replication/WorkMaker.java
 PRE-CREATION 
  
server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java
 5b64053 
  
server/master/src/test/java/org/apache/accumulo/master/replication/AbstractWorkAssignerTest.java
 PRE-CREATION 
  
server/master/src/test/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssignerTest.java
 PRE-CREATION 
  
server/master/src/test/java/org/apache/accumulo/master/replication/FinishedWorkUpdaterTest.java
 PRE-CREATION 
  
server/master/src/test/java/org/apache/accumulo/master/replication/MasterReplicationCoordinatorTest.java
 PRE-CREATION 
  
server/master/src/test/java/org/apache/accumulo/master/replication/RemoveCompleteReplicationRecordsTest.java
 PRE-CREATION 
  
server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java
 PRE-CREATION 
  
server/master/src/test/java/org/apache/accumulo/master/replication/StatusMakerTest.java
 PRE-CREATION 
  
server/master/src/test/java/org/apache/accumulo/master/replication/WorkMakerTest.java
 PRE-CREATION 
  server/master/src/test/resources/log4j.properties e74337f 
  server/tserver/pom.xml 100bc2d 
  server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java fadf4ed 
  server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java 
144d59b 
  
server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java
 871f4ae 
  
server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
 PRE-CREATION 
  
server/tserver/src/main/java/org/apache/accumulo/tserver/replication/BatchWriterReplicationReplayer.java
 PRE-CREATION 
  
server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationProcessor.java
 PRE-CREATION 
  
server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationServicerHandler.java
 PRE-CREATION 
  
server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationWorker.java
 PRE-CREATION 
  
server/tserver/src/test/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystemTest.java
 PRE-CREATION 
  
server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java
 PRE-CREATION 
  server/tserver/src/test/resources/log4j.properties e74337f 
  
test/src/main/java/org/apache/accumulo/test/replication/MockReplicaSystem.java 
PRE-CREATION 
  
test/src/main/java/org/apache/accumulo/test/replication/ReplicationTablesPrinterThread.java
 PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/CyclicReplicationIT.java
 PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/ReplicationDeadlockTest.java
 PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/ReplicationFilesClosedAfterUnusedTest.java
 PRE-CREATION 
  test/src/test/java/org/apache/accumulo/test/replication/ReplicationIT.java 
PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/ReplicationPortAdvertisementIT.java
 PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/ReplicationSequentialIT.java
 PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/ReplicationSourceOnlyIT.java
 PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/ReplicationTablesMacTest.java
 PRE-CREATION 
  test/src/test/java/org/apache/accumulo/test/replication/ReplicationTest.java 
PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/ReplicationWithGCIT.java
 PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/ReplicationWithMakerTest.java
 PRE-CREATION 
  
test/src/test/java/org/apache/accumulo/test/replication/StatusCombinerMacTest.java
 PRE-CREATION 
  test/src/test/resources/log4j.properties 3fa1983 

Diff: https://reviews.apache.org/r/21752/diff/


Testing
-------

All existing unit and integration tests pass. Expected as normal code path 
hasn't changed.

Loads of new tests included, many ITs which ensure that replication 
"bookkeeping" is cleaned up when appropriate, all data is replicated to a peer 
(and not over-replicated or re-replicated).


Thanks,

Josh Elser

Reply via email to