From a8720e645f0b352864da29ac670579f7d596ff76 Mon Sep 17 00:00:00 2001 From: deardeng <565620795@qq.com> Date: Fri, 17 Nov 2023 19:16:29 +0800 Subject: [PATCH] [fix](fe ut) Fix borrow oject throw npe (#27072) occasional failure of fe ut, borrowObject throw npe ``` get agent task request. type: CREATE, signature: 10008, fe addr: null java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) at org.apache.commons.pool2.impl.GenericKeyedObjectPool.register(GenericKeyedObjectPool.java:1079) at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:347) get agent task request. type: CREATE, signature: 10012, fe addr: TNetworkAddress(hostname:127.0.0.1, port:56072) at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:277) at org.apache.doris.common.GenericPool.borrowObject(GenericPool.java:99) at org.apache.doris.utframe.MockedBackendFactory$DefaultBeThriftServiceImpl$1.run(MockedBackendFactory.java:219) at java.lang.Thread.run(Thread.java:750) ``` --- .../java/org/apache/doris/utframe/MockedBackendFactory.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/test/java/org/apache/doris/utframe/MockedBackendFactory.java b/fe/fe-core/src/test/java/org/apache/doris/utframe/MockedBackendFactory.java index 860b58a47a..b2184a5bad 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/utframe/MockedBackendFactory.java +++ b/fe/fe-core/src/test/java/org/apache/doris/utframe/MockedBackendFactory.java @@ -174,8 +174,12 @@ public class MockedBackendFactory { FrontendService.Client client = null; TNetworkAddress address = null; try { - address = backend.getFeAddress(); + // ATTR: backend.getFeAddress must after taskQueue.take, because fe addr thread race TAgentTaskRequest request = taskQueue.take(); + address = backend.getFeAddress(); + if (address == null) { + System.out.println("fe addr thread race, please check it"); + } System.out.println( "get agent task request. type: " + request.getTaskType() + ", signature: " + request.getSignature() + ", fe addr: " + address);