diff --git a/src/org/jgroups/protocols/UNICAST3.java b/src/org/jgroups/protocols/UNICAST3.java index 2e87288d66..cf62131bce 100644 --- a/src/org/jgroups/protocols/UNICAST3.java +++ b/src/org/jgroups/protocols/UNICAST3.java @@ -1164,8 +1164,11 @@ protected void deliverBatch(MessageBatch batch) { sb.append(" (" + batch.size()).append(" messages)"); log.trace(sb); } - if(stats) - avg_delivery_batch_size.add(batch.size()); + if(stats) { + synchronized(avg_delivery_batch_size) { // can be accessed by different threads concurrently + avg_delivery_batch_size.add(batch.size()); + } + } up_prot.up(batch); } catch(Throwable t) { diff --git a/src/org/jgroups/protocols/pbcast/NAKACK2.java b/src/org/jgroups/protocols/pbcast/NAKACK2.java index a28f13872f..68aa893546 100644 --- a/src/org/jgroups/protocols/pbcast/NAKACK2.java +++ b/src/org/jgroups/protocols/pbcast/NAKACK2.java @@ -905,8 +905,12 @@ protected void removeAndDeliver(Table buf, Address sender, boolean loop } int size=batch.size(); if(size > 0) { - if(stats) - avg_batch_size.add(size); + if(stats) { + synchronized(avg_batch_size) { + // accessed by multiple threads concurrently + avg_batch_size.add(size); + } + } deliverBatch(batch); } }