[ https://issues.apache.org/jira/browse/HBASE-11580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14345939#comment-14345939 ]
Hudson commented on HBASE-11580: -------------------------------- SUCCESS: Integrated in HBase-1.1 #244 (See [https://builds.apache.org/job/HBase-1.1/244/]) HBASE-11580 Failover handling for secondary region replicas (enis: rev 9e7ad99593f6ce6f4f99e4ad67d271de51176f8f) * hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionUtils.java * hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/RegionReplicaReplicationEndpoint.java * hbase-client/src/main/java/org/apache/hadoop/hbase/executor/ExecutorType.java * hbase-server/src/main/java/org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.java * hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/RemoveColumnAction.java * hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionAdminServiceCallable.java * hbase-client/src/main/java/org/apache/hadoop/hbase/client/FlushRegionCallable.java * hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java * hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.java * hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java * hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java * hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java * hbase-protocol/src/main/protobuf/Admin.proto * hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.java * hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestRegionReplicaReplicationEndpointNoMaster.java * hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientSmallScanner.java * hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestRegionReplicaReplication.java * hbase-common/src/main/java/org/apache/hadoop/hbase/util/RetryCounter.java * hbase-client/src/main/java/org/apache/hadoop/hbase/executor/EventType.java * hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java * hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java * hbase-protocol/src/main/protobuf/WAL.proto * hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java * hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/AdminProtos.java * hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.java * hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/WALProtos.java > Failover handling for secondary region replicas > ----------------------------------------------- > > Key: HBASE-11580 > URL: https://issues.apache.org/jira/browse/HBASE-11580 > Project: HBase > Issue Type: Sub-task > Reporter: Enis Soztutar > Assignee: Enis Soztutar > Fix For: 2.0.0, 1.1.0 > > Attachments: hbase-11580_v2.patch, hbase-11580_v3.patch > > > With the async wal approach (HBASE-11568), the edits are not persisted (to > wal) in the secondary region replicas. However this means that we have to > deal with secondary region replica failures. > We can seek to re-replicate the edits from primary to the secondary when the > secondary region is opened in another server but this would mean to setup a > replication queue again, and holding on to the wals for longer. > Instead, we can design it so that the edits form the secondaries are not > persisted to wal, and if the secondary replica fails over, it will not start > serving reads until it has guaranteed that it has all the past data. > For guaranteeing that the secondary replica has all the edits before serving > reads, we can use flush and region opening markers. Whenever a region open > event is seen, it writes all the files at the time of opening to wal > (HBASE-11512). In case of flush, the flushed file is written as well, and the > secondary replica can do a ls for the store files and pick up all the files > before the seqId of the flushed file. So, in this design, the secodary > replica will wait until it sees and replays a flush or region open marker > from wal from primary. and then start serving. For speeding up replica > opening time, we can trigger a flush to the primary whenever the secondary > replica opens as an optimization. -- This message was sent by Atlassian JIRA (v6.3.4#6332)