Skip to content

Commit d3a5bce

Browse files
committed
dlm: Make DistributedLockManager use AbstractLockManager2
DistributedLockManager used to create new Base64-strings upon objIdToKey(byte[]), which is suboptimal. Use Opaque.getBase64 instead. Related: #149 Signed-off-by: Christian Kohlschütter <[email protected]>
1 parent 7334be2 commit d3a5bce

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

dlm/src/main/java/org/dcache/nfs/v4/nlm/DistributedLockManager.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.util.concurrent.locks.Condition;
2626
import java.util.concurrent.locks.Lock;
2727

28+
import org.dcache.nfs.util.Opaque;
29+
2830
import com.hazelcast.core.HazelcastInstance;
2931
import com.hazelcast.multimap.MultiMap;
3032

@@ -45,7 +47,7 @@
4547
*
4648
* @since 0.16
4749
*/
48-
public class DistributedLockManager extends AbstractLockManager {
50+
public class DistributedLockManager extends AbstractLockManager2 {
4951

5052
private final MultiMap<String, NlmLock> locks;
5153

@@ -61,7 +63,7 @@ public DistributedLockManager(HazelcastInstance hz, String name) {
6163
}
6264

6365
@Override
64-
protected Lock getObjectLock(byte[] objId) {
66+
protected Lock getObjectLock(Opaque objId) {
6567
String key = objIdToKey(objId);
6668
return new Lock() {
6769
@Override
@@ -103,40 +105,37 @@ public Condition newCondition() {
103105
* @return collection of active locks.
104106
*/
105107
@Override
106-
protected Collection<NlmLock> getActiveLocks(byte[] objId) {
108+
protected Collection<NlmLock> getActiveLocks(Opaque objId) {
107109
String key = objIdToKey(objId);
108110
return locks.get(key);
109111
}
110112

111113
@Override
112-
protected void add(byte[] objId, NlmLock lock) {
114+
protected void add(Opaque objId, NlmLock lock) {
113115
String key = objIdToKey(objId);
114116
locks.put(key, lock);
115117
}
116118

117119
@Override
118-
protected boolean remove(byte[] objId, NlmLock lock) {
120+
protected boolean remove(Opaque objId, NlmLock lock) {
119121
String key = objIdToKey(objId);
120122
return locks.remove(key, lock);
121123
}
122124

123125
@Override
124-
protected void addAll(byte[] objId, Collection<NlmLock> locks) {
126+
protected void addAll(Opaque objId, Collection<NlmLock> locks) {
125127
String key = objIdToKey(objId);
126128
locks.forEach(l -> this.locks.put(key, l));
127129
}
128130

129131
@Override
130-
protected void removeAll(byte[] objId, Collection<NlmLock> locks) {
132+
protected void removeAll(Opaque objId, Collection<NlmLock> locks) {
131133
String key = objIdToKey(objId);
132134
locks.forEach(l -> this.locks.remove(key, l));
133135
}
134136

135-
private static String objIdToKey(byte[] objId) {
136-
return Base64
137-
.getEncoder()
138-
.withoutPadding()
139-
.encodeToString(objId);
137+
private static String objIdToKey(Opaque objId) {
138+
return objId.getBase64();
140139
}
141140

142141
}

0 commit comments

Comments
 (0)