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

inconsistent error reading component data, device CONNECT handling #20

Open
brettdaman opened this issue Sep 15, 2016 · 2 comments
Open

Comments

@brettdaman
Copy link

brettdaman commented Sep 15, 2016

Sometimes I got the Error Executing Method iot.agile.Device.Read: null while executing the call: http://device:8080/api/device/bleB0B448BE7D83/Temperature

If I immediately do the create device post it will fail with a timeout.
The solution is to wait a few minutes, create the device again and than it works again.'

Logs of the start of the problem, first lines are ok (got few hundred interations above)

12:45:31.074 [qtp21942989-66] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:45:31.074 [qtp21942989-66] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:45:40.295 [qtp21942989-70] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:45:40.295 [qtp21942989-70] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:45:41.151 [qtp21942989-68] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:45:41.151 [qtp21942989-68] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:45:41.665 [qtp21942989-70] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:45:41.665 [qtp21942989-70] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:45:41.675 [qtp21942989-69] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:45:41.675 [qtp21942989-69] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:45:42.165 [qtp21942989-81] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:45:42.165 [qtp21942989-81] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:45:42.171 [qtp21942989-82] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:45:42.171 [qtp21942989-82] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:45:42.207 [qtp21942989-68] ERROR i.a.h.exception.AgileExceptionMapper - Error occured
org.freedesktop.dbus.exceptions.DBusExecutionException: Error Executing Method iot.agile.Device.Read: null
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.freedesktop.dbus.Error.getException(Unknown Source)
    at org.freedesktop.dbus.Error.throwException(Unknown Source)
    at org.freedesktop.dbus.RemoteInvocationHandler.executeRemoteMethod(Unknown Source)
    at org.freedesktop.dbus.RemoteInvocationHandler.invoke(Unknown Source)
    at com.sun.proxy.$Proxy55.Read(Unknown Source)
    at iot.agile.http.resource.Device.Read(Device.java:109)
    at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at org.eclipse.jetty.server.Server.handle(Server.java:524)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
    at java.lang.Thread.run(Thread.java:745)
12:45:42.237 [qtp21942989-72] ERROR i.a.h.exception.AgileExceptionMapper - Error occured
org.freedesktop.dbus.exceptions.DBusExecutionException: Error Executing Method iot.agile.Device.Read: null
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.freedesktop.dbus.Error.getException(Unknown Source)
    at org.freedesktop.dbus.Error.throwException(Unknown Source)
    at org.freedesktop.dbus.RemoteInvocationHandler.executeRemoteMethod(Unknown Source)
    at org.freedesktop.dbus.RemoteInvocationHandler.invoke(Unknown Source)
    at com.sun.proxy.$Proxy55.Read(Unknown Source)
    at iot.agile.http.resource.Device.Read(Device.java:109)
    at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at org.eclipse.jetty.server.Server.handle(Server.java:524)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
    at java.lang.Thread.run(Thread.java:745)
12:45:42.678 [qtp21942989-66] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:45:42.678 [qtp21942989-66] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:45:42.678 [qtp21942989-68] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:45:42.678 [qtp21942989-68] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:45:42.730 [qtp21942989-70] ERROR i.a.h.exception.AgileExceptionMapper - Error occured
org.freedesktop.dbus.exceptions.DBusExecutionException: Error Executing Method iot.agile.Device.Read: null
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.freedesktop.dbus.Error.getException(Unknown Source)
    at org.freedesktop.dbus.Error.throwException(Unknown Source)
    at org.freedesktop.dbus.RemoteInvocationHandler.executeRemoteMethod(Unknown Source)
    at org.freedesktop.dbus.RemoteInvocationHandler.invoke(Unknown Source)
    at com.sun.proxy.$Proxy55.Read(Unknown Source)
    at iot.agile.http.resource.Device.Read(Device.java:109)
    at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at org.eclipse.jetty.server.Server.handle(Server.java:524)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
    at java.lang.Thread.run(Thread.java:745)

