Skip to content

Commit 7334be2

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

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

core/src/main/java/org/dcache/nfs/v4/nlm/SimpleLm.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,22 @@
2020
package org.dcache.nfs.v4.nlm;
2121

2222
import java.util.ArrayList;
23-
import java.util.Base64;
2423
import java.util.Collection;
2524
import java.util.Collections;
2625
import java.util.List;
2726
import java.util.concurrent.ConcurrentHashMap;
2827
import java.util.concurrent.locks.Lock;
2928

29+
import org.dcache.nfs.util.Opaque;
30+
3031
import com.google.common.util.concurrent.Striped;
3132

3233
/**
3334
* Simple non-distributed implementation of {@link LockManager}.
3435
*
3536
* @since 0.14
3637
*/
37-
public class SimpleLm extends AbstractLockManager {
38+
public class SimpleLm extends AbstractLockManager2 {
3839

3940
/*
4041
* Use {@link Striped} here to split synchronized block on file locks into multiple partitions to increase
@@ -60,26 +61,26 @@ public SimpleLm(int concurrency) {
6061
private final ConcurrentHashMap<String, List<NlmLock>> locks = new ConcurrentHashMap<>();
6162

6263
@Override
63-
protected Lock getObjectLock(byte[] objId) {
64+
protected Lock getObjectLock(Opaque objId) {
6465
String key = toKey(objId);
6566
return objLock.get(key);
6667
}
6768

6869
@Override
69-
protected Collection<NlmLock> getActiveLocks(byte[] objId) {
70+
protected Collection<NlmLock> getActiveLocks(Opaque objId) {
7071
String key = toKey(objId);
7172
return locks.getOrDefault(key, Collections.emptyList());
7273
}
7374

7475
@Override
75-
protected void add(byte[] objId, NlmLock lock) {
76+
protected void add(Opaque objId, NlmLock lock) {
7677
String key = toKey(objId);
7778
Collection<NlmLock> l = locks.computeIfAbsent(key, k -> new ArrayList<>());
7879
l.add(lock);
7980
}
8081

8182
@Override
82-
protected boolean remove(byte[] objId, NlmLock lock) {
83+
protected boolean remove(Opaque objId, NlmLock lock) {
8384
String key = toKey(objId);
8485
Collection<NlmLock> l = locks.get(key);
8586
boolean isRemoved = false;
@@ -93,14 +94,14 @@ protected boolean remove(byte[] objId, NlmLock lock) {
9394
}
9495

9596
@Override
96-
protected void addAll(byte[] objId, Collection<NlmLock> locks) {
97+
protected void addAll(Opaque objId, Collection<NlmLock> locks) {
9798
String key = toKey(objId);
9899
Collection<NlmLock> l = this.locks.computeIfAbsent(key, k -> new ArrayList<>());
99100
l.addAll(locks);
100101
}
101102

102103
@Override
103-
protected void removeAll(byte[] objId, Collection<NlmLock> locks) {
104+
protected void removeAll(Opaque objId, Collection<NlmLock> locks) {
104105
String key = toKey(objId);
105106
Collection<NlmLock> l = this.locks.get(key);
106107
if (l != null) {
@@ -111,8 +112,8 @@ protected void removeAll(byte[] objId, Collection<NlmLock> locks) {
111112
}
112113
}
113114

114-
private final String toKey(byte[] objId) {
115-
return Base64.getEncoder().encodeToString(objId);
115+
private final String toKey(Opaque objId) {
116+
return objId.getBase64();
116117
}
117118

118119
}

0 commit comments

Comments
 (0)