You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2022/05/07 06:46:28 UTC
[dubbo] branch master updated: Fix The first element of the queue cannot be deleted when an exception occurs in the method processWithAccessKeyLogger(#9978)
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 <57...@qq.com>
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());
}
}