Skip to content

Commit f62fcc7

Browse files
committed
Fix TowerJsonGenerator thread-safety issue (#6619) [ci fast]
Add synchronized to writeObject method to prevent concurrent modification of the shared stack field when multiple executor threads serialize JSON simultaneously. Signed-off-by: Paolo Di Tommaso <[email protected]>
1 parent 95c429f commit f62fcc7

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

plugins/nf-tower/src/main/io/seqera/tower/plugin/TowerJsonGenerator.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import org.apache.groovy.json.internal.CharBuf
4040
@CompileStatic
4141
class TowerJsonGenerator extends DefaultJsonGenerator {
4242

43-
List<String> stack = new ArrayList<>(10)
43+
private List<String> stack = new ArrayList<>(10)
4444
Map<String,Integer> scheme
4545

4646
static TowerJsonGenerator create(Map<String,Integer> scheme) {
@@ -74,8 +74,8 @@ class TowerJsonGenerator extends DefaultJsonGenerator {
7474
}
7575

7676
@Override
77-
protected void writeObject(String key, Object object, CharBuf buffer) {
78-
final pos=stack.size()
77+
protected synchronized void writeObject(String key, Object object, CharBuf buffer) {
78+
final pos = stack.size()
7979
if(key) stack.add(pos, key)
8080
final fqn = stack.join('.')
8181
try {

0 commit comments

Comments
 (0)