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