Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPE observed intermittently in Editor when using HTTP Sink #826

Open
mohanvive opened this issue Jan 9, 2020 · 0 comments
Open

NPE observed intermittently in Editor when using HTTP Sink #826

mohanvive opened this issue Jan 9, 2020 · 0 comments

Comments

@mohanvive
Copy link
Contributor

Description:
Below NPE is observed when using event simulator. Seems like connection retry issue.

osgi>
osgi> [2020-01-09 14:55:01,468] ERROR {io.siddhi.core.stream.StreamJunction} - Error in 'Wait-Retry' after consuming events from Stream 'AbnormalGlucoseReadingStream', null. Hence, dropping event 'StreamEvent{ timestamp=1578561901467, beforeWindowData=null, onAfterWindowData=[1576829362, Alex, John], outputData=[1576829362, Get-1024, Level2, 10348, Alex John, 250.0], type=CURRENT, next=null}' java.lang.NullPointerException
	at io.siddhi.extension.io.http.sink.HttpSink.createClientConnector(HttpSink.java:1065)
	at io.siddhi.extension.io.http.sink.HttpSink.publish(HttpSink.java:597)
	at io.siddhi.core.stream.output.sink.Sink.publish(Sink.java:182)
	at io.siddhi.extension.map.json.sinkmapper.JsonSinkMapper.mapAndSend(JsonSinkMapper.java:209)
	at io.siddhi.core.stream.output.sink.SinkMapper.mapAndSend(SinkMapper.java:180)
	at io.siddhi.core.stream.output.sink.SinkCallback.receive(SinkCallback.java:55)
	at io.siddhi.core.stream.output.StreamCallback.receive(StreamCallback.java:100)
	at io.siddhi.core.stream.StreamJunction.sendEvent(StreamJunction.java:176)
	at io.siddhi.core.stream.StreamJunction$Publisher.send(StreamJunction.java:465)
	at io.siddhi.core.query.output.callback.InsertIntoStreamCallback.send(InsertIntoStreamCallback.java:56)
	at io.siddhi.core.query.output.ratelimit.OutputRateLimiter.sendToCallBacks(OutputRateLimiter.java:104)
	at io.siddhi.core.query.output.ratelimit.PassThroughOutputRateLimiter.process(PassThroughOutputRateLimiter.java:44)
	at io.siddhi.core.query.selector.QuerySelector.process(QuerySelector.java:97)
	at io.siddhi.core.query.processor.filter.FilterProcessor.process(FilterProcessor.java:58)
	at io.siddhi.core.query.input.ProcessStreamReceiver.processAndClear(ProcessStreamReceiver.java:182)
	at io.siddhi.core.query.input.ProcessStreamReceiver.process(ProcessStreamReceiver.java:89)
	at io.siddhi.core.query.input.ProcessStreamReceiver.receive(ProcessStreamReceiver.java:127)
	at io.siddhi.core.stream.StreamJunction.sendEvent(StreamJunction.java:199)
	at io.siddhi.core.stream.StreamJunction$Publisher.send(StreamJunction.java:474)
	at io.siddhi.core.stream.input.InputDistributor.send(InputDistributor.java:34)
	at io.siddhi.core.stream.input.InputEntryValve.send(InputEntryValve.java:45)
	at io.siddhi.core.stream.input.InputHandler.send(InputHandler.java:78)
	at io.siddhi.distribution.editor.core.internal.DebuggerEventStreamService.pushEvent(DebuggerEventStreamService.java:74)
	at io.siddhi.distribution.event.simulator.core.internal.generator.SingleEventGenerator.sendEvent(SingleEventGenerator.java:85)
	at io.siddhi.distribution.event.simulator.core.impl.SingleApiServiceImpl.runSingleSimulation(SingleApiServiceImpl.java:20)
	at io.siddhi.distribution.event.simulator.core.api.SingleApi.runSingleSimulation(SingleApi.java:72)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.wso2.msf4j.internal.router.HttpMethodInfo.invokeResource(HttpMethodInfo.java:187)
	at org.wso2.msf4j.internal.router.HttpMethodInfo.invoke(HttpMethodInfo.java:143)
	at org.wso2.msf4j.internal.MSF4JHttpConnectorListener.dispatchMethod(MSF4JHttpConnectorListener.java:218)
	at org.wso2.msf4j.internal.MSF4JHttpConnectorListener.lambda$onMessage$58(MSF4JHttpConnectorListener.java:129)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

Siddhi App is give below

@App:name("Wait-Retry")

@App:description("Description of the plan")

-- Defines `GlucoseReadingStream` stream which contains events related to Glucose readings.
define stream GlucoseReadingStream (locationRoom string,
    locationBed string, timeStamp string, sensorID long,
    patientFirstName string, patientLastName string,
    sensorValue double);


-- If `HTTP` endpoint is unavailable then threads who bring events via `AbnormalGlucoseReadingStream` wait in `back-off and re-trying` mode.
-- Errors can be gracefully handled by configuring `on.error` parameter.
@sink(type = 'http', on.error='wait',
    publisher.url = "http://localhost:8080/logger",
    method = "POST",
    @map(type = 'json'))

define stream AbnormalGlucoseReadingStream
    (timeStampInLong long, locationRoom string,
    locationBed string, sensorID long,
    patientFullName string, sensorReadingValue double);


@info(name='abnormal-reading-identifier')
-- Identifies the abnomarl Glucose reading if `sensorValue > 220`
from GlucoseReadingStream[sensorValue > 220]
select math:parseLong(timeStamp) as timeStampInLong,
    locationRoom, locationBed, sensorID,

-- Concatenate string attributes `patientFirstName` and `patientLastName`
    str:concat(patientFirstName, " ", patientLastName)
        as patientFullName,

        sensorValue as sensorReadingValue
insert into AbnormalGlucoseReadingStream;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant