This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-net.git
The following commit(s) were added to refs/heads/master by this push:
new c58f0d7 [SpotBugs] Fix concurrent counting of chunks in
IMAPExportMbox.
c58f0d7 is described below
commit c58f0d760fe9b93f0c5acabbb6baad0874908ff7
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Feb 12 10:55:55 2021 -0500
[SpotBugs] Fix concurrent counting of chunks in IMAPExportMbox.
---
src/changes/changes.xml | 12 ++++++++----
.../org/apache/commons/net/examples/mail/IMAPExportMbox.java | 7 ++++---
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7bf30c1..e9870d8 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -65,18 +65,22 @@ The <action> type attribute can be add,update,fix,remove.
<body>
<release version="3.8.0" date="2020-MM-DD" description="Maintenance
and bug fix release (Java 7).">
<!-- ADD -->
- <action type="update" dev="ggregory" due-to="Arturo Bernal, Gary
Gregory">
+ <action type="add" dev="ggregory" due-to="Arturo Bernal, Gary
Gregory">
Add and use NetConstants.
</action>
- <action type="update" dev="ggregory" due-to="Gary Gregory">
+ <action type="add" dev="ggregory" due-to="Gary Gregory">
Add and use SocketClient.applySocketAttributes().
</action>
- <action type="update" dev="ggregory" due-to="Gary Gregory">
+ <action type="add" dev="ggregory" due-to="Gary Gregory">
Add FTPClient.hasFeature(FTPCmd).
</action>
- <action type="update" dev="ggregory" due-to="Gary Gregory">
+ <action type="add" dev="ggregory" due-to="Gary Gregory">
Add FTPClient.mdtmCalendar(String).
</action>
+ <!-- FIX -->
+ <action type="fox" dev="ggregory" due-to="Gary Gregory">
+ Fix concurrent counting of chunks in IMAPExportMbox.
+ </action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">
Bump actions/checkout from v2.3.3 to v2.3.4 #69.
diff --git
a/src/main/java/org/apache/commons/net/examples/mail/IMAPExportMbox.java
b/src/main/java/org/apache/commons/net/examples/mail/IMAPExportMbox.java
index 19257be..54f5f15 100644
--- a/src/main/java/org/apache/commons/net/examples/mail/IMAPExportMbox.java
+++ b/src/main/java/org/apache/commons/net/examples/mail/IMAPExportMbox.java
@@ -30,6 +30,7 @@ import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.TimeZone;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -276,7 +277,7 @@ public final class IMAPExportMbox
}
} catch (final IOException ioe) {
- final String count = mboxListener == null ? "?" :
Integer.toString(mboxListener.total);
+ final String count = mboxListener == null ? "?" :
mboxListener.total.toString();
System.err.println(
"FETCH " + sequenceSet + " " + itemNames + " failed after
processing " + count + " complete messages ");
if (mboxListener != null) {
@@ -331,7 +332,7 @@ public final class IMAPExportMbox
private static class MboxListener implements IMAPChunkListener {
private final BufferedWriter bufferedWriter;
- volatile int total;
+ volatile AtomicInteger total = new AtomicInteger();
volatile String lastFetched;
volatile List<String> missingIds = new ArrayList<>();
volatile long lastSeq = -1;
@@ -424,7 +425,7 @@ public final class IMAPExportMbox
throw new RuntimeException(e); // chunkReceived cannot throw a
checked Exception
}
lastFetched = firstLine;
- total++;
+ total.incrementAndGet();
if (checkSequence) {
m = PATSEQ.matcher(firstLine);
if (m.lookingAt()) { // found a match