hbase git commit: HBASE-15650 Remove TimeRangeTracker as point of contention when many threads reading a StoreFile
Repository: hbase Updated Branches: refs/heads/branch-1.3 6f4b75861 -> 4b69faa19 HBASE-15650 Remove TimeRangeTracker as point of contention when many threads reading a StoreFile Refactor so we use the immutable, unsynchronized TimeRange when doing time-based checks at read time rather than use heavily synchronized TimeRangeTracker; let TimeRangeTracker be for write-time only. While in here, changed the Segment stuff so that when an immutable segment, it uses TimeRange rather than TimeRangeTracker too. M hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java Make allTime final. Add a includesTimeRange method copied from TimeRangeTracker. M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java Change name of a few methods so they match TimeRange methods that do same thing. (getTimeRangeTracker, getTimeRange, toTimeRange) add utility methods M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java Change Reader to use TimeRange-based checks instead of TimeRangeTracker. Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/4b69faa1 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/4b69faa1 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/4b69faa1 Branch: refs/heads/branch-1.3 Commit: 4b69faa1903303419dfcf027a2268524816c7a35 Parents: 6f4b758 Author: stackAuthored: Fri Apr 15 10:56:56 2016 -0700 Committer: stack Committed: Fri Apr 15 20:12:49 2016 -0700 -- .../org/apache/hadoop/hbase/io/TimeRange.java | 33 +++-- .../hbase/io/hfile/HFilePrettyPrinter.java | 3 +- .../hbase/regionserver/DefaultMemStore.java | 6 +- .../hadoop/hbase/regionserver/StoreFile.java| 63 +++- .../hbase/regionserver/TimeRangeTracker.java| 78 .../hbase/mapreduce/TestHFileOutputFormat.java | 7 +- .../hbase/mapreduce/TestHFileOutputFormat2.java | 8 +- .../hbase/regionserver/MockStoreFile.java | 8 +- .../regionserver/TestTimeRangeTracker.java | 10 +-- 9 files changed, 139 insertions(+), 77 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/4b69faa1/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java -- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java index 672cc9d..2b70644 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java @@ -36,9 +36,13 @@ import org.apache.hadoop.hbase.util.Bytes; @InterfaceAudience.Public @InterfaceStability.Stable public class TimeRange { - private long minStamp = 0L; - private long maxStamp = Long.MAX_VALUE; - private boolean allTime = false; + static final long INITIAL_MIN_TIMESTAMP = 0L; + private static final long MIN_TIME = INITIAL_MIN_TIMESTAMP; + static final long INITIAL_MAX_TIMESTAMP = Long.MAX_VALUE; + static final long MAX_TIME = INITIAL_MAX_TIMESTAMP; + private long minStamp = MIN_TIME; + private long maxStamp = MAX_TIME; + private final boolean allTime; /** * Default constructor. @@ -58,6 +62,7 @@ public class TimeRange { @Deprecated public TimeRange(long minStamp) { this.minStamp = minStamp; +this.allTime = this.minStamp == MIN_TIME; } /** @@ -68,6 +73,7 @@ public class TimeRange { @Deprecated public TimeRange(byte [] minStamp) { this.minStamp = Bytes.toLong(minStamp); +this.allTime = false; } /** @@ -84,11 +90,12 @@ public class TimeRange { throw new IllegalArgumentException("Timestamp cannot be negative. minStamp:" + minStamp + ", maxStamp:" + maxStamp); } -if(maxStamp < minStamp) { +if (maxStamp < minStamp) { throw new IOException("maxStamp is smaller than minStamp"); } this.minStamp = minStamp; this.maxStamp = maxStamp; +this.allTime = this.minStamp == MIN_TIME && this.maxStamp == MAX_TIME; } /** @@ -149,12 +156,28 @@ public class TimeRange { * @return true if within TimeRange, false if not */ public boolean withinTimeRange(long timestamp) { -if(allTime) return true; +if (this.allTime) { + return true; +} // check if >= minStamp return (minStamp <= timestamp && timestamp < maxStamp); } /** + * Check if the range has any overlap with TimeRange + * @param tr TimeRange + * @return True if there is overlap, false otherwise + */ + // This method came from TimeRangeTracker. We used to go there for this function but better + // to come here to the immutable, unsynchronized datastructure at
hbase git commit: HBASE-15650 Remove TimeRangeTracker as point of contention when many threads reading a StoreFile
Repository: hbase Updated Branches: refs/heads/branch-1 043ffd1db -> fd4992335 HBASE-15650 Remove TimeRangeTracker as point of contention when many threads reading a StoreFile Refactor so we use the immutable, unsynchronized TimeRange when doing time-based checks at read time rather than use heavily synchronized TimeRangeTracker; let TimeRangeTracker be for write-time only. While in here, changed the Segment stuff so that when an immutable segment, it uses TimeRange rather than TimeRangeTracker too. M hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java Make allTime final. Add a includesTimeRange method copied from TimeRangeTracker. M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java Change name of a few methods so they match TimeRange methods that do same thing. (getTimeRangeTracker, getTimeRange, toTimeRange) add utility methods M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java Change Reader to use TimeRange-based checks instead of TimeRangeTracker. Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/fd499233 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/fd499233 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/fd499233 Branch: refs/heads/branch-1 Commit: fd49923350ab2a3ba1258f3e76ffec8bf2f60d55 Parents: 043ffd1 Author: stackAuthored: Fri Apr 15 10:56:56 2016 -0700 Committer: stack Committed: Fri Apr 15 16:56:05 2016 -0700 -- .../org/apache/hadoop/hbase/io/TimeRange.java | 37 +++--- .../hbase/io/hfile/HFilePrettyPrinter.java | 3 +- .../hbase/regionserver/DefaultMemStore.java | 6 +- .../hadoop/hbase/regionserver/StoreFile.java| 63 +++- .../hbase/regionserver/TimeRangeTracker.java| 78 .../hbase/mapreduce/TestHFileOutputFormat.java | 7 +- .../hbase/mapreduce/TestHFileOutputFormat2.java | 8 +- .../hbase/regionserver/MockStoreFile.java | 8 +- .../regionserver/TestTimeRangeTracker.java | 10 +-- 9 files changed, 137 insertions(+), 83 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/fd499233/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java -- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java index 4ec062d..2b70644 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java @@ -36,11 +36,13 @@ import org.apache.hadoop.hbase.util.Bytes; @InterfaceAudience.Public @InterfaceStability.Stable public class TimeRange { - private static final long MIN_TIME = 0L; - private static final long MAX_TIME = Long.MAX_VALUE; + static final long INITIAL_MIN_TIMESTAMP = 0L; + private static final long MIN_TIME = INITIAL_MIN_TIMESTAMP; + static final long INITIAL_MAX_TIMESTAMP = Long.MAX_VALUE; + static final long MAX_TIME = INITIAL_MAX_TIMESTAMP; private long minStamp = MIN_TIME; private long maxStamp = MAX_TIME; - private boolean allTime = false; + private final boolean allTime; /** * Default constructor. @@ -60,9 +62,7 @@ public class TimeRange { @Deprecated public TimeRange(long minStamp) { this.minStamp = minStamp; -if (this.minStamp == MIN_TIME){ - this.allTime = true; -} +this.allTime = this.minStamp == MIN_TIME; } /** @@ -73,6 +73,7 @@ public class TimeRange { @Deprecated public TimeRange(byte [] minStamp) { this.minStamp = Bytes.toLong(minStamp); +this.allTime = false; } /** @@ -89,14 +90,12 @@ public class TimeRange { throw new IllegalArgumentException("Timestamp cannot be negative. minStamp:" + minStamp + ", maxStamp:" + maxStamp); } -if(maxStamp < minStamp) { +if (maxStamp < minStamp) { throw new IOException("maxStamp is smaller than minStamp"); } this.minStamp = minStamp; this.maxStamp = maxStamp; -if (this.minStamp == MIN_TIME && this.maxStamp == MAX_TIME){ - this.allTime = true; -} +this.allTime = this.minStamp == MIN_TIME && this.maxStamp == MAX_TIME; } /** @@ -157,12 +156,28 @@ public class TimeRange { * @return true if within TimeRange, false if not */ public boolean withinTimeRange(long timestamp) { -if(allTime) return true; +if (this.allTime) { + return true; +} // check if >= minStamp return (minStamp <= timestamp && timestamp < maxStamp); } /** + * Check if the range has any overlap with TimeRange + * @param tr TimeRange + * @return True if there is
hbase git commit: HBASE-15187 Integrate CSRF prevention filter to REST gateway
Repository: hbase Updated Branches: refs/heads/branch-1 6cf4bfe62 -> 043ffd1db HBASE-15187 Integrate CSRF prevention filter to REST gateway Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/043ffd1d Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/043ffd1d Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/043ffd1d Branch: refs/heads/branch-1 Commit: 043ffd1db1f971b7a61de667768b99d9efbd4427 Parents: 6cf4bfe Author: tedyuAuthored: Fri Apr 15 13:46:30 2016 -0700 Committer: tedyu Committed: Fri Apr 15 13:46:30 2016 -0700 -- .../src/main/resources/hbase-default.xml| 25 ++ .../apache/hadoop/hbase/rest/RESTServer.java| 86 +- .../apache/hadoop/hbase/rest/client/Client.java | 107 ++- .../rest/filter/RestCsrfPreventionFilter.java | 287 +++ .../hbase/rest/HBaseRESTTestingUtility.java | 2 + .../hadoop/hbase/rest/TestMultiRowResource.java | 49 +++- .../hadoop/hbase/rest/TestSchemaResource.java | 66 - 7 files changed, 587 insertions(+), 35 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/043ffd1d/hbase-common/src/main/resources/hbase-default.xml -- diff --git a/hbase-common/src/main/resources/hbase-default.xml b/hbase-common/src/main/resources/hbase-default.xml index 94f1e6d..fae986e 100644 --- a/hbase-common/src/main/resources/hbase-default.xml +++ b/hbase-common/src/main/resources/hbase-default.xml @@ -1355,6 +1355,31 @@ possible configurations would overwhelm and obscure the important. as the SimpleLoadBalancer). + + hbase.rest.csrf.enabled + false + +Set to true to enable protection against cross-site request forgery (CSRF) + + + + hbase.rest-csrf.browser-useragents-regex + ^Mozilla.*,^Opera.* + +A comma-separated list of regular expressions used to match against an HTTP +request's User-Agent header when protection against cross-site request +forgery (CSRF) is enabled for REST server by setting +hbase.rest.csrf.enabled to true. If the incoming User-Agent matches +any of these regular expressions, then the request is considered to be sent +by a browser, and therefore CSRF prevention is enforced. If the request's +User-Agent does not match any of these regular expressions, then the request +is considered to be sent by something other than a browser, such as scripted +automation. In this case, CSRF is not a potential attack vector, so +the prevention is not enforced. This helps achieve backwards-compatibility +with existing automation that has not been updated to send the CSRF +prevention header. + + hbase.security.exec.permission.checks false http://git-wip-us.apache.org/repos/asf/hbase/blob/043ffd1d/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java -- diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java index ad8c65d..9dac84a 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java @@ -19,9 +19,11 @@ package org.apache.hadoop.hbase.rest; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.HelpFormatter; @@ -35,13 +37,17 @@ import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseInterfaceAudience; +import org.apache.hadoop.hbase.http.HttpServer; import org.apache.hadoop.hbase.http.InfoServer; import org.apache.hadoop.hbase.rest.filter.AuthFilter; +import org.apache.hadoop.hbase.rest.filter.RestCsrfPreventionFilter; import org.apache.hadoop.hbase.security.UserProvider; import org.apache.hadoop.hbase.util.DNS; import org.apache.hadoop.hbase.util.HttpServerUtil; +import org.apache.hadoop.hbase.util.Pair; import org.apache.hadoop.hbase.util.Strings; import org.apache.hadoop.hbase.util.VersionInfo; +import org.apache.hadoop.util.StringUtils; import org.mortbay.jetty.Connector; import org.mortbay.jetty.Server; import org.mortbay.jetty.nio.SelectChannelConnector; @@ -66,6 +72,15 @@ import com.sun.jersey.spi.container.servlet.ServletContainer; */ @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS) public class RESTServer implements Constants { + static Log LOG
hbase git commit: HBASE-15650 Remove TimeRangeTracker as point of contention when many threads reading a StoreFile
Repository: hbase Updated Branches: refs/heads/master 6930da781 -> d815211f5 HBASE-15650 Remove TimeRangeTracker as point of contention when many threads reading a StoreFile Refactor so we use the immutable, unsynchronized TimeRange when doing time-based checks at read time rather than use heavily synchronized TimeRangeTracker; let TimeRangeTracker be for write-time only. While in here, changed the Segment stuff so that when an immutable segment, it uses TimeRange rather than TimeRangeTracker too. M hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java Make allTime final. Add a includesTimeRange method copied from TimeRangeTracker. M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java Change name of a few methods so they match TimeRange methods that do same thing. (getTimeRangeTracker, getTimeRange, toTimeRange) add utility methods M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ImmutableSegment.java Change ImmutableSegment so it uses a TimeRange rather than TimeRangeTracker.. it is read-only. Redo shouldSeek, getMinTimestamp, updateMetaInfo, and getTimeRangeTracker so we use TimeRange-based implementations instead of TimeRangeTracker implementations. M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MutableSegment.java Implement shouldSeek, getMinTimestamp, updateMetaInfo, and getTimeRangeTracker using TimeRangeTracker. M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java Make methods that were using TimeRangeTracker abstract and instead have the implementations do these methods how they want either using TimeRangeTracker when a mutable segment or TimeRange when an immutable segment. M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java Change Reader to use TimeRange-based checks instead of TimeRangeTracker. Signed-off-by: stackProject: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/d815211f Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/d815211f Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/d815211f Branch: refs/heads/master Commit: d815211f5a2583e4b03c627585709872cc711b7e Parents: 6930da7 Author: stack Authored: Thu Apr 14 16:53:12 2016 -0700 Committer: stack Committed: Fri Apr 15 10:13:42 2016 -0700 -- .../org/apache/hadoop/hbase/io/TimeRange.java | 37 +++--- .../hbase/io/hfile/HFilePrettyPrinter.java | 27 --- .../hbase/mob/DefaultMobStoreFlusher.java | 2 +- .../hbase/regionserver/AbstractMemStore.java| 3 +- .../hbase/regionserver/DefaultMemStore.java | 5 +- .../hbase/regionserver/ImmutableSegment.java| 27 ++- .../hbase/regionserver/MemStoreSnapshot.java| 3 +- .../hbase/regionserver/MutableSegment.java | 28 +++- .../hadoop/hbase/regionserver/Segment.java | 43 --- .../hadoop/hbase/regionserver/StoreFile.java| 22 ++ .../hbase/regionserver/StoreFileReader.java | 14 ++-- .../hbase/regionserver/StoreFileWriter.java | 26 --- .../hbase/regionserver/TimeRangeTracker.java| 76 .../regionserver/compactions/Compactor.java | 10 +-- .../hbase/mapreduce/TestHFileOutputFormat2.java | 8 +-- .../hbase/regionserver/MockStoreFile.java | 8 +-- .../regionserver/TestTimeRangeTracker.java | 10 +-- 17 files changed, 213 insertions(+), 136 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/d815211f/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java -- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java index 212ad45..d5b2509 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java @@ -36,11 +36,13 @@ import org.apache.hadoop.hbase.util.Bytes; @InterfaceAudience.Public @InterfaceStability.Stable public class TimeRange { - private static final long MIN_TIME = 0L; - private static final long MAX_TIME = Long.MAX_VALUE; + static final long INITIAL_MIN_TIMESTAMP = 0l; + private static final long MIN_TIME = INITIAL_MIN_TIMESTAMP; + static final long INITIAL_MAX_TIMESTAMP = Long.MAX_VALUE; + static final long MAX_TIME = INITIAL_MAX_TIMESTAMP; private long minStamp = MIN_TIME; private long maxStamp = MAX_TIME; - private boolean allTime = false; + private final boolean allTime; /** *
hbase git commit: HBASE-15187 Integrate CSRF prevention filter to REST gateway
Repository: hbase Updated Branches: refs/heads/master 3e42f8260 -> 6930da781 HBASE-15187 Integrate CSRF prevention filter to REST gateway Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6930da78 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6930da78 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6930da78 Branch: refs/heads/master Commit: 6930da781b2142ed8a0e6fc67095453dea38a072 Parents: 3e42f82 Author: tedyuAuthored: Fri Apr 15 09:38:31 2016 -0700 Committer: tedyu Committed: Fri Apr 15 09:38:31 2016 -0700 -- .../src/main/resources/hbase-default.xml| 25 ++ .../apache/hadoop/hbase/rest/RESTServer.java| 86 +- .../apache/hadoop/hbase/rest/client/Client.java | 107 ++- .../rest/filter/RestCsrfPreventionFilter.java | 287 +++ .../hbase/rest/HBaseRESTTestingUtility.java | 2 + .../hadoop/hbase/rest/TestMultiRowResource.java | 49 +++- .../hadoop/hbase/rest/TestSchemaResource.java | 66 - 7 files changed, 587 insertions(+), 35 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/6930da78/hbase-common/src/main/resources/hbase-default.xml -- diff --git a/hbase-common/src/main/resources/hbase-default.xml b/hbase-common/src/main/resources/hbase-default.xml index e50e89e..91c0501 100644 --- a/hbase-common/src/main/resources/hbase-default.xml +++ b/hbase-common/src/main/resources/hbase-default.xml @@ -1467,6 +1467,31 @@ possible configurations would overwhelm and obscure the important. http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.html + + hbase.rest.csrf.enabled + false + +Set to true to enable protection against cross-site request forgery (CSRF) + + + + hbase.rest-csrf.browser-useragents-regex + ^Mozilla.*,^Opera.* + +A comma-separated list of regular expressions used to match against an HTTP +request's User-Agent header when protection against cross-site request +forgery (CSRF) is enabled for REST server by setting +hbase.rest.csrf.enabled to true. If the incoming User-Agent matches +any of these regular expressions, then the request is considered to be sent +by a browser, and therefore CSRF prevention is enforced. If the request's +User-Agent does not match any of these regular expressions, then the request +is considered to be sent by something other than a browser, such as scripted +automation. In this case, CSRF is not a potential attack vector, so +the prevention is not enforced. This helps achieve backwards-compatibility +with existing automation that has not been updated to send the CSRF +prevention header. + + hbase.security.exec.permission.checks false http://git-wip-us.apache.org/repos/asf/hbase/blob/6930da78/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java -- diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java index 0460b0a..b26de54 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java @@ -19,9 +19,11 @@ package org.apache.hadoop.hbase.rest; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.HelpFormatter; @@ -35,13 +37,17 @@ import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseInterfaceAudience; +import org.apache.hadoop.hbase.http.HttpServer; import org.apache.hadoop.hbase.http.InfoServer; import org.apache.hadoop.hbase.rest.filter.AuthFilter; +import org.apache.hadoop.hbase.rest.filter.RestCsrfPreventionFilter; import org.apache.hadoop.hbase.security.UserProvider; import org.apache.hadoop.hbase.util.DNS; import org.apache.hadoop.hbase.util.HttpServerUtil; +import org.apache.hadoop.hbase.util.Pair; import org.apache.hadoop.hbase.util.Strings; import org.apache.hadoop.hbase.util.VersionInfo; +import org.apache.hadoop.util.StringUtils; import org.mortbay.jetty.Connector; import org.mortbay.jetty.Server; import org.mortbay.jetty.nio.SelectChannelConnector; @@ -66,6 +72,15 @@ import com.sun.jersey.spi.container.servlet.ServletContainer; */
[5/6] hbase git commit: HBASE-15622 Superusers does not consider the keytab credentials
HBASE-15622 Superusers does not consider the keytab credentials Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/1bca4820 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/1bca4820 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/1bca4820 Branch: refs/heads/branch-1.1 Commit: 1bca4820f90d97de324641478658ec1b7902e0d5 Parents: b6a5a51 Author: Matteo BertozziAuthored: Fri Apr 15 08:28:39 2016 -0700 Committer: Matteo Bertozzi Committed: Fri Apr 15 08:36:35 2016 -0700 -- .../java/org/apache/hadoop/hbase/regionserver/HRegionServer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/1bca4820/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index da36daa..bea4283 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -498,7 +498,6 @@ public class HRegionServer extends HasThread implements this.conf = conf; checkCodecs(this.conf); this.userProvider = UserProvider.instantiate(conf); -Superusers.initialize(conf); FSUtils.setupShortCircuitRead(this.conf); // Disable usage of meta replicas in the regionserver this.conf.setBoolean(HConstants.USE_META_REPLICAS, false); @@ -547,6 +546,9 @@ public class HRegionServer extends HasThread implements HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName); // login the server principal (if using secure Hadoop) login(userProvider, hostName); +// init superusers and add the server principal (if using security) +// or process owner as default super user. +Superusers.initialize(conf); regionServerAccounting = new RegionServerAccounting(); uncaughtExceptionHandler = new UncaughtExceptionHandler() {
[1/6] hbase git commit: HBASE-15622 Superusers does not consider the keytab credentials
Repository: hbase Updated Branches: refs/heads/0.98 da785f38d -> a3846b132 refs/heads/branch-1 96e9c466d -> 6cf4bfe62 refs/heads/branch-1.1 b6a5a5164 -> 1bca4820f refs/heads/branch-1.2 cdf56ec93 -> c86d17d41 refs/heads/branch-1.3 438739dc1 -> 6f4b75861 refs/heads/master a9f1c4a87 -> 3e42f8260 HBASE-15622 Superusers does not consider the keytab credentials Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/3e42f826 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3e42f826 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3e42f826 Branch: refs/heads/master Commit: 3e42f8260009f01509bc9d8ba7e65fc5c75073e3 Parents: a9f1c4a Author: Matteo BertozziAuthored: Fri Apr 15 08:28:39 2016 -0700 Committer: Matteo Bertozzi Committed: Fri Apr 15 08:28:39 2016 -0700 -- .../java/org/apache/hadoop/hbase/regionserver/HRegionServer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/3e42f826/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 1476190..b583e0e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -517,7 +517,6 @@ public class HRegionServer extends HasThread implements HFile.checkHFileVersion(this.conf); checkCodecs(this.conf); this.userProvider = UserProvider.instantiate(conf); -Superusers.initialize(conf); FSUtils.setupShortCircuitRead(this.conf); // Disable usage of meta replicas in the regionserver this.conf.setBoolean(HConstants.USE_META_REPLICAS, false); @@ -566,6 +565,9 @@ public class HRegionServer extends HasThread implements HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName); // login the server principal (if using secure Hadoop) login(userProvider, hostName); +// init superusers and add the server principal (if using security) +// or process owner as default super user. +Superusers.initialize(conf); regionServerAccounting = new RegionServerAccounting(); cacheConfig = new CacheConfig(conf);
[2/6] hbase git commit: HBASE-15622 Superusers does not consider the keytab credentials
HBASE-15622 Superusers does not consider the keytab credentials Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6cf4bfe6 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6cf4bfe6 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6cf4bfe6 Branch: refs/heads/branch-1 Commit: 6cf4bfe62c4cd0eee27005d96f7775fe34368f4a Parents: 96e9c46 Author: Matteo BertozziAuthored: Fri Apr 15 08:28:39 2016 -0700 Committer: Matteo Bertozzi Committed: Fri Apr 15 08:31:46 2016 -0700 -- .../java/org/apache/hadoop/hbase/regionserver/HRegionServer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/6cf4bfe6/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 9b89cd0..ff4afbc 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -511,7 +511,6 @@ public class HRegionServer extends HasThread implements this.conf = conf; checkCodecs(this.conf); this.userProvider = UserProvider.instantiate(conf); -Superusers.initialize(conf); FSUtils.setupShortCircuitRead(this.conf); // Disable usage of meta replicas in the regionserver this.conf.setBoolean(HConstants.USE_META_REPLICAS, false); @@ -560,6 +559,9 @@ public class HRegionServer extends HasThread implements HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName); // login the server principal (if using secure Hadoop) login(userProvider, hostName); +// init superusers and add the server principal (if using security) +// or process owner as default super user. +Superusers.initialize(conf); regionServerAccounting = new RegionServerAccounting(); uncaughtExceptionHandler = new UncaughtExceptionHandler() {
[6/6] hbase git commit: HBASE-15622 Superusers does not consider the keytab credentials
HBASE-15622 Superusers does not consider the keytab credentials Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a3846b13 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a3846b13 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a3846b13 Branch: refs/heads/0.98 Commit: a3846b1329f5554225351d6142c33650c1c7d9db Parents: da785f3 Author: Matteo BertozziAuthored: Fri Apr 15 08:40:40 2016 -0700 Committer: Matteo Bertozzi Committed: Fri Apr 15 08:40:40 2016 -0700 -- .../java/org/apache/hadoop/hbase/regionserver/HRegionServer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/a3846b13/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 65e52b5..5061ce1 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -565,8 +565,6 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa checkCodecs(this.conf); this.userProvider = UserProvider.instantiate(conf); -Superusers.initialize(conf); - FSUtils.setupShortCircuitRead(this.conf); // Config'ed params @@ -646,6 +644,8 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa // login the server principal (if using secure Hadoop) userProvider.login("hbase.regionserver.keytab.file", "hbase.regionserver.kerberos.principal", this.isa.getHostName()); +Superusers.initialize(conf); + regionServerAccounting = new RegionServerAccounting(); cacheConfig = new CacheConfig(conf); uncaughtExceptionHandler = new UncaughtExceptionHandler() {
[3/6] hbase git commit: HBASE-15622 Superusers does not consider the keytab credentials
HBASE-15622 Superusers does not consider the keytab credentials Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6f4b7586 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6f4b7586 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6f4b7586 Branch: refs/heads/branch-1.3 Commit: 6f4b75861794f00a9093c9e4f0614108dd3f89b6 Parents: 438739d Author: Matteo BertozziAuthored: Fri Apr 15 08:28:39 2016 -0700 Committer: Matteo Bertozzi Committed: Fri Apr 15 08:33:22 2016 -0700 -- .../java/org/apache/hadoop/hbase/regionserver/HRegionServer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/6f4b7586/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 9b89cd0..ff4afbc 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -511,7 +511,6 @@ public class HRegionServer extends HasThread implements this.conf = conf; checkCodecs(this.conf); this.userProvider = UserProvider.instantiate(conf); -Superusers.initialize(conf); FSUtils.setupShortCircuitRead(this.conf); // Disable usage of meta replicas in the regionserver this.conf.setBoolean(HConstants.USE_META_REPLICAS, false); @@ -560,6 +559,9 @@ public class HRegionServer extends HasThread implements HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName); // login the server principal (if using secure Hadoop) login(userProvider, hostName); +// init superusers and add the server principal (if using security) +// or process owner as default super user. +Superusers.initialize(conf); regionServerAccounting = new RegionServerAccounting(); uncaughtExceptionHandler = new UncaughtExceptionHandler() {
[4/6] hbase git commit: HBASE-15622 Superusers does not consider the keytab credentials
HBASE-15622 Superusers does not consider the keytab credentials Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/c86d17d4 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/c86d17d4 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/c86d17d4 Branch: refs/heads/branch-1.2 Commit: c86d17d416251a9bfad11aa98f4c9968e23e2b35 Parents: cdf56ec Author: Matteo BertozziAuthored: Fri Apr 15 08:28:39 2016 -0700 Committer: Matteo Bertozzi Committed: Fri Apr 15 08:35:28 2016 -0700 -- .../java/org/apache/hadoop/hbase/regionserver/HRegionServer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/c86d17d4/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 68c5ddf..816659a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -502,7 +502,6 @@ public class HRegionServer extends HasThread implements this.conf = conf; checkCodecs(this.conf); this.userProvider = UserProvider.instantiate(conf); -Superusers.initialize(conf); FSUtils.setupShortCircuitRead(this.conf); // Disable usage of meta replicas in the regionserver this.conf.setBoolean(HConstants.USE_META_REPLICAS, false); @@ -551,6 +550,9 @@ public class HRegionServer extends HasThread implements HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName); // login the server principal (if using secure Hadoop) login(userProvider, hostName); +// init superusers and add the server principal (if using security) +// or process owner as default super user. +Superusers.initialize(conf); regionServerAccounting = new RegionServerAccounting(); uncaughtExceptionHandler = new UncaughtExceptionHandler() {
[2/3] hbase git commit: HBASE-15406 Split / merge switch left disabled after early termination of hbck
http://git-wip-us.apache.org/repos/asf/hbase/blob/438739dc/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java -- diff --git a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java index 588cc86..39619c4 100644 --- a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java +++ b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java @@ -28114,6 +28114,16 @@ public final class MasterProtos { * repeated .hbase.pb.MasterSwitchType switch_types = 3; */ org.apache.hadoop.hbase.protobuf.generated.MasterProtos.MasterSwitchType getSwitchTypes(int index); + +// optional bool skip_lock = 4; +/** + * optional bool skip_lock = 4; + */ +boolean hasSkipLock(); +/** + * optional bool skip_lock = 4; + */ +boolean getSkipLock(); } /** * Protobuf type {@code hbase.pb.SetSplitOrMergeEnabledRequest} @@ -28209,6 +28219,11 @@ public final class MasterProtos { input.popLimit(oldLimit); break; } +case 32: { + bitField0_ |= 0x0004; + skipLock_ = input.readBool(); + break; +} } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -28306,10 +28321,27 @@ public final class MasterProtos { return switchTypes_.get(index); } +// optional bool skip_lock = 4; +public static final int SKIP_LOCK_FIELD_NUMBER = 4; +private boolean skipLock_; +/** + * optional bool skip_lock = 4; + */ +public boolean hasSkipLock() { + return ((bitField0_ & 0x0004) == 0x0004); +} +/** + * optional bool skip_lock = 4; + */ +public boolean getSkipLock() { + return skipLock_; +} + private void initFields() { enabled_ = false; synchronous_ = false; switchTypes_ = java.util.Collections.emptyList(); + skipLock_ = false; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -28336,6 +28368,9 @@ public final class MasterProtos { for (int i = 0; i < switchTypes_.size(); i++) { output.writeEnum(3, switchTypes_.get(i).getNumber()); } + if (((bitField0_ & 0x0004) == 0x0004)) { +output.writeBool(4, skipLock_); + } getUnknownFields().writeTo(output); } @@ -28362,6 +28397,10 @@ public final class MasterProtos { size += dataSize; size += 1 * switchTypes_.size(); } + if (((bitField0_ & 0x0004) == 0x0004)) { +size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, skipLock_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -28397,6 +28436,11 @@ public final class MasterProtos { } result = result && getSwitchTypesList() .equals(other.getSwitchTypesList()); + result = result && (hasSkipLock() == other.hasSkipLock()); + if (hasSkipLock()) { +result = result && (getSkipLock() +== other.getSkipLock()); + } result = result && getUnknownFields().equals(other.getUnknownFields()); return result; @@ -28422,6 +28466,10 @@ public final class MasterProtos { hash = (37 * hash) + SWITCH_TYPES_FIELD_NUMBER; hash = (53 * hash) + hashEnumList(getSwitchTypesList()); } + if (hasSkipLock()) { +hash = (37 * hash) + SKIP_LOCK_FIELD_NUMBER; +hash = (53 * hash) + hashBoolean(getSkipLock()); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -28537,6 +28585,8 @@ public final class MasterProtos { bitField0_ = (bitField0_ & ~0x0002); switchTypes_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x0004); +skipLock_ = false; +bitField0_ = (bitField0_ & ~0x0008); return this; } @@ -28578,6 +28628,10 @@ public final class MasterProtos { bitField0_ = (bitField0_ & ~0x0004); } result.switchTypes_ = switchTypes_; +if (((from_bitField0_ & 0x0008) == 0x0008)) { + to_bitField0_ |= 0x0004; +} +result.skipLock_ = skipLock_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -28610,6 +28664,9 @@ public final class MasterProtos { } onChanged(); } +if (other.hasSkipLock()) { + setSkipLock(other.getSkipLock()); +} this.mergeUnknownFields(other.getUnknownFields()); return
[3/3] hbase git commit: HBASE-15406 Split / merge switch left disabled after early termination of hbck
HBASE-15406 Split / merge switch left disabled after early termination of hbck Conflicts: hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.java Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/438739dc Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/438739dc Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/438739dc Branch: refs/heads/branch-1.3 Commit: 438739dc15ac17c7d0f8b85fa42aceaa33c5b6cc Parents: 6d2dc2a Author: chenhengAuthored: Fri Apr 15 15:24:20 2016 +0800 Committer: chenheng Committed: Fri Apr 15 15:36:40 2016 +0800 -- .../org/apache/hadoop/hbase/client/Admin.java | 13 + .../hadoop/hbase/client/ConnectionManager.java |7 + .../apache/hadoop/hbase/client/HBaseAdmin.java | 18 +- .../hadoop/hbase/protobuf/RequestConverter.java | 11 +- .../hbase/zookeeper/ZooKeeperWatcher.java | 10 + .../hbase/protobuf/generated/MasterProtos.java | 1891 +- .../protobuf/generated/ZooKeeperProtos.java | 553 - hbase-protocol/src/main/protobuf/Master.proto | 13 + .../src/main/protobuf/ZooKeeper.proto | 10 +- .../hadoop/hbase/master/MasterRpcServices.java | 24 + .../org/apache/hadoop/hbase/util/HBaseFsck.java | 160 +- .../hbase/zookeeper/SplitOrMergeTracker.java| 85 + .../hbase/client/TestSplitOrMergeStatus.java| 39 +- .../apache/hadoop/hbase/util/TestHBaseFsck.java | 59 +- hbase-shell/src/main/ruby/hbase/admin.rb|2 +- 15 files changed, 2273 insertions(+), 622 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/438739dc/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java -- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java index d9361b3..8fd855c 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java @@ -1490,10 +1490,15 @@ public interface Admin extends Abortable, Closeable { * * @param enabled enabled or not * @param synchronous If true, it waits until current split() call, if outstanding, to return. + * @param skipLock if false, we will do lock before change switch. + * with the lock, other requests to change the switch will be rejected! + * And when you set it to be false, + * you should call {@link #releaseSplitOrMergeLockAndRollback()} by yourself * @param switchTypes switchType list {@link MasterSwitchType} * @return Previous switch value array */ boolean[] setSplitOrMergeEnabled(final boolean enabled, final boolean synchronous, + final boolean skipLock, final MasterSwitchType... switchTypes) throws IOException; /** @@ -1503,6 +1508,14 @@ public interface Admin extends Abortable, Closeable { */ boolean isSplitOrMergeEnabled(final MasterSwitchType switchType) throws IOException; + /** + * You should call this method after you call + * {@link #setSplitOrMergeEnabled(boolean, boolean, boolean, MasterSwitchType...)} + * with skipLock be false, this method will release the lock created by above method + * and rollback the switch state to be original state before you change switch + * */ + void releaseSplitOrMergeLockAndRollback() throws IOException; + @InterfaceAudience.Public @InterfaceStability.Evolving public enum MasterSwitchType { http://git-wip-us.apache.org/repos/asf/hbase/blob/438739dc/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java -- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java
[1/3] hbase git commit: HBASE-15406 Split / merge switch left disabled after early termination of hbck
Repository: hbase Updated Branches: refs/heads/branch-1.3 6d2dc2a8b -> 438739dc1 http://git-wip-us.apache.org/repos/asf/hbase/blob/438739dc/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java -- diff --git a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java index 09479c4..b0a844a 100644 --- a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java +++ b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java @@ -9725,6 +9725,540 @@ public final class ZooKeeperProtos { // @@protoc_insertion_point(class_scope:hbase.pb.SwitchState) } + public interface SplitAndMergeStateOrBuilder + extends com.google.protobuf.MessageOrBuilder { + +// optional bool split_enabled = 1; +/** + * optional bool split_enabled = 1; + */ +boolean hasSplitEnabled(); +/** + * optional bool split_enabled = 1; + */ +boolean getSplitEnabled(); + +// optional bool merge_enabled = 2; +/** + * optional bool merge_enabled = 2; + */ +boolean hasMergeEnabled(); +/** + * optional bool merge_enabled = 2; + */ +boolean getMergeEnabled(); + } + /** + * Protobuf type {@code hbase.pb.SplitAndMergeState} + * + * + ** + * State for split and merge, used in hbck + * + */ + public static final class SplitAndMergeState extends + com.google.protobuf.GeneratedMessage + implements SplitAndMergeStateOrBuilder { +// Use SplitAndMergeState.newBuilder() to construct. +private SplitAndMergeState(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); +} +private SplitAndMergeState(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + +private static final SplitAndMergeState defaultInstance; +public static SplitAndMergeState getDefaultInstance() { + return defaultInstance; +} + +public SplitAndMergeState getDefaultInstanceForType() { + return defaultInstance; +} + +private final com.google.protobuf.UnknownFieldSet unknownFields; +@java.lang.Override +public final com.google.protobuf.UnknownFieldSet +getUnknownFields() { + return this.unknownFields; +} +private SplitAndMergeState( +com.google.protobuf.CodedInputStream input, +com.google.protobuf.ExtensionRegistryLite extensionRegistry) +throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { +boolean done = false; +while (!done) { + int tag = input.readTag(); + switch (tag) { +case 0: + done = true; + break; +default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { +done = true; + } + break; +} +case 8: { + bitField0_ |= 0x0001; + splitEnabled_ = input.readBool(); + break; +} +case 16: { + bitField0_ |= 0x0002; + mergeEnabled_ = input.readBool(); + break; +} + } +} + } catch (com.google.protobuf.InvalidProtocolBufferException e) { +throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { +throw new com.google.protobuf.InvalidProtocolBufferException( +e.getMessage()).setUnfinishedMessage(this); + } finally { +this.unknownFields = unknownFields.build(); +makeExtensionsImmutable(); + } +} +public static final com.google.protobuf.Descriptors.Descriptor +getDescriptor() { + return org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.internal_static_hbase_pb_SplitAndMergeState_descriptor; +} + +protected com.google.protobuf.GeneratedMessage.FieldAccessorTable +internalGetFieldAccessorTable() { + return org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.internal_static_hbase_pb_SplitAndMergeState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitAndMergeState.class, org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitAndMergeState.Builder.class); +} + +public static com.google.protobuf.Parser PARSER = +new com.google.protobuf.AbstractParser()
[1/3] hbase git commit: HBASE-15406 Split / merge switch left disabled after early termination of hbck
Repository: hbase Updated Branches: refs/heads/branch-1 d37897535 -> 96e9c466d http://git-wip-us.apache.org/repos/asf/hbase/blob/96e9c466/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java -- diff --git a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java index 09479c4..b0a844a 100644 --- a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java +++ b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java @@ -9725,6 +9725,540 @@ public final class ZooKeeperProtos { // @@protoc_insertion_point(class_scope:hbase.pb.SwitchState) } + public interface SplitAndMergeStateOrBuilder + extends com.google.protobuf.MessageOrBuilder { + +// optional bool split_enabled = 1; +/** + * optional bool split_enabled = 1; + */ +boolean hasSplitEnabled(); +/** + * optional bool split_enabled = 1; + */ +boolean getSplitEnabled(); + +// optional bool merge_enabled = 2; +/** + * optional bool merge_enabled = 2; + */ +boolean hasMergeEnabled(); +/** + * optional bool merge_enabled = 2; + */ +boolean getMergeEnabled(); + } + /** + * Protobuf type {@code hbase.pb.SplitAndMergeState} + * + * + ** + * State for split and merge, used in hbck + * + */ + public static final class SplitAndMergeState extends + com.google.protobuf.GeneratedMessage + implements SplitAndMergeStateOrBuilder { +// Use SplitAndMergeState.newBuilder() to construct. +private SplitAndMergeState(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); +} +private SplitAndMergeState(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + +private static final SplitAndMergeState defaultInstance; +public static SplitAndMergeState getDefaultInstance() { + return defaultInstance; +} + +public SplitAndMergeState getDefaultInstanceForType() { + return defaultInstance; +} + +private final com.google.protobuf.UnknownFieldSet unknownFields; +@java.lang.Override +public final com.google.protobuf.UnknownFieldSet +getUnknownFields() { + return this.unknownFields; +} +private SplitAndMergeState( +com.google.protobuf.CodedInputStream input, +com.google.protobuf.ExtensionRegistryLite extensionRegistry) +throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { +boolean done = false; +while (!done) { + int tag = input.readTag(); + switch (tag) { +case 0: + done = true; + break; +default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { +done = true; + } + break; +} +case 8: { + bitField0_ |= 0x0001; + splitEnabled_ = input.readBool(); + break; +} +case 16: { + bitField0_ |= 0x0002; + mergeEnabled_ = input.readBool(); + break; +} + } +} + } catch (com.google.protobuf.InvalidProtocolBufferException e) { +throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { +throw new com.google.protobuf.InvalidProtocolBufferException( +e.getMessage()).setUnfinishedMessage(this); + } finally { +this.unknownFields = unknownFields.build(); +makeExtensionsImmutable(); + } +} +public static final com.google.protobuf.Descriptors.Descriptor +getDescriptor() { + return org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.internal_static_hbase_pb_SplitAndMergeState_descriptor; +} + +protected com.google.protobuf.GeneratedMessage.FieldAccessorTable +internalGetFieldAccessorTable() { + return org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.internal_static_hbase_pb_SplitAndMergeState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitAndMergeState.class, org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitAndMergeState.Builder.class); +} + +public static com.google.protobuf.Parser PARSER = +new com.google.protobuf.AbstractParser() {
[2/3] hbase git commit: HBASE-15406 Split / merge switch left disabled after early termination of hbck
http://git-wip-us.apache.org/repos/asf/hbase/blob/96e9c466/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java -- diff --git a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java index 588cc86..39619c4 100644 --- a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java +++ b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java @@ -28114,6 +28114,16 @@ public final class MasterProtos { * repeated .hbase.pb.MasterSwitchType switch_types = 3; */ org.apache.hadoop.hbase.protobuf.generated.MasterProtos.MasterSwitchType getSwitchTypes(int index); + +// optional bool skip_lock = 4; +/** + * optional bool skip_lock = 4; + */ +boolean hasSkipLock(); +/** + * optional bool skip_lock = 4; + */ +boolean getSkipLock(); } /** * Protobuf type {@code hbase.pb.SetSplitOrMergeEnabledRequest} @@ -28209,6 +28219,11 @@ public final class MasterProtos { input.popLimit(oldLimit); break; } +case 32: { + bitField0_ |= 0x0004; + skipLock_ = input.readBool(); + break; +} } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -28306,10 +28321,27 @@ public final class MasterProtos { return switchTypes_.get(index); } +// optional bool skip_lock = 4; +public static final int SKIP_LOCK_FIELD_NUMBER = 4; +private boolean skipLock_; +/** + * optional bool skip_lock = 4; + */ +public boolean hasSkipLock() { + return ((bitField0_ & 0x0004) == 0x0004); +} +/** + * optional bool skip_lock = 4; + */ +public boolean getSkipLock() { + return skipLock_; +} + private void initFields() { enabled_ = false; synchronous_ = false; switchTypes_ = java.util.Collections.emptyList(); + skipLock_ = false; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -28336,6 +28368,9 @@ public final class MasterProtos { for (int i = 0; i < switchTypes_.size(); i++) { output.writeEnum(3, switchTypes_.get(i).getNumber()); } + if (((bitField0_ & 0x0004) == 0x0004)) { +output.writeBool(4, skipLock_); + } getUnknownFields().writeTo(output); } @@ -28362,6 +28397,10 @@ public final class MasterProtos { size += dataSize; size += 1 * switchTypes_.size(); } + if (((bitField0_ & 0x0004) == 0x0004)) { +size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, skipLock_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -28397,6 +28436,11 @@ public final class MasterProtos { } result = result && getSwitchTypesList() .equals(other.getSwitchTypesList()); + result = result && (hasSkipLock() == other.hasSkipLock()); + if (hasSkipLock()) { +result = result && (getSkipLock() +== other.getSkipLock()); + } result = result && getUnknownFields().equals(other.getUnknownFields()); return result; @@ -28422,6 +28466,10 @@ public final class MasterProtos { hash = (37 * hash) + SWITCH_TYPES_FIELD_NUMBER; hash = (53 * hash) + hashEnumList(getSwitchTypesList()); } + if (hasSkipLock()) { +hash = (37 * hash) + SKIP_LOCK_FIELD_NUMBER; +hash = (53 * hash) + hashBoolean(getSkipLock()); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -28537,6 +28585,8 @@ public final class MasterProtos { bitField0_ = (bitField0_ & ~0x0002); switchTypes_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x0004); +skipLock_ = false; +bitField0_ = (bitField0_ & ~0x0008); return this; } @@ -28578,6 +28628,10 @@ public final class MasterProtos { bitField0_ = (bitField0_ & ~0x0004); } result.switchTypes_ = switchTypes_; +if (((from_bitField0_ & 0x0008) == 0x0008)) { + to_bitField0_ |= 0x0004; +} +result.skipLock_ = skipLock_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -28610,6 +28664,9 @@ public final class MasterProtos { } onChanged(); } +if (other.hasSkipLock()) { + setSkipLock(other.getSkipLock()); +} this.mergeUnknownFields(other.getUnknownFields()); return
[3/3] hbase git commit: HBASE-15406 Split / merge switch left disabled after early termination of hbck
HBASE-15406 Split / merge switch left disabled after early termination of hbck Conflicts: hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.java Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/96e9c466 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/96e9c466 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/96e9c466 Branch: refs/heads/branch-1 Commit: 96e9c466d2d69cc1d0ea4d64d0ed2bada2ec3391 Parents: d378975 Author: chenhengAuthored: Fri Apr 15 15:24:20 2016 +0800 Committer: chenheng Committed: Fri Apr 15 15:34:43 2016 +0800 -- .../org/apache/hadoop/hbase/client/Admin.java | 13 + .../hadoop/hbase/client/ConnectionManager.java |7 + .../apache/hadoop/hbase/client/HBaseAdmin.java | 18 +- .../hadoop/hbase/protobuf/RequestConverter.java | 11 +- .../hbase/zookeeper/ZooKeeperWatcher.java | 10 + .../hbase/protobuf/generated/MasterProtos.java | 1891 +- .../protobuf/generated/ZooKeeperProtos.java | 553 - hbase-protocol/src/main/protobuf/Master.proto | 13 + .../src/main/protobuf/ZooKeeper.proto | 10 +- .../hadoop/hbase/master/MasterRpcServices.java | 24 + .../org/apache/hadoop/hbase/util/HBaseFsck.java | 160 +- .../hbase/zookeeper/SplitOrMergeTracker.java| 85 + .../hbase/client/TestSplitOrMergeStatus.java| 39 +- .../apache/hadoop/hbase/util/TestHBaseFsck.java | 59 +- hbase-shell/src/main/ruby/hbase/admin.rb|2 +- 15 files changed, 2273 insertions(+), 622 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/96e9c466/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java -- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java index d9361b3..8fd855c 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java @@ -1490,10 +1490,15 @@ public interface Admin extends Abortable, Closeable { * * @param enabled enabled or not * @param synchronous If true, it waits until current split() call, if outstanding, to return. + * @param skipLock if false, we will do lock before change switch. + * with the lock, other requests to change the switch will be rejected! + * And when you set it to be false, + * you should call {@link #releaseSplitOrMergeLockAndRollback()} by yourself * @param switchTypes switchType list {@link MasterSwitchType} * @return Previous switch value array */ boolean[] setSplitOrMergeEnabled(final boolean enabled, final boolean synchronous, + final boolean skipLock, final MasterSwitchType... switchTypes) throws IOException; /** @@ -1503,6 +1508,14 @@ public interface Admin extends Abortable, Closeable { */ boolean isSplitOrMergeEnabled(final MasterSwitchType switchType) throws IOException; + /** + * You should call this method after you call + * {@link #setSplitOrMergeEnabled(boolean, boolean, boolean, MasterSwitchType...)} + * with skipLock be false, this method will release the lock created by above method + * and rollback the switch state to be original state before you change switch + * */ + void releaseSplitOrMergeLockAndRollback() throws IOException; + @InterfaceAudience.Public @InterfaceStability.Evolving public enum MasterSwitchType { http://git-wip-us.apache.org/repos/asf/hbase/blob/96e9c466/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java -- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java
[3/3] hbase git commit: HBASE-15406 Split / merge switch left disabled after early termination of hbck
HBASE-15406 Split / merge switch left disabled after early termination of hbck Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a9f1c4a8 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a9f1c4a8 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a9f1c4a8 Branch: refs/heads/master Commit: a9f1c4a87153002629c291312bac4b758ad58204 Parents: 7efb9ed Author: chenhengAuthored: Thu Apr 7 14:25:18 2016 +0800 Committer: chenheng Committed: Fri Apr 15 14:09:52 2016 +0800 -- .../org/apache/hadoop/hbase/client/Admin.java | 13 + .../hbase/client/ConnectionImplementation.java |7 + .../apache/hadoop/hbase/client/HBaseAdmin.java | 18 +- .../hadoop/hbase/protobuf/RequestConverter.java | 11 +- .../hbase/zookeeper/ZooKeeperWatcher.java | 10 + .../hbase/protobuf/generated/MasterProtos.java | 1903 +- .../protobuf/generated/ZooKeeperProtos.java | 552 - hbase-protocol/src/main/protobuf/Master.proto | 13 + .../src/main/protobuf/ZooKeeper.proto | 10 +- .../hadoop/hbase/master/MasterRpcServices.java | 23 + .../org/apache/hadoop/hbase/util/HBaseFsck.java | 61 +- .../hbase/zookeeper/SplitOrMergeTracker.java| 85 + .../hbase/client/TestSplitOrMergeStatus.java| 39 +- .../hadoop/hbase/util/TestHBaseFsckOneRS.java | 55 + hbase-shell/src/main/ruby/hbase/admin.rb|2 +- 15 files changed, 2235 insertions(+), 567 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/a9f1c4a8/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java -- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java index 54d2cb9..97356a2 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java @@ -1716,10 +1716,15 @@ public interface Admin extends Abortable, Closeable { * * @param enabled enabled or not * @param synchronous If true, it waits until current split() call, if outstanding, to return. + * @param skipLock if false, we will do lock before change switch. + * with the lock, other requests to change the switch will be rejected! + * And when you set it to be false, + * you should call {@link #releaseSplitOrMergeLockAndRollback()} by yourself * @param switchTypes switchType list {@link MasterSwitchType} * @return Previous switch value array */ boolean[] setSplitOrMergeEnabled(final boolean enabled, final boolean synchronous, + final boolean skipLock, final MasterSwitchType... switchTypes) throws IOException; /** @@ -1730,6 +1735,14 @@ public interface Admin extends Abortable, Closeable { boolean isSplitOrMergeEnabled(final MasterSwitchType switchType) throws IOException; /** + * You should call this method after you call + * {@link #setSplitOrMergeEnabled(boolean, boolean, boolean, MasterSwitchType...)} + * with skipLock be false, this method will release the lock created by above method + * and rollback the switch state to be original state before you change switch + * */ + void releaseSplitOrMergeLockAndRollback() throws IOException; + + /** * Currently, there are only two compact types: * {@code NORMAL} means do store files compaction; * {@code MOB} means do mob files compaction. http://git-wip-us.apache.org/repos/asf/hbase/blob/a9f1c4a8/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java -- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java index e43a712..21e7e51 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java @@ -1751,6 +1751,13 @@ class ConnectionImplementation implements ClusterConnection, Closeable { } @Override + public MasterProtos.ReleaseSplitOrMergeLockAndRollbackResponse +releaseSplitOrMergeLockAndRollback(RpcController controller, +MasterProtos.ReleaseSplitOrMergeLockAndRollbackRequest request) throws ServiceException { +return stub.releaseSplitOrMergeLockAndRollback(controller, request); + } + + @Override public IsNormalizerEnabledResponse
[1/3] hbase git commit: HBASE-15406 Split / merge switch left disabled after early termination of hbck
Repository: hbase Updated Branches: refs/heads/master 7efb9edec -> a9f1c4a87 http://git-wip-us.apache.org/repos/asf/hbase/blob/a9f1c4a8/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java -- diff --git a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java index f64d0c1..a45c421 100644 --- a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java +++ b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java @@ -9733,6 +9733,540 @@ public final class ZooKeeperProtos { // @@protoc_insertion_point(class_scope:hbase.pb.SwitchState) } + public interface SplitAndMergeStateOrBuilder + extends com.google.protobuf.MessageOrBuilder { + +// optional bool split_enabled = 1; +/** + * optional bool split_enabled = 1; + */ +boolean hasSplitEnabled(); +/** + * optional bool split_enabled = 1; + */ +boolean getSplitEnabled(); + +// optional bool merge_enabled = 2; +/** + * optional bool merge_enabled = 2; + */ +boolean hasMergeEnabled(); +/** + * optional bool merge_enabled = 2; + */ +boolean getMergeEnabled(); + } + /** + * Protobuf type {@code hbase.pb.SplitAndMergeState} + * + * + ** + * State for split and merge, used in hbck + * + */ + public static final class SplitAndMergeState extends + com.google.protobuf.GeneratedMessage + implements SplitAndMergeStateOrBuilder { +// Use SplitAndMergeState.newBuilder() to construct. +private SplitAndMergeState(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); +} +private SplitAndMergeState(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + +private static final SplitAndMergeState defaultInstance; +public static SplitAndMergeState getDefaultInstance() { + return defaultInstance; +} + +public SplitAndMergeState getDefaultInstanceForType() { + return defaultInstance; +} + +private final com.google.protobuf.UnknownFieldSet unknownFields; +@java.lang.Override +public final com.google.protobuf.UnknownFieldSet +getUnknownFields() { + return this.unknownFields; +} +private SplitAndMergeState( +com.google.protobuf.CodedInputStream input, +com.google.protobuf.ExtensionRegistryLite extensionRegistry) +throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { +boolean done = false; +while (!done) { + int tag = input.readTag(); + switch (tag) { +case 0: + done = true; + break; +default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { +done = true; + } + break; +} +case 8: { + bitField0_ |= 0x0001; + splitEnabled_ = input.readBool(); + break; +} +case 16: { + bitField0_ |= 0x0002; + mergeEnabled_ = input.readBool(); + break; +} + } +} + } catch (com.google.protobuf.InvalidProtocolBufferException e) { +throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { +throw new com.google.protobuf.InvalidProtocolBufferException( +e.getMessage()).setUnfinishedMessage(this); + } finally { +this.unknownFields = unknownFields.build(); +makeExtensionsImmutable(); + } +} +public static final com.google.protobuf.Descriptors.Descriptor +getDescriptor() { + return org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.internal_static_hbase_pb_SplitAndMergeState_descriptor; +} + +protected com.google.protobuf.GeneratedMessage.FieldAccessorTable +internalGetFieldAccessorTable() { + return org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.internal_static_hbase_pb_SplitAndMergeState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitAndMergeState.class, org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitAndMergeState.Builder.class); +} + +public static com.google.protobuf.Parser PARSER = +new com.google.protobuf.AbstractParser() { +
[2/3] hbase git commit: HBASE-15406 Split / merge switch left disabled after early termination of hbck
http://git-wip-us.apache.org/repos/asf/hbase/blob/a9f1c4a8/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java -- diff --git a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java index b91a36b..b4bd7af 100644 --- a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java +++ b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java @@ -28882,6 +28882,16 @@ public final class MasterProtos { * repeated .hbase.pb.MasterSwitchType switch_types = 3; */ org.apache.hadoop.hbase.protobuf.generated.MasterProtos.MasterSwitchType getSwitchTypes(int index); + +// optional bool skip_lock = 4; +/** + * optional bool skip_lock = 4; + */ +boolean hasSkipLock(); +/** + * optional bool skip_lock = 4; + */ +boolean getSkipLock(); } /** * Protobuf type {@code hbase.pb.SetSplitOrMergeEnabledRequest} @@ -28977,6 +28987,11 @@ public final class MasterProtos { input.popLimit(oldLimit); break; } +case 32: { + bitField0_ |= 0x0004; + skipLock_ = input.readBool(); + break; +} } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -29074,10 +29089,27 @@ public final class MasterProtos { return switchTypes_.get(index); } +// optional bool skip_lock = 4; +public static final int SKIP_LOCK_FIELD_NUMBER = 4; +private boolean skipLock_; +/** + * optional bool skip_lock = 4; + */ +public boolean hasSkipLock() { + return ((bitField0_ & 0x0004) == 0x0004); +} +/** + * optional bool skip_lock = 4; + */ +public boolean getSkipLock() { + return skipLock_; +} + private void initFields() { enabled_ = false; synchronous_ = false; switchTypes_ = java.util.Collections.emptyList(); + skipLock_ = false; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -29104,6 +29136,9 @@ public final class MasterProtos { for (int i = 0; i < switchTypes_.size(); i++) { output.writeEnum(3, switchTypes_.get(i).getNumber()); } + if (((bitField0_ & 0x0004) == 0x0004)) { +output.writeBool(4, skipLock_); + } getUnknownFields().writeTo(output); } @@ -29130,6 +29165,10 @@ public final class MasterProtos { size += dataSize; size += 1 * switchTypes_.size(); } + if (((bitField0_ & 0x0004) == 0x0004)) { +size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, skipLock_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -29165,6 +29204,11 @@ public final class MasterProtos { } result = result && getSwitchTypesList() .equals(other.getSwitchTypesList()); + result = result && (hasSkipLock() == other.hasSkipLock()); + if (hasSkipLock()) { +result = result && (getSkipLock() +== other.getSkipLock()); + } result = result && getUnknownFields().equals(other.getUnknownFields()); return result; @@ -29190,6 +29234,10 @@ public final class MasterProtos { hash = (37 * hash) + SWITCH_TYPES_FIELD_NUMBER; hash = (53 * hash) + hashEnumList(getSwitchTypesList()); } + if (hasSkipLock()) { +hash = (37 * hash) + SKIP_LOCK_FIELD_NUMBER; +hash = (53 * hash) + hashBoolean(getSkipLock()); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -29305,6 +29353,8 @@ public final class MasterProtos { bitField0_ = (bitField0_ & ~0x0002); switchTypes_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x0004); +skipLock_ = false; +bitField0_ = (bitField0_ & ~0x0008); return this; } @@ -29346,6 +29396,10 @@ public final class MasterProtos { bitField0_ = (bitField0_ & ~0x0004); } result.switchTypes_ = switchTypes_; +if (((from_bitField0_ & 0x0008) == 0x0008)) { + to_bitField0_ |= 0x0004; +} +result.skipLock_ = skipLock_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -29378,6 +29432,9 @@ public final class MasterProtos { } onChanged(); } +if (other.hasSkipLock()) { + setSkipLock(other.getSkipLock()); +} this.mergeUnknownFields(other.getUnknownFields()); return