This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new c5c1bad8d3 Fix The first element of the queue cannot be deleted when
an exception occurs in the method processWithAccessKeyLogger(#9978)
c5c1bad8d3 is described below
commit c5c1bad8d399df2f0080a264b99908841ec3190d
Author: juzimao <[email protected]>
AuthorDate: Sat May 7 14:46:18 2022 +0800
Fix The first element of the queue cannot be deleted when an exception
occurs in the method processWithAccessKeyLogger(#9978)
Fixes issue #9953
---
.../org/apache/dubbo/rpc/filter/AccessLogFilter.java | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
index ea836e199d..434660bb3c 100644
---
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
+++
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
@@ -34,7 +34,6 @@ import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import java.util.Iterator;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
@@ -156,22 +155,21 @@ public class AccessLogFilter implements Filter {
}
private void processWithAccessKeyLogger(Queue<AccessLogData> logQueue,
File file) throws IOException {
- try (FileWriter writer = new FileWriter(file, true)) {
- for (Iterator<AccessLogData> iterator = logQueue.iterator();
- iterator.hasNext();
- iterator.remove()) {
- writer.write(iterator.next().getLogMessage());
+ FileWriter writer = new FileWriter(file, true);
+ try {
+ while (!logQueue.isEmpty()) {
+ writer.write(logQueue.poll().getLogMessage());
writer.write(System.getProperty(LINE_SEPARATOR));
}
+ }finally {
writer.flush();
+ writer.close();
}
}
private void processWithServiceLogger(Queue<AccessLogData> logQueue) {
- for (Iterator<AccessLogData> iterator = logQueue.iterator();
- iterator.hasNext();
- iterator.remove()) {
- AccessLogData logData = iterator.next();
+ while (!logQueue.isEmpty()) {
+ AccessLogData logData = logQueue.poll();
LoggerFactory.getLogger(LOG_KEY + "." +
logData.getServiceName()).info(logData.getLogMessage());
}
}