hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joseph (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-16036) Fix ReplicationQueuesHBaseImpl initialization non-blocking
Date Wed, 15 Jun 2016 21:09:09 GMT

     [ 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

  was:Currently there is a bug inside of TableBased that prevents ReplicationServices from
starting before Master is initialized


> 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
>
> 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



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

Mime
View raw message