[
https://issues.apache.org/jira/browse/HBASE-12150?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14155925#comment-14155925
]
Hadoop QA commented on HBASE-12150:
-----------------------------------
{color:red}-1 overall{color}. Here are the results of testing the latest
attachment
http://issues.apache.org/jira/secure/attachment/12672464/HBASE-12150.patch
against trunk revision .
ATTACHMENT ID: 12672464
{color:green}+1 @author{color}. The patch does not contain any @author
tags.
{color:red}-1 tests included{color}. The patch doesn't appear to include
any new or modified tests.
Please justify why no new tests are needed for this
patch.
Also please list what manual steps were performed to
verify this patch.
{color:red}-1 patch{color}. The patch command could not apply the patch.
Console output:
https://builds.apache.org/job/PreCommit-HBASE-Build/11179//console
This message is automatically generated.
> Backport replication changes from HBASE-12145
> ---------------------------------------------
>
> Key: HBASE-12150
> URL: https://issues.apache.org/jira/browse/HBASE-12150
> Project: HBase
> Issue Type: Task
> Reporter: Andrew Purtell
> Assignee: Andrew Purtell
> Fix For: 0.98.7
>
> Attachments: HBASE-12150.patch
>
>
> HBASE-12145 makes all zk accesses synchronized in RecoverableZooKeeper in
> branch-1 +:
> {code}
> @@ -690,23 +692,23 @@ public class RecoverableZooKeeper {
> return newData;
> }
>
> - public long getSessionId() {
> - return zk == null ? null : zk.getSessionId();
> + public synchronized long getSessionId() {
> + return zk == null ? -1 : zk.getSessionId();
> }
>
> - public void close() throws InterruptedException {
> + public synchronized void close() throws InterruptedException {
> if (zk != null) zk.close();
> }
>
> - public States getState() {
> + public synchronized States getState() {
> return zk == null ? null : zk.getState();
> }
>
> - public ZooKeeper getZooKeeper() {
> + public synchronized ZooKeeper getZooKeeper() {
> return zk;
> }
>
> - public byte[] getSessionPasswd() {
> + public synchronized byte[] getSessionPasswd() {
> return zk == null ? null : zk.getSessionPasswd();
> }
> {code}
> It also makes this change:
> {code}
> @@ -391,8 +390,14 @@ public class ReplicationPeersZKImpl extends
> ReplicationStateZKBase implements Re
> if (peer == null) {
> return false;
> }
> - ((ConcurrentMap<String, ReplicationPeerZKImpl>)
> peerClusters).putIfAbsent(peerId, peer);
> - LOG.info("Added new peer cluster " +
> peer.getPeerConfig().getClusterKey());
> + ReplicationPeerZKImpl previous =
> + ((ConcurrentMap<String, ReplicationPeerZKImpl>)
> peerClusters).putIfAbsent(peerId, peer);
> + if (previous == null) {
> + LOG.info("Added new peer cluster=" +
> peer.getPeerConfig().getClusterKey());
> + } else {
> + LOG.info("Peer already present, " +
> previous.getPeerConfig().getClusterKey() +
> + ", new cluster=" + peer.getPeerConfig().getClusterKey());
> + }
> return true;
> }
> {code}
> We should keep the 0.98 code in sync with these changes because these affect
> correctness. Would like to avoid "this change works in branch-1 or master but
> breaks in some weird way in 0.98" issues.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)