You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by GitBox <gi...@apache.org> on 2022/07/20 05:15:33 UTC

[GitHub] [skywalking] BFergerson opened a new issue, #9359: [Bug] NPE race condition in BanyanDBBatchDAO

BFergerson opened a new issue, #9359:
URL: https://github.com/apache/skywalking/issues/9359

   ### Search before asking
   
   - [X] I had searched in the [issues](https://github.com/apache/skywalking/issues?q=is%3Aissue) and found no similar issues.
   
   
   ### Apache SkyWalking Component
   
   BanyanDB (apache/skywalking-banyandb)
   
   ### What happened
   
   NPE is thrown in BanyanDBBatchDAO when used via multiple threads.
   
   Trace stack:
   ```
   java.lang.NullPointerException: null
   2022-07-20T04:50:10.880262685Z 	at org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBBatchDAO.insert(BanyanDBBatchDAO.java:63) ~[storage-banyandb-plugin-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880265840Z 	at org.apache.skywalking.oap.server.core.analysis.worker.RecordPersistentWorker.in(RecordPersistentWorker.java:52) ~[server-core-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880268267Z 	at org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor.in(RecordStreamProcessor.java:55) ~[server-core-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880270419Z 	at org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecordDispatcher.dispatch(LogRecordDispatcher.java:44) ~[server-core-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880272400Z 	at org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecordDispatcher.dispatch(LogRecordDispatcher.java:25) ~[server-core-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880274385Z 	at org.apache.skywalking.oap.server.core.analysis.DispatcherManager.forward(DispatcherManager.java:61) ~[server-core-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880276332Z 	at org.apache.skywalking.oap.server.core.source.SourceReceiverImpl.receive(SourceReceiverImpl.java:36) ~[server-core-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880278212Z 	at org.apache.skywalking.oap.log.analyzer.provider.log.listener.RecordAnalysisListener.build(RecordAnalysisListener.java:63) ~[log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880280360Z 	at org.apache.skywalking.oap.log.analyzer.dsl.spec.filter.FilterSpec.lambda$sink$4(FilterSpec.java:182) ~[log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880282879Z 	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880286017Z 	at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880289278Z 	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880291868Z 	at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880293686Z 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880295507Z 	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880298351Z 	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880301670Z 	at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880303618Z 	at java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880305674Z 	at org.apache.skywalking.oap.log.analyzer.dsl.spec.filter.FilterSpec.sink(FilterSpec.java:182) ~[log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880315230Z 	at Script1$_run_closure1.doCall(Script1.groovy:2) ~[?:?]
   2022-07-20T04:50:10.880332380Z 	at Script1$_run_closure1.call(Script1.groovy) ~[?:?]
   2022-07-20T04:50:10.880334820Z 	at org.apache.skywalking.oap.log.analyzer.dsl.spec.LALDelegatingScript.filter(LALDelegatingScript.java:34) ~[log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880337345Z 	at Script1.run(Script1.groovy:1) ~[?:?]
   2022-07-20T04:50:10.880339823Z 	at org.apache.skywalking.oap.log.analyzer.dsl.DSL.evaluate(DSL.java:96) ~[log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880341892Z 	at org.apache.skywalking.oap.log.analyzer.provider.log.listener.LogFilterListener.lambda$build$0(LogFilterListener.java:44) ~[log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880343455Z 	at java.util.ArrayList.forEach(Unknown Source) ~[?:?]
   2022-07-20T04:50:10.880345082Z 	at org.apache.skywalking.oap.log.analyzer.provider.log.listener.LogFilterListener.build(LogFilterListener.java:42) ~[log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880346794Z 	at java.util.ArrayList.forEach(Unknown Source) [?:?]
   2022-07-20T04:50:10.880348341Z 	at org.apache.skywalking.oap.log.analyzer.provider.log.LogAnalyzer.notifyListenerToBuild(LogAnalyzer.java:64) [log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880349991Z 	at org.apache.skywalking.oap.log.analyzer.provider.log.LogAnalyzer.doAnalysis(LogAnalyzer.java:56) [log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880351520Z 	at org.apache.skywalking.oap.log.analyzer.provider.log.LogAnalyzerServiceImpl.doAnalysis(LogAnalyzerServiceImpl.java:38) [log-analyzer-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880353383Z 	at org.apache.skywalking.oap.server.recevier.log.provider.handler.grpc.LogReportServiceGrpcHandler$1.onNext(LogReportServiceGrpcHandler.java:90) [skywalking-log-recevier-plugin-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880355812Z 	at org.apache.skywalking.oap.server.recevier.log.provider.handler.grpc.LogReportServiceGrpcHandler$1.onNext(LogReportServiceGrpcHandler.java:65) [skywalking-log-recevier-plugin-9.1.0.jar:9.1.0]
   2022-07-20T04:50:10.880359025Z 	at io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onMessage(ServerCalls.java:262) [grpc-stub-1.46.0.jar:1.46.0]
   2022-07-20T04:50:10.880360950Z 	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailableInternal(ServerCallImpl.java:318) [grpc-core-1.46.0.jar:1.46.0]
   2022-07-20T04:50:10.880362714Z 	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailable(ServerCallImpl.java:301) [grpc-core-1.46.0.jar:1.46.0]
   2022-07-20T04:50:10.880364391Z 	at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable.runInContext(ServerImpl.java:834) [grpc-core-1.46.0.jar:1.46.0]
   2022-07-20T04:50:10.880366146Z 	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) [grpc-core-1.46.0.jar:1.46.0]
   2022-07-20T04:50:10.880367646Z 	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133) [grpc-core-1.46.0.jar:1.46.0]
   2022-07-20T04:50:10.880369141Z 	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
   2022-07-20T04:50:10.880372472Z 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
   2022-07-20T04:50:10.880374018Z 	at java.lang.Thread.run(Unknown Source) [?:?]
   2022-07-20T04:51:52.584600878Z 
   ```
   
   ### What you expected to happen
   
   Shouldn't throw NPE when used via multiple threads
   
   ### How to reproduce
   
   I don't have a reproducibe example but it should be fairly apparent from this code:
   https://github.com/apache/skywalking/blob/ab3746276555b42dddd7d6f4ba28ede38fa17b34/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBBatchDAO.java#L58-L61
   
   That it's possible for a thread to come in, see that initialized is set, and continue forward even though the variables haven't been set.
   
   ### Anything else
   
   _No response_
   
   ### Are you willing to submit PR?
   
   - [X] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng closed issue #9359: [Bug] NPE race condition in BanyanDBBatchDAO

Posted by GitBox <gi...@apache.org>.
wu-sheng closed issue #9359: [Bug] NPE race condition in BanyanDBBatchDAO
URL: https://github.com/apache/skywalking/issues/9359


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org