[43/49] hbase git commit: HBASE-17978 Ensure superusers can circumvent actions restricted by space quota violations

2017-05-22 Thread elserj
HBASE-17978 Ensure superusers can circumvent actions restricted by space quota 
violations


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/b971b449
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b971b449
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b971b449

Branch: refs/heads/master
Commit: b971b449e8de700d7709df2032a5a1429d369394
Parents: ed618da
Author: Josh Elser 
Authored: Wed May 3 12:10:50 2017 -0400
Committer: Josh Elser 
Committed: Mon May 22 13:41:36 2017 -0400

--
 .../hbase/regionserver/RSRpcServices.java   |   4 +
 .../hbase/quotas/SpaceQuotaHelperForTests.java  |  27 +-
 .../quotas/TestSuperUserQuotaPermissions.java   | 300 +++
 3 files changed, 329 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hbase/blob/b971b449/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
--
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 41fe3e5..b3ca94d 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -105,6 +105,7 @@ import 
org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;
 import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;
 import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;
 import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
+import org.apache.hadoop.hbase.security.Superusers;
 import org.apache.hadoop.hbase.security.User;
 import org.apache.hadoop.hbase.shaded.com.google.protobuf.ByteString;
 import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message;
@@ -1509,7 +1510,10 @@ public class RSRpcServices implements 
HBaseRPCErrorHandler,
   checkOpen();
   requestCount.increment();
   Region region = getRegion(request.getRegion());
