Skip to content

Commit d1866c4

Browse files
committed
Synchronize inode ID generation.
1 parent 6d0b245 commit d1866c4

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/PosixResources.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@
4646
import java.nio.channels.Pipe;
4747
import java.util.ArrayList;
4848
import java.util.Collections;
49+
import java.util.HashMap;
4950
import java.util.List;
5051
import java.util.Map;
51-
import java.util.concurrent.ConcurrentHashMap;
5252

5353
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
5454
import com.oracle.truffle.api.TruffleFile;
@@ -86,7 +86,7 @@ public PosixResources() {
8686
files.add(null);
8787
files.add(null);
8888
files.add(null);
89-
inodes = new ConcurrentHashMap<>();
89+
inodes = new HashMap<>();
9090
}
9191

9292
@TruffleBoundary(allowInlining = true)
@@ -206,13 +206,15 @@ public int waitpid(int pid) throws ArrayIndexOutOfBoundsException, InterruptedEx
206206

207207
@TruffleBoundary(allowInlining = true)
208208
public int getInodeId(String canonical) {
209-
int inodeId;
210-
if (!inodes.containsKey(canonical)) {
211-
inodeId = inodeCnt++;
212-
inodes.put(canonical, inodeId);
213-
} else {
214-
inodeId = inodes.get(canonical);
209+
synchronized (inodes) {
210+
int inodeId;
211+
if (!inodes.containsKey(canonical)) {
212+
inodeId = inodeCnt++;
213+
inodes.put(canonical, inodeId);
214+
} else {
215+
inodeId = inodes.get(canonical);
216+
}
217+
return inodeId;
215218
}
216-
return inodeId;
217219
}
218220
}

0 commit comments

Comments
 (0)