You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by va...@apache.org on 2017/08/16 21:37:31 UTC
sentry git commit: SENTRY-1803: HMSFollower should handle the case of
multiple notifications with the same ID (Sergio Pena via Vamsee Yarlagadda)
Repository: sentry
Updated Branches:
refs/heads/master b2107fc16 -> 7bac9f4f9
SENTRY-1803: HMSFollower should handle the case of multiple notifications with the same ID (Sergio Pena via Vamsee Yarlagadda)
Project: http://git-wip-us.apache.org/repos/asf/sentry/repo
Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/7bac9f4f
Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/7bac9f4f
Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/7bac9f4f
Branch: refs/heads/master
Commit: 7bac9f4f979e7d5e06f55dc6a7c0714ee3655ee7
Parents: b2107fc
Author: Vamsee Yarlagadda <va...@cloudera.com>
Authored: Wed Aug 16 14:32:57 2017 -0700
Committer: Vamsee Yarlagadda <va...@cloudera.com>
Committed: Wed Aug 16 14:32:57 2017 -0700
----------------------------------------------------------------------
.../provider/db/service/model/package.jdo | 5 +-
.../main/resources/008-SENTRY-1569.derby.sql | 5 --
.../main/resources/008-SENTRY-1569.mysql.sql | 6 +--
.../main/resources/008-SENTRY-1569.oracle.sql | 6 +--
.../main/resources/008-SENTRY-1569.postgres.sql | 6 +--
.../src/main/resources/sentry-db2-2.0.0.sql | 6 +--
.../src/main/resources/sentry-derby-2.0.0.sql | 4 --
.../src/main/resources/sentry-mysql-2.0.0.sql | 6 +--
.../src/main/resources/sentry-oracle-2.0.0.sql | 6 +--
.../main/resources/sentry-postgres-2.0.0.sql | 6 +--
.../sentry-upgrade-db2-1.7.0-to-2.0.0.sql | 4 --
.../db/service/persistent/TestSentryStore.java | 56 ++++++++++++++++++++
12 files changed, 65 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo
index e8982f6..77ec491 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo
@@ -297,7 +297,6 @@
</field>
<field name="notificationID">
<column name="NOTIFICATION_ID" jdbc-type="BIGINT" allows-null="false"/>
- <index name="NOTIFICATIONID" unique="true"/>
</field>
<field name ="pathChange">
<column name="PATH_CHANGE" length="4000" jdbc-type="VARCHAR" allows-null="false"/>
@@ -306,8 +305,8 @@
<column name="CREATE_TIME_MS" jdbc-type="BIGINT"/>
</field>
</class>
- <class name="MSentryHmsNotification" table="SENTRY_HMS_NOTIFICATION_ID" identity-type="application" detachable="true">
- <field name="notificationId" primary-key="true">
+ <class name="MSentryHmsNotification" table="SENTRY_HMS_NOTIFICATION_ID" identity-type="nondurable" detachable="true">
+ <field name="notificationId">
<column name="NOTIFICATION_ID" jdbc-type="BIGINT" allows-null="false"/>
</field>
</class>
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.derby.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.derby.sql b/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.derby.sql
index 2a017ff..4afa2e0 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.derby.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.derby.sql
@@ -20,14 +20,9 @@ CREATE TABLE SENTRY_PATH_CHANGE
-- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
ALTER TABLE SENTRY_PATH_CHANGE ADD CONSTRAINT SENTRY_PATH_CHANGE_PK PRIMARY KEY (CHANGE_ID);
-CREATE UNIQUE INDEX NOTIFICATIONID ON SENTRY_PATH_CHANGE (NOTIFICATION_ID);
-
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
CREATE TABLE SENTRY_HMS_NOTIFICATION_ID
(
NOTIFICATION_ID BIGINT NOT NULL
);
-
--- Constraints for table SENTRY_HMS_NOTIFICATION_ID for class [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
-ALTER TABLE SENTRY_HMS_NOTIFICATION_ID ADD CONSTRAINT SENTRY_NOTIFICATION_PK PRIMARY KEY (NOTIFICATION_ID);
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.mysql.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.mysql.sql b/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.mysql.sql
index b587e40..8636fec 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.mysql.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.mysql.sql
@@ -17,12 +17,8 @@ CREATE TABLE `SENTRY_PATH_CHANGE`
CONSTRAINT `SENTRY_PATH_CHANGE_PK` PRIMARY KEY (`CHANGE_ID`)
) ENGINE=INNODB;
--- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
-CREATE UNIQUE INDEX `NOTIFICATIONID` ON `SENTRY_PATH_CHANGE` (`NOTIFICATION_ID`);
-
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
CREATE TABLE `SENTRY_HMS_NOTIFICATION_ID`
(
- `NOTIFICATION_ID` BIGINT NOT NULL,
- CONSTRAINT `SENTRY_NOTIFICATION_PK` PRIMARY KEY (`NOTIFICATION_ID`)
+ `NOTIFICATION_ID` BIGINT NOT NULL
)ENGINE=INNODB;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.oracle.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.oracle.sql b/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.oracle.sql
index 860f992..c3c374b 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.oracle.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.oracle.sql
@@ -18,14 +18,10 @@ CREATE TABLE "SENTRY_PATH_CHANGE"
);
-- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
-CREATE UNIQUE INDEX "NOTIFICATIONID" ON "SENTRY_PATH_CHANGE" ("NOTIFICATION_ID");
ALTER TABLE "SENTRY_PATH_CHANGE" ADD CONSTRAINT SENTRY_PATH_CHANGE_PK PRIMARY KEY ("CHANGE_ID");
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
CREATE TABLE "SENTRY_HMS_NOTIFICATION_ID"
(
"NOTIFICATION_ID" NUMBER NOT NULL
-);
-
--- Constraints for table SENTRY_HMS_NOTIFICATION_ID for class [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
-ALTER TABLE "SENTRY_HMS_NOTIFICATION_ID" ADD CONSTRAINT "NOTIFICATION_PRIVILEGE_PK" PRIMARY KEY ("NOTIFICATION_ID");
\ No newline at end of file
+);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.postgres.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.postgres.sql b/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.postgres.sql
index c7c38e3..d168bf5 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.postgres.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/008-SENTRY-1569.postgres.sql
@@ -17,12 +17,8 @@ CREATE TABLE "SENTRY_PATH_CHANGE"
CONSTRAINT "SENTRY_PATH_CHANGE_PK" PRIMARY KEY ("CHANGE_ID")
);
--- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
-CREATE UNIQUE INDEX "NOTIFICATIONID" ON "SENTRY_PATH_CHANGE" ("NOTIFICATION_ID");
-
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
CREATE TABLE "SENTRY_HMS_NOTIFICATION_ID"
(
- "NOTIFICATION_ID" bigint NOT NULL,
- CONSTRAINT "NOTIFICATION_PRIVILEGE_PK" PRIMARY KEY ("NOTIFICATION_ID")
+ "NOTIFICATION_ID" bigint NOT NULL
);
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.0.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.0.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.0.0.sql
index 01be509..69ef5b7 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.0.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.0.0.sql
@@ -241,13 +241,9 @@ CREATE TABLE SENTRY_PATH_CHANGE
-- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
ALTER TABLE SENTRY_PATH_CHANGE ADD CONSTRAINT SENTRY_PATH_CHANGE_PK PRIMARY KEY (CHANGE_ID);
-CREATE UNIQUE INDEX NOTIFICATIONID ON SENTRY_PATH_CHANGE (NOTIFICATION_ID);
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
CREATE TABLE SENTRY_HMS_NOTIFICATION_ID
(
NOTIFICATION_ID bigint NOT NULL
-);
-
--- Constraints for table SENTRY_HMS_NOTIFICATION_ID for class [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
-ALTER TABLE SENTRY_HMS_NOTIFICATION_ID ADD CONSTRAINT NOTIFICATION_PRIVILEGE_PK PRIMARY KEY (NOTIFICATION_ID);
\ No newline at end of file
+);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.0.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.0.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.0.0.sql
index dca9e47..0db7ba9 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.0.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.0.0.sql
@@ -241,7 +241,6 @@ CREATE TABLE SENTRY_PATH_CHANGE
-- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
ALTER TABLE SENTRY_PATH_CHANGE ADD CONSTRAINT SENTRY_PATH_CHANGE_PK PRIMARY KEY (CHANGE_ID);
-CREATE UNIQUE INDEX NOTIFICATIONID ON SENTRY_PATH_CHANGE (NOTIFICATION_ID);
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
@@ -249,6 +248,3 @@ CREATE TABLE SENTRY_HMS_NOTIFICATION_ID
(
NOTIFICATION_ID BIGINT NOT NULL
);
-
--- Constraints for table SENTRY_HMS_NOTIFICATION_ID for class [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
-ALTER TABLE SENTRY_HMS_NOTIFICATION_ID ADD CONSTRAINT SENTRY_NOTIFICATION_PK PRIMARY KEY (NOTIFICATION_ID);
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.0.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.0.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.0.0.sql
index 0189724..183481a 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.0.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.0.0.sql
@@ -275,12 +275,8 @@ CREATE TABLE `SENTRY_PATH_CHANGE`
CONSTRAINT `SENTRY_PATH_CHANGE_PK` PRIMARY KEY (`CHANGE_ID`)
) ENGINE=INNODB;
--- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
-CREATE UNIQUE INDEX `NOTIFICATIONID` ON `SENTRY_PATH_CHANGE` (`NOTIFICATION_ID`);
-
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
CREATE TABLE `SENTRY_HMS_NOTIFICATION_ID`
(
- `NOTIFICATION_ID` BIGINT NOT NULL,
- CONSTRAINT `SENTRY_NOTIFICATION_PK` PRIMARY KEY (`NOTIFICATION_ID`)
+ `NOTIFICATION_ID` BIGINT NOT NULL
)ENGINE=INNODB;
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.0.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.0.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.0.0.sql
index ecb76fc..cf4f0ed 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.0.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.0.0.sql
@@ -256,14 +256,10 @@ CREATE TABLE "SENTRY_PATH_CHANGE"
);
-- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
-CREATE UNIQUE INDEX "NOTIFICATIONID" ON "SENTRY_PATH_CHANGE" ("NOTIFICATION_ID");
ALTER TABLE "SENTRY_PATH_CHANGE" ADD CONSTRAINT SENTRY_PATH_CHANGE_PK PRIMARY KEY ("CHANGE_ID");
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
CREATE TABLE "SENTRY_HMS_NOTIFICATION_ID"
(
"NOTIFICATION_ID" NUMBER NOT NULL
-);
-
--- Constraints for table SENTRY_HMS_NOTIFICATION_ID for class [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
-ALTER TABLE "SENTRY_HMS_NOTIFICATION_ID" ADD CONSTRAINT "NOTIFICATION_PRIVILEGE_PK" PRIMARY KEY ("NOTIFICATION_ID");
\ No newline at end of file
+);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.0.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.0.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.0.0.sql
index 3e5d554..5974ed9 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.0.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.0.0.sql
@@ -263,14 +263,10 @@ CREATE TABLE "SENTRY_PATH_CHANGE"
CONSTRAINT "SENTRY_PATH_CHANGE_PK" PRIMARY KEY ("CHANGE_ID")
);
--- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
-CREATE UNIQUE INDEX "NOTIFICATIONID" ON "SENTRY_PATH_CHANGE" ("NOTIFICATION_ID");
-
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
CREATE TABLE "SENTRY_HMS_NOTIFICATION_ID"
(
- "NOTIFICATION_ID" bigint NOT NULL,
- CONSTRAINT "NOTIFICATION_PRIVILEGE_PK" PRIMARY KEY ("NOTIFICATION_ID")
+ "NOTIFICATION_ID" bigint NOT NULL
);
COMMIT;
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-2.0.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-2.0.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-2.0.0.sql
index ac85968..20c50b7 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-2.0.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-2.0.0.sql
@@ -88,7 +88,6 @@ CREATE TABLE SENTRY_PATH_CHANGE
-- Constraints for table SENTRY_PATH_CHANGE for class [org.apache.sentry.provider.db.service.model.MSentryPathChange]
ALTER TABLE SENTRY_PATH_CHANGE ADD CONSTRAINT SENTRY_PATH_CHANGE_PK PRIMARY KEY (CHANGE_ID);
-CREATE UNIQUE INDEX NOTIFICATIONID ON SENTRY_PATH_CHANGE (NOTIFICATION_ID);
-- Table SENTRY_HMS_NOTIFICATION_ID for classes [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
CREATE TABLE SENTRY_HMS_NOTIFICATION_ID
@@ -96,8 +95,5 @@ CREATE TABLE SENTRY_HMS_NOTIFICATION_ID
NOTIFICATION_ID bigint NOT NULL
);
--- Constraints for table SENTRY_HMS_NOTIFICATION_ID for class [org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
-ALTER TABLE SENTRY_HMS_NOTIFICATION_ID ADD CONSTRAINT NOTIFICATION_PRIVILEGE_PK PRIMARY KEY (NOTIFICATION_ID);
-
-- Version update
UPDATE SENTRY_VERSION SET SCHEMA_VERSION='2.0.0', VERSION_COMMENT='Sentry release version 2.0.0' WHERE VER_ID=1;
http://git-wip-us.apache.org/repos/asf/sentry/blob/7bac9f4f/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/persistent/TestSentryStore.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/persistent/TestSentryStore.java b/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/persistent/TestSentryStore.java
index d35cafb..2d6b92a 100644
--- a/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/persistent/TestSentryStore.java
+++ b/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/persistent/TestSentryStore.java
@@ -2478,6 +2478,62 @@ public class TestSentryStore extends org.junit.Assert {
}
@Test
+ public void testAddPathsWithDuplicatedNotificationIdShouldBeAllowed() throws Exception {
+ long notificationID = 1;
+
+ // Persist an empty image so that we can add paths to it.
+ sentryStore.persistFullPathsImage(new HashMap<String, Set<String>>(), 0);
+
+ // Create two path updates with the same sequence ID
+ PathsUpdate update1 = new PathsUpdate(notificationID, false);
+ PathsUpdate update2 = new PathsUpdate(notificationID, false);
+
+ // Populate the path updates with different objects and paths
+ update1.newPathChange("db1").addToAddPaths(Arrays.asList("/hive/db1"));
+ update2.newPathChange("db2").addToAddPaths(Arrays.asList("/hive/db2"));
+
+ // Persist both path updates. Persisting should be allowed, and paths should be
+ // persisted even if they have the same sequence ID
+ sentryStore.addAuthzPathsMapping("db1", Arrays.asList("/hive/db1"), update1);
+ sentryStore.addAuthzPathsMapping("db2", Arrays.asList("/hive/db2"), update2);
+
+ // Check the latest persisted ID matches to both the path updates
+ long latestID = sentryStore.getLastProcessedNotificationID();
+ assertEquals(notificationID, latestID);
+
+ // Check that retrieving a full paths image returns both paths updates
+ Map<String, Set<String>> pathsImage = sentryStore.retrieveFullPathsImage().getPathImage();
+ assertEquals(2, pathsImage.size());
+ assertEquals(1, pathsImage.get("db1").size());
+ assertTrue(pathsImage.get("db1").contains("/hive/db1"));
+ assertEquals(1, pathsImage.get("db2").size());
+ assertTrue(pathsImage.get("db2").contains("/hive/db2"));
+
+ // Check that retrieving delta changes returns both patch updates
+ List<MSentryPathChange> pathsChanges = sentryStore.getMSentryPathChanges();
+ assertEquals(2, pathsChanges.size());
+ assertEquals(1, pathsChanges.get(0).getChangeID()); // changeID = 1
+ assertEquals(notificationID, pathsChanges.get(0).getNotificationID());
+ assertTrue(pathsChanges.get(0).getPathChange().contains("/hive/db1"));
+ assertEquals(2, pathsChanges.get(1).getChangeID()); // changeID = 2
+ assertEquals(notificationID, pathsChanges.get(1).getNotificationID());
+ assertTrue(pathsChanges.get(1).getPathChange().contains("/hive/db2"));
+ }
+
+ @Test
+ public void testPersistDuplicatedNotificationIdShouldBeAllowed() throws Exception {
+ long notificationID = 1;
+
+ // Persist the same ID twice should not cause any issues
+ sentryStore.persistLastProcessedNotificationID(notificationID);
+ sentryStore.persistLastProcessedNotificationID(notificationID);
+
+ // Retrieving latest peristed ID should match with the previous persisted ID
+ long latestID = sentryStore.getLastProcessedNotificationID();
+ assertEquals(notificationID, latestID);
+ }
+
+ @Test
public void testAddDeleteAuthzPathsMapping() throws Exception {
long notificationID = 0;