This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch muse-bug-bash/IntLongMath
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit 56ca838e524d9e345f82d28985017d29ed470203
Author: kezhenxu94 <[email protected]>
AuthorDate: Wed Sep 30 23:43:08 2020 +0800

    Promote Integer to Long before multiplying to avoid numeric overflow
---
 .../skywalking/apm/commons/datacarrier/buffer/Channels.java      | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git 
a/apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/buffer/Channels.java
 
b/apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/buffer/Channels.java
index 26c7ab0..b9ad4fd 100644
--- 
a/apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/buffer/Channels.java
+++ 
b/apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/buffer/Channels.java
@@ -27,7 +27,7 @@ import 
org.apache.skywalking.apm.commons.datacarrier.partition.IDataPartitioner;
 public class Channels<T> {
     private final QueueBuffer<T>[] bufferChannels;
     private IDataPartitioner<T> dataPartitioner;
-    private BufferStrategy strategy;
+    private final BufferStrategy strategy;
     private final long size;
 
     public Channels(int channelSize, int bufferSize, IDataPartitioner<T> 
partitioner, BufferStrategy strategy) {
@@ -36,12 +36,13 @@ public class Channels<T> {
         bufferChannels = new QueueBuffer[channelSize];
         for (int i = 0; i < channelSize; i++) {
             if (BufferStrategy.BLOCKING.equals(strategy)) {
-                bufferChannels[i] = new 
ArrayBlockingQueueBuffer<T>(bufferSize, strategy);
+                bufferChannels[i] = new ArrayBlockingQueueBuffer<>(bufferSize, 
strategy);
             } else {
-                bufferChannels[i] = new Buffer<T>(bufferSize, strategy);
+                bufferChannels[i] = new Buffer<>(bufferSize, strategy);
             }
         }
-        size = channelSize * bufferSize;
+        // noinspection PointlessArithmeticExpression
+        size = 1L * channelSize * bufferSize; // it's not pointless, it 
prevents numeric overflow before assigning an integer to a long
     }
 
     public boolean save(T data) {

Reply via email to