Revert "HBASE-20597 Use a lock to serialize access to a shared reference to ZooKeeperWatcher in HBaseReplicationEndpoint"
This reverts commit 60dcef289b
.
This commit is contained in:
parent
d36cce1574
commit
7f154dc20e
|
@ -43,22 +43,21 @@ import org.slf4j.LoggerFactory;
|
||||||
* target cluster is an HBase cluster.
|
* target cluster is an HBase cluster.
|
||||||
*/
|
*/
|
||||||
@InterfaceAudience.Private
|
@InterfaceAudience.Private
|
||||||
|
@edu.umd.cs.findbugs.annotations.SuppressWarnings(value="MT_CORRECTNESS",
|
||||||
|
justification="Thinks zkw needs to be synchronized access but should be fine as is.")
|
||||||
public abstract class HBaseReplicationEndpoint extends BaseReplicationEndpoint
|
public abstract class HBaseReplicationEndpoint extends BaseReplicationEndpoint
|
||||||
implements Abortable {
|
implements Abortable {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(HBaseReplicationEndpoint.class);
|
private static final Logger LOG = LoggerFactory.getLogger(HBaseReplicationEndpoint.class);
|
||||||
|
|
||||||
private Object zkwLock = new Object();
|
private ZKWatcher zkw = null; // FindBugs: MT_CORRECTNESS
|
||||||
private ZKWatcher zkw = null;
|
|
||||||
|
|
||||||
private List<ServerName> regionServers = new ArrayList<>(0);
|
private List<ServerName> regionServers = new ArrayList<>(0);
|
||||||
private long lastRegionServerUpdate;
|
private long lastRegionServerUpdate;
|
||||||
|
|
||||||
protected void disconnect() {
|
protected void disconnect() {
|
||||||
synchronized (zkwLock) {
|
if (zkw != null) {
|
||||||
if (zkw != null) {
|
zkw.close();
|
||||||
zkw.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,9 +112,7 @@ public abstract class HBaseReplicationEndpoint extends BaseReplicationEndpoint
|
||||||
public synchronized UUID getPeerUUID() {
|
public synchronized UUID getPeerUUID() {
|
||||||
UUID peerUUID = null;
|
UUID peerUUID = null;
|
||||||
try {
|
try {
|
||||||
synchronized (zkwLock) {
|
peerUUID = ZKClusterId.getUUIDForCluster(zkw);
|
||||||
peerUUID = ZKClusterId.getUUIDForCluster(zkw);
|
|
||||||
}
|
|
||||||
} catch (KeeperException ke) {
|
} catch (KeeperException ke) {
|
||||||
reconnect(ke);
|
reconnect(ke);
|
||||||
}
|
}
|
||||||
|
@ -127,9 +124,7 @@ public abstract class HBaseReplicationEndpoint extends BaseReplicationEndpoint
|
||||||
* @return zk connection
|
* @return zk connection
|
||||||
*/
|
*/
|
||||||
protected ZKWatcher getZkw() {
|
protected ZKWatcher getZkw() {
|
||||||
synchronized (zkwLock) {
|
return zkw;
|
||||||
return zkw;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -137,14 +132,10 @@ public abstract class HBaseReplicationEndpoint extends BaseReplicationEndpoint
|
||||||
* @throws IOException If anything goes wrong connecting
|
* @throws IOException If anything goes wrong connecting
|
||||||
*/
|
*/
|
||||||
void reloadZkWatcher() throws IOException {
|
void reloadZkWatcher() throws IOException {
|
||||||
synchronized (zkwLock) {
|
if (zkw != null) zkw.close();
|
||||||
if (zkw != null) {
|
zkw = new ZKWatcher(ctx.getConfiguration(),
|
||||||
zkw.close();
|
|
||||||
}
|
|
||||||
zkw = new ZKWatcher(ctx.getConfiguration(),
|
|
||||||
"connection to cluster: " + ctx.getPeerId(), this);
|
"connection to cluster: " + ctx.getPeerId(), this);
|
||||||
zkw.registerListener(new PeerRegionServerListener(this));
|
getZkw().registerListener(new PeerRegionServerListener(this));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -182,15 +173,13 @@ public abstract class HBaseReplicationEndpoint extends BaseReplicationEndpoint
|
||||||
* for this peer cluster
|
* for this peer cluster
|
||||||
* @return list of addresses
|
* @return list of addresses
|
||||||
*/
|
*/
|
||||||
public List<ServerName> getRegionServers() {
|
// Synchronize peer cluster connection attempts to avoid races and rate
|
||||||
|
// limit connections when multiple replication sources try to connect to
|
||||||
|
// the peer cluster. If the peer cluster is down we can get out of control
|
||||||
|
// over time.
|
||||||
|
public synchronized List<ServerName> getRegionServers() {
|
||||||
try {
|
try {
|
||||||
// Synchronize peer cluster connection attempts to avoid races and rate
|
setRegionServers(fetchSlavesAddresses(this.getZkw()));
|
||||||
// limit connections when multiple replication sources try to connect to
|
|
||||||
// the peer cluster. If the peer cluster is down we can get out of control
|
|
||||||
// over time.
|
|
||||||
synchronized (zkwLock) {
|
|
||||||
setRegionServers(fetchSlavesAddresses(zkw));
|
|
||||||
}
|
|
||||||
} catch (KeeperException ke) {
|
} catch (KeeperException ke) {
|
||||||
if (LOG.isDebugEnabled()) {
|
if (LOG.isDebugEnabled()) {
|
||||||
LOG.debug("Fetch slaves addresses failed", ke);
|
LOG.debug("Fetch slaves addresses failed", ke);
|
||||||
|
|
Loading…
Reference in New Issue