Logs of the solution
(You will see the first try of creating the device fail, then wait and the second try succeed)

12:45:54.782 [qtp21942989-72] DEBUG i.agile.http.resource.DeviceManager - Create new device B0:B4:48:C0:8F:03 (CC2650 SensorTag) on iot.agile.protocol.BLE
12:45:54.782 [qtp21942989-72] DEBUG i.agile.http.resource.DeviceManager - Create new device B0:B4:48:C0:8F:03 (CC2650 SensorTag) on iot.agile.protocol.BLE
12:45:54.783 [qtp21942989-72] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:45:54.783 [qtp21942989-72] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:46:14.795 [qtp21942989-72] ERROR i.a.h.exception.AgileExceptionMapper - Error occured
org.freedesktop.DBus$Error$NoReply: No reply within specified time
    at org.freedesktop.dbus.RemoteInvocationHandler.executeRemoteMethod(Unknown Source)
    at org.freedesktop.dbus.RemoteInvocationHandler.invoke(Unknown Source)
    at com.sun.proxy.$Proxy54.Create(Unknown Source)
    at iot.agile.http.resource.DeviceManager.Create(DeviceManager.java:71)
    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.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at org.eclipse.jetty.server.Server.handle(Server.java:524)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
    at java.lang.Thread.run(Thread.java:745)
12:47:30.868 [qtp21942989-84] DEBUG i.agile.http.resource.DeviceManager - Create new device B0:B4:48:BE:7D:83 (CC2650 SensorTag) on iot.agile.protocol.BLE
12:47:30.868 [qtp21942989-84] DEBUG i.agile.http.resource.DeviceManager - Create new device B0:B4:48:BE:7D:83 (CC2650 SensorTag) on iot.agile.protocol.BLE
12:47:30.869 [qtp21942989-84] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:47:30.869 [qtp21942989-84] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:47:35.349 [qtp21942989-66] DEBUG i.agile.http.resource.DeviceManager - Create new device B0:B4:48:C0:8F:03 (CC2650 SensorTag) on iot.agile.protocol.BLE
12:47:35.349 [qtp21942989-66] DEBUG i.agile.http.resource.DeviceManager - Create new device B0:B4:48:C0:8F:03 (CC2650 SensorTag) on iot.agile.protocol.BLE
12:47:35.350 [qtp21942989-66] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:47:35.350 [qtp21942989-66] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:47:41.783 [qtp21942989-81] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:47:41.783 [qtp21942989-81] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.DeviceManager:/iot/agile/DeviceManager
12:47:47.358 [qtp21942989-69] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:47:47.359 [qtp21942989-72] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:47:47.358 [qtp21942989-69] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:47:47.359 [qtp21942989-72] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:47:52.474 [qtp21942989-81] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:47:52.474 [qtp21942989-81] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448C08F03
12:47:52.492 [qtp21942989-70] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
12:47:52.492 [qtp21942989-70] DEBUG iot.agile.http.service.DbusClient - Load cached object iot.agile.Device:/iot/agile/Device/bleB0B448BE7D83
@brettdaman
Copy link
Author

A possible quickfix is to try to connect to the device if the read fails because the object is null.
And in the future it would be great if the connection to the devices will be monitored by a service.

@cskiraly
Copy link
Contributor

Who should handle reconnection is a nasty topic. If it is offloaded to the service, then states are:
CONNECTED, DISCONNECTED, and CONNECTING (i.e., the service is trying to connect, but it can't for some reason, e.g. the device is out of reach)
For the methods, instead, you typically need:

  • a non-blocking Connect: from now on the service tries to connect ... and reconnect
  • a non-blocking Disconnect: disconnect and do not try to connect in the future
    However, if these are non-blocking, you also would like to receive status change notifications, right?
    So we either need blocking versions as well, or a way to have device status notifications.
    Opinions?

@cskiraly cskiraly changed the title inconsistent error reading component data inconsistent error reading component data, device CONNECT handling Sep 26, 2016
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

2 participants