[ 
https://issues.apache.org/jira/browse/HBASE-16036?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph updated HBASE-16036:
---------------------------
    Description: 
Currently there is a bug inside of TableBasedReplicationQueuesImpl construction 
that prevents ReplicationServices from starting before Master is initialized. 
So currently each of the RS, including HMaster, with Replication enabled will 
attempt to create the ReplicationTable on initialization. 
Currently HMaster's initialization: serviceThreads.start() -> new 
TableBasedReplicationQueuesImpl() -> Replication Table Creation -> HMaster sets 
initialized flags.
But this fails when we try to create the Replication Table as the 
HMaster.checkInitialized() flag fails. This ends up blocking HMaster 
initialization and results in a deadlock.
So in this patch, I will create the Replication Table in the background of 
TableBasedReplicationQueuesImpl and only block when we actually call methods 
that access it.
This also requires a small refactoring of ReplicationSourceManager.init() so 
that we run the abandoned queue adoption in the background

Review board at: https://reviews.apache.org/r/48758/

  was:
Currently there is a bug inside of TableBasedReplicationQueuesImpl construction 
that prevents ReplicationServices from starting before Master is initialized. 
So currently each of the RS, including HMaster, with Replication enabled will 
attempt to create the ReplicationTable on initialization. 
Currently HMaster's initialization: serviceThreads.start() -> new 
TableBasedReplicationQueuesImpl() -> Replication Table Creation -> HMaster sets 
initialized flags.
But this fails when we try to create the Replication Table as the 
HMaster.checkInitialized() flag fails. This ends up blocking HMaster 
initialization and results in a deadlock.
So in this patch, I will create the Replication Table in the background of 
TableBasedReplicationQueuesImpl and only block when we actually call methods 
that access it.
This also requires a small refactoring of ReplicationSourceManager.init() so 
that we run the abandoned queue adoption in the background


> Fix ReplicationQueuesHBaseImpl initialization non-blocking
> ----------------------------------------------------------
>
>                 Key: HBASE-16036
>                 URL: https://issues.apache.org/jira/browse/HBASE-16036
>             Project: HBase
>          Issue Type: Sub-task
>          Components: Replication
>            Reporter: Joseph
>            Assignee: Joseph
>         Attachments: HBASE-16036.patch
>
>
> Currently there is a bug inside of TableBasedReplicationQueuesImpl 
> construction that prevents ReplicationServices from starting before Master is 
> initialized. So currently each of the RS, including HMaster, with Replication 
> enabled will attempt to create the ReplicationTable on initialization. 
> Currently HMaster's initialization: serviceThreads.start() -> new 
> TableBasedReplicationQueuesImpl() -> Replication Table Creation -> HMaster 
> sets initialized flags.
> But this fails when we try to create the Replication Table as the 
> HMaster.checkInitialized() flag fails. This ends up blocking HMaster 
> initialization and results in a deadlock.
> So in this patch, I will create the Replication Table in the background of 
> TableBasedReplicationQueuesImpl and only block when we actually call methods 
> that access it.
> This also requires a small refactoring of ReplicationSourceManager.init() so 
> that we run the abandoned queue adoption in the background
> Review board at: https://reviews.apache.org/r/48758/



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to