You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2021/05/10 13:18:38 UTC

Change in asterixdb[cheshire-cat]: [NO ISSUE][TX] Ensure lock manager computes valid indexes for hash table

From Ali Alsuliman <al...@gmail.com>:

Ali Alsuliman has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/11403 )


Change subject: [NO ISSUE][TX] Ensure lock manager computes valid indexes for hash table
......................................................................

[NO ISSUE][TX] Ensure lock manager computes valid indexes for hash table

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Given a dataset id and an entity hash value, ensure that the lock
manager computes a valid index for looking up the hash table.

Change-Id: I33d342455a79d0d69b49e126ff6a40c47b07d0dd
---
M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java
1 file changed, 7 insertions(+), 1 deletion(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/03/11403/1

diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java
index 93cda83..2e98813 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java
@@ -41,7 +41,13 @@
 
     ResourceGroup get(int dId, int entityHashValue) {
         // TODO ensure good properties of hash function
-        return table[Math.abs(dId ^ entityHashValue) % size];
+        int h = Math.abs(dId ^ entityHashValue);
+        if (h < 0) {
+            // Math.abs returns a negative when the value is Integer.MIN_VALUE
+            // ensure h is not negative since result sign of m % n is the same as m
+            h = 0;
+        }
+        return table[h % size];
     }
 
     ResourceGroup get(int i) {

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/11403
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: cheshire-cat
Gerrit-Change-Id: I33d342455a79d0d69b49e126ff6a40c47b07d0dd
Gerrit-Change-Number: 11403
Gerrit-PatchSet: 1
Gerrit-Owner: Ali Alsuliman <al...@gmail.com>
Gerrit-MessageType: newchange

Change in asterixdb[cheshire-cat]: [NO ISSUE][TX] Ensure lock manager computes valid indexes for hash table

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Ali Alsuliman <al...@gmail.com>:

Ali Alsuliman has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/11403 )


Change subject: [NO ISSUE][TX] Ensure lock manager computes valid indexes for hash table
......................................................................

[NO ISSUE][TX] Ensure lock manager computes valid indexes for hash table

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Given a dataset id and an entity hash value, ensure that the lock
manager computes a valid index for looking up the hash table.

Change-Id: I33d342455a79d0d69b49e126ff6a40c47b07d0dd
---
M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java
1 file changed, 7 insertions(+), 1 deletion(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/03/11403/1

diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java
index 93cda83..2e98813 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/locking/ResourceGroupTable.java
@@ -41,7 +41,13 @@
 
     ResourceGroup get(int dId, int entityHashValue) {
         // TODO ensure good properties of hash function
-        return table[Math.abs(dId ^ entityHashValue) % size];
+        int h = Math.abs(dId ^ entityHashValue);
+        if (h < 0) {
+            // Math.abs returns a negative when the value is Integer.MIN_VALUE
+            // ensure h is not negative since result sign of m % n is the same as m
+            h = 0;
+        }
+        return table[h % size];
     }
 
     ResourceGroup get(int i) {

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/11403
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: cheshire-cat
Gerrit-Change-Id: I33d342455a79d0d69b49e126ff6a40c47b07d0dd
Gerrit-Change-Number: 11403
Gerrit-PatchSet: 1
Gerrit-Owner: Ali Alsuliman <al...@gmail.com>
Gerrit-MessageType: newchange