+  // Quota support is enabled, the requesting user is not system/super user
+  // and a quota policy is enforced that disables compactions.
   if (QuotaUtil.isQuotaEnabled(getConfiguration()) &&
+  !Superusers.isSuperUser(RpcServer.getRequestUser()) &&
   
this.regionServer.getRegionServerSpaceQuotaManager().areCompactionsDisabled(
   region.getTableDesc().getTableName())) {
 throw new DoNotRetryIOException("Compactions on this region are "

http://git-wip-us.apache.org/repos/asf/hbase/blob/b971b449/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
--
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
index b7c51a2..1e2235a 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
@@ -110,6 +110,18 @@ public class SpaceQuotaHelperForTests {
 }
   }
 
+  QuotaSettings getTableSpaceQuota(Connection conn, TableName tn) throws 
IOException {
+try (QuotaRetriever scanner = QuotaRetriever.open(
+conn.getConfiguration(), new 
QuotaFilter().setTableFilter(tn.getNameAsString( {
+  for (QuotaSettings setting : scanner) {
+if (setting.getTableName().equals(tn) && setting.getQuotaType() == 
QuotaType.SPACE) {
+  return setting;
+}
+  }
+  return null;
+}
+  }
+
   /**
* Waits 30seconds for the HBase quota table to exist.
*/
@@ -130,7 +142,10 @@ public class SpaceQuotaHelperForTests {
   }
 
   void writeData(TableName tn, long sizeInBytes) throws IOException {
-final Connection conn = testUtil.getConnection();
+writeData(testUtil.getConnection(), tn, sizeInBytes);
+  }
+
+  void writeData(Connection conn, TableName tn, long sizeInBytes) throws 
IOException {
 final Table table = conn.getTable(tn);
 try {
   List updates = new ArrayList<>();
@@ -226,8 +241,16 @@ public class SpaceQuotaHelperForTests {
 return 
createTableWithRegions(NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR, 
numRegions);
   }
 
+  TableName createTableWithRegions(Admin admin, int numRegions) throws 
Exception {
+return createTableWithRegions(
+testUtil.getAdmin(), NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR, 
numRegions);
+  }
+
   TableName createTableWithRegions(String namespace, int numRegions) throws 
Exception {
-final Admin admin = testUtil.getAdmin();
+

[47/50] [abbrv] hbase git commit: HBASE-17978 Ensure superusers can circumvent actions restricted by space quota violations

2017-05-22 Thread elserj
HBASE-17978 Ensure superusers can circumvent actions restricted by space quota 
violations


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/3b2de2a8
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3b2de2a8
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3b2de2a8

Branch: refs/heads/HBASE-16961
Commit: 3b2de2a8fdb33ea05a118ed69783932e352ab089
Parents: dd4066a
Author: Josh Elser 
Authored: Wed May 3 12:10:50 2017 -0400
Committer: Josh Elser 
Committed: Mon May 22 13:08:12 2017 -0400

--
 .../hbase/regionserver/RSRpcServices.java   |   4 +
 .../hbase/quotas/SpaceQuotaHelperForTests.java  |  27 +-
 .../quotas/TestSuperUserQuotaPermissions.java   | 300 +++
 3 files changed, 329 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2de2a8/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
--
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 41fe3e5..b3ca94d 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -105,6 +105,7 @@ import 
org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;
 import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;
 import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;
 import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
+import org.apache.hadoop.hbase.security.Superusers;
 import org.apache.hadoop.hbase.security.User;
 import org.apache.hadoop.hbase.shaded.com.google.protobuf.ByteString;
 import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message;
@@ -1509,7 +1510,10 @@ public class RSRpcServices implements 
HBaseRPCErrorHandler,
   checkOpen();
   requestCount.increment();
   Region region = getRegion(request.getRegion());
+  // Quota support is enabled, the requesting user is not system/super user
+  // and a quota policy is enforced that disables compactions.
   if (QuotaUtil.isQuotaEnabled(getConfiguration()) &&
+  !Superusers.isSuperUser(RpcServer.getRequestUser()) &&
   
this.regionServer.getRegionServerSpaceQuotaManager().areCompactionsDisabled(
   region.getTableDesc().getTableName())) {
 throw new DoNotRetryIOException("Compactions on this region are "

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2de2a8/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
--
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
index b7c51a2..1e2235a 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
@@ -110,6 +110,18 @@ public class SpaceQuotaHelperForTests {
 }
   }
 
+  QuotaSettings getTableSpaceQuota(Connection conn, TableName tn) throws 
IOException {
+try (QuotaRetriever scanner = QuotaRetriever.open(
+conn.getConfiguration(), new 
QuotaFilter().setTableFilter(tn.getNameAsString( {
+  for (QuotaSettings setting : scanner) {
+if (setting.getTableName().equals(tn) && setting.getQuotaType() == 
QuotaType.SPACE) {
+  return setting;
+}
+  }
+  return null;
+}
+  }
+
   /**
* Waits 30seconds for the HBase quota table to exist.
*/
@@ -130,7 +142,10 @@ public class SpaceQuotaHelperForTests {
   }
 
   void writeData(TableName tn, long sizeInBytes) throws IOException {
-final Connection conn = testUtil.getConnection();
+writeData(testUtil.getConnection(), tn, sizeInBytes);
+  }
+
+  void writeData(Connection conn, TableName tn, long sizeInBytes) throws 
IOException {
 final Table table = conn.getTable(tn);
 try {
   List updates = new ArrayList<>();
@@ -226,8 +241,16 @@ public class SpaceQuotaHelperForTests {
 return 
createTableWithRegions(NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR, 
numRegions);
   }
 
+  TableName createTableWithRegions(Admin admin, int numRegions) throws 
Exception {
+return createTableWithRegions(
+testUtil.getAdmin(), NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR, 
numRegions);
+  }
+
   TableName createTableWithRegions(String namespace, int numRegions) throws 
Exception {
-final Admin admin = testUtil.getAdmin

[49/50] [abbrv] hbase git commit: HBASE-17978 Ensure superusers can circumvent actions restricted by space quota violations

2017-05-19 Thread elserj
HBASE-17978 Ensure superusers can circumvent actions restricted by space quota 
violations


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/3ef2be1f
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3ef2be1f
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3ef2be1f

Branch: refs/heads/HBASE-16961
Commit: 3ef2be1f42768d4cb69d8ca127301fa9892624ba
Parents: 3561b11
Author: Josh Elser 
Authored: Wed May 3 12:10:50 2017 -0400
Committer: Josh Elser 
Committed: Fri May 19 12:37:51 2017 -0400

--
 .../hbase/regionserver/RSRpcServices.java   |   4 +
 .../hbase/quotas/SpaceQuotaHelperForTests.java  |  27 +-
 .../quotas/TestSuperUserQuotaPermissions.java   | 300 +++
 3 files changed, 329 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hbase/blob/3ef2be1f/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
--
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 41fe3e5..b3ca94d 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -105,6 +105,7 @@ import 
org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;
 import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;
 import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;
 import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
+import org.apache.hadoop.hbase.security.Superusers;
 import org.apache.hadoop.hbase.security.User;
 import org.apache.hadoop.hbase.shaded.com.google.protobuf.ByteString;
 import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message;
@@ -1509,7 +1510,10 @@ public class RSRpcServices implements 
HBaseRPCErrorHandler,
   checkOpen();
   requestCount.increment();
   Region region = getRegion(request.getRegion());
+  // Quota support is enabled, the requesting user is not system/super user
+  // and a quota policy is enforced that disables compactions.
   if (QuotaUtil.isQuotaEnabled(getConfiguration()) &&
+  !Superusers.isSuperUser(RpcServer.getRequestUser()) &&
   
this.regionServer.getRegionServerSpaceQuotaManager().areCompactionsDisabled(
   region.getTableDesc().getTableName())) {
 throw new DoNotRetryIOException("Compactions on this region are "

http://git-wip-us.apache.org/repos/asf/hbase/blob/3ef2be1f/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
--
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
index b7c51a2..1e2235a 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
@@ -110,6 +110,18 @@ public class SpaceQuotaHelperForTests {
 }
   }
 
+  QuotaSettings getTableSpaceQuota(Connection conn, TableName tn) throws 
IOException {
+try (QuotaRetriever scanner = QuotaRetriever.open(
+conn.getConfiguration(), new 
QuotaFilter().setTableFilter(tn.getNameAsString( {
+  for (QuotaSettings setting : scanner) {
+if (setting.getTableName().equals(tn) && setting.getQuotaType() == 
QuotaType.SPACE) {
+  return setting;
+}
+  }
+  return null;
+}
+  }
+
   /**
* Waits 30seconds for the HBase quota table to exist.
*/
@@ -130,7 +142,10 @@ public class SpaceQuotaHelperForTests {
   }
 
   void writeData(TableName tn, long sizeInBytes) throws IOException {
-final Connection conn = testUtil.getConnection();
+writeData(testUtil.getConnection(), tn, sizeInBytes);
+  }
+
+  void writeData(Connection conn, TableName tn, long sizeInBytes) throws 
IOException {
 final Table table = conn.getTable(tn);
 try {
   List updates = new ArrayList<>();
@@ -226,8 +241,16 @@ public class SpaceQuotaHelperForTests {
 return 
createTableWithRegions(NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR, 
numRegions);
   }
 
+  TableName createTableWithRegions(Admin admin, int numRegions) throws 
Exception {
+return createTableWithRegions(
+testUtil.getAdmin(), NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR, 
numRegions);
+  }
+
   TableName createTableWithRegions(String namespace, int numRegions) throws 
Exception {
-final Admin admin = testUtil.getAdmin

hbase git commit: HBASE-17978 Ensure superusers can circumvent actions restricted by space quota violations

2017-05-03 Thread elserj
Repository: hbase
Updated Branches:
  refs/heads/HBASE-16961 ea14f -> 06f71477c


HBASE-17978 Ensure superusers can circumvent actions restricted by space quota 
violations


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/06f71477
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/06f71477
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/06f71477

Branch: refs/heads/HBASE-16961
Commit: 06f71477c087b7c695786042e353769578dfd74c
Parents: ea1
Author: Josh Elser 
Authored: Wed May 3 12:10:50 2017 -0400
Committer: Josh Elser 
Committed: Wed May 3 17:01:56 2017 -0400

--
 .../hbase/regionserver/RSRpcServices.java   |   4 +
 .../hbase/quotas/SpaceQuotaHelperForTests.java  |  27 +-
 .../quotas/TestSuperUserQuotaPermissions.java   | 300 +++
 3 files changed, 329 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hbase/blob/06f71477/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
--
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 679bba2..56fccce 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -112,6 +112,7 @@ import 
org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;
 import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;
 import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;
 import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
+import org.apache.hadoop.hbase.security.Superusers;
 import org.apache.hadoop.hbase.security.User;
 import org.apache.hadoop.hbase.shaded.com.google.protobuf.ByteString;
 import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message;
@@ -1471,7 +1472,10 @@ public class RSRpcServices implements 
HBaseRPCErrorHandler,
   checkOpen();
   requestCount.increment();
   Region region = getRegion(request.getRegion());
+  // Quota support is enabled, the requesting user is not system/super user
+  // and a quota policy is enforced that disables compactions.
   if (QuotaUtil.isQuotaEnabled(getConfiguration()) &&
+  !Superusers.isSuperUser(RpcServer.getRequestUser()) &&
   
this.regionServer.getRegionServerSpaceQuotaManager().areCompactionsDisabled(
   region.getTableDesc().getTableName())) {
 throw new DoNotRetryIOException("Compactions on this region are "

http://git-wip-us.apache.org/repos/asf/hbase/blob/06f71477/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
--
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
index b7c51a2..1e2235a 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.java
@@ -110,6 +110,18 @@ public class SpaceQuotaHelperForTests {
 }
   }
 
+  QuotaSettings getTableSpaceQuota(Connection conn, TableName tn) throws 
IOException {
+try (QuotaRetriever scanner = QuotaRetriever.open(
+conn.getConfiguration(), new 
QuotaFilter().setTableFilter(tn.getNameAsString( {
+  for (QuotaSettings setting : scanner) {
+if (setting.getTableName().equals(tn) && setting.getQuotaType() == 
QuotaType.SPACE) {
+  return setting;
+}
+  }
+  return null;
+}
+  }
+
   /**
* Waits 30seconds for the HBase quota table to exist.
*/
@@ -130,7 +142,10 @@ public class SpaceQuotaHelperForTests {
   }
 
   void writeData(TableName tn, long sizeInBytes) throws IOException {
-final Connection conn = testUtil.getConnection();
+writeData(testUtil.getConnection(), tn, sizeInBytes);
+  }
+
+  void writeData(Connection conn, TableName tn, long sizeInBytes) throws 
IOException {
 final Table table = conn.getTable(tn);
 try {
   List updates = new ArrayList<>();
@@ -226,8 +241,16 @@ public class SpaceQuotaHelperForTests {
 return 
createTableWithRegions(NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR, 
numRegions);
   }
 
+  TableName createTableWithRegions(Admin admin, int numRegions) throws 
Exception {
+return createTableWithRegions(
+testUtil.getAdmin(), NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR, 
numRegions);
+  }
+
   TableName createTableWithRegions(String name