Robotics Service Bus: Issueshttps://code.cor-lab.de/https://code.cor-lab.de/favicon.ico?14019720732016-06-22T12:08:57ZOpen Source Collaboration Platform
Redmine Bug #2580 (Resolved): Race condition in LocalMethod: handler called before activation is finishedhttps://code.cor-lab.de/issues/25802016-06-22T12:08:57ZM. Pohlingmpohling@cit-ec.uni-bielefeld.de
<p>Sometimes (1 of 20 test-runs) we get this internal rsb exception.<br /><pre>
Exception in thread &quot;Thread-6751&quot; java.lang.IllegalStateException: send(Event) cannot be called in state StateInactive
19 at rsb.Informer$State.send(Informer.java:89)
20 at rsb.Informer.publish(Informer.java:306)
21 at rsb.patterns.LocalMethod.internalNotify(LocalMethod.java:128)
22 at rsb.eventprocessing.SingleThreadEventReceivingStrategy$DispatchThread.run(SingleThreadEventReceivingStrategy.java:98)
</pre></p>
<p>The informer seems to be not initialized but the internalNotify method does not check the isActive state.<br />After this exception occurs rsb events get lost. Seems that any internal handler thread is killed afterwards.</p> Enhancement #2545 (Resolved): Avoid double converter registration warning.https://code.cor-lab.de/issues/25452016-05-10T12:48:26ZM. Pohlingmpohling@cit-ec.uni-bielefeld.de
<p>Please remove this annoying message during converter registration:</p>
<pre>WARNING: Converter with signature ConverterSignature [schema=.rct.FrameTransform, datatype=class rct.Transform] already registered in DefaultConverterRepository. Existing entry will be overwritten!</pre>
<p>Because there is no method to check if a converter was already registered by other components within the same vm there is no way to avoid this message without centralized converter loading.</p> Bug #2544 (Resolved): RST Converter map not thread safehttps://code.cor-lab.de/issues/25442016-05-10T12:42:32ZM. Pohlingmpohling@cit-ec.uni-bielefeld.de
<p>During system start one of my local servers could not be activated because the internal informer crashed because of a concurrent modification exception. The converter map seems to be not thread safe.</p>
<p>Exception:<br /><pre>
Caused by: java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429)
at java.util.HashMap$KeyIterator.next(HashMap.java:1453)
at rsb.converter.DefaultConverterRepository.getConvertersForSerialization(DefaultConverterRepository.java:70)
at rsb.Informer.<init>(Informer.java:243)
at rsb.Factory.createInformer(Factory.java:368)
at rsb.patterns.LocalMethod.<init>(LocalMethod.java:89)
at rsb.patterns.LocalServer.addMethod(LocalServer.java:82)
</pre></p> Bug #2539 (Resolved): toString cannot handle empty events without idhttps://code.cor-lab.de/issues/25392016-04-28T11:46:13ZJ. Wienkejwienke@techfak.uni-bielefeld.de
<p>In case the id is still missing in the event instance, the <code>toString</code> method throws an exception.</p> Bug #2523 (Resolved): Copying a participantConfig results in odd behaviour in javahttps://code.cor-lab.de/issues/25232016-03-16T15:47:49ZT. Huxohlthuxohl@techfak.uni-bielefeld.de
<p>We tried to use in process communication and therefore disabled all other transports in the participantConfig.<br />This works as long as the participantConfig is not copied. After copying it seems like the informer tries to establish a spread connection.<br />The following code example with the resulting exception demonstrates this.</p>
<p>Code:<br /><pre>
ParticipantConfig config = Factory.getInstance().getDefaultParticipantConfig();
config = config.copy();
for (TransportConfig transport : config.getEnabledTransports()) {
transport.setEnabled(false);
}
config.getOrCreateTransport("inprocess").setEnabled(true);
Informer<Object> informer = Factory.getInstance().createInformer("/test", config);
informer.activate();
informer.send("TestString");
</pre></p>
<p>Exception:<br /><pre>
Mar 16, 2016 4:33:10 PM rsb.transport.spread.SpreadWrapperImpl makeConnection
WARNING: reoccuring SpreadException during connect to daemon
spread.SpreadException: Socket(): java.net.ConnectException: Connection refused
at spread.SpreadConnection.connect(SpreadConnection.java:876)
at rsb.transport.spread.SpreadWrapperImpl.makeConnection(SpreadWrapperImpl.java:146)
at rsb.transport.spread.SpreadWrapperImpl.activate(SpreadWrapperImpl.java:261)
at rsb.transport.spread.SpreadReceiver$StateInactive.activate(SpreadReceiver.java:220)
at rsb.transport.spread.SpreadReceiver.activate(SpreadReceiver.java:342)
at rsb.transport.spread.SpreadInPushConnector.activate(SpreadInPushConnector.java:77)
at rsb.eventprocessing.RouteConfiguratorUtility.activate(RouteConfiguratorUtility.java:87)
at rsb.eventprocessing.DefaultPushInRouteConfigurator.activate(DefaultPushInRouteConfigurator.java:64)
at rsb.Listener$ListenerStateInactive.activate(Listener.java:118)
at rsb.Listener.activate(Listener.java:168)
at rsb.introspection.ProtocolHandler.activate(ProtocolHandler.java:387)
at rsb.introspection.IntrospectionParticipantObserver.created(IntrospectionParticipantObserver.java:89)
at rsb.Factory$ParticipantObserverManager.notifyParticipantCreated(Factory.java:104)
at rsb.Participant.activate(Participant.java:85)
at rsb.Informer.access$401(Informer.java:52)
at rsb.Informer$InformerStateInactive.activate(Informer.java:100)
at rsb.Informer.activate(Informer.java:217)
at org.dc.jul.extension.rsb.com.RSBCommunicationServiceTest.testInProcessCommunication(RSBCommunicationServiceTest.java:168)
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:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:45)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
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:497)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
</pre></p> Bug #2487 (Resolved): [rsb-cpp] No error message when desired plugins are not installedhttps://code.cor-lab.de/issues/24872016-02-12T15:06:05ZC. Emmerichcemmeric@cor-lab.de
<p>I just figured out that, if the rsb-config wants to load plugins which are not installed, there is no warning or error message from the rsb system. Is this desired? Could you please change that?</p> Tasks #2435 (Rejected): Wait for confirmation when joining Spread groups [C++]https://code.cor-lab.de/issues/24352015-11-16T12:29:08ZJ. Wienkejwienke@techfak.uni-bielefeld.deTasks #2434 (Resolved): Wait for confirmation when joining Spread groups [Java]https://code.cor-lab.de/issues/24342015-11-16T12:28:20ZJ. Wienkejwienke@techfak.uni-bielefeld.deTasks #2432 (Resolved): Add license information to manualhttps://code.cor-lab.de/issues/24322015-11-13T11:09:53ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.de
<ul>
<li>Decide on license</li>
<li>Add license to footer text</li>
</ul> Tasks #2431 (Resolved): Add license information to manualhttps://code.cor-lab.de/issues/24312015-11-13T11:09:39ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.de
<ul>
<li>Decide on license</li>
<li>Add license to footer text</li>
</ul> Enhancement #2403 (Resolved): Remove implementation-dependant printed representation of objects f...https://code.cor-lab.de/issues/24032015-09-30T08:37:00ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.deFeature #2387 (Resolved): Add a bridge command to toolshttps://code.cor-lab.de/issues/23872015-09-12T22:17:15ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.deFeature #2373 (Resolved): Implement a rsbag introspect command for introspecting systems describe...https://code.cor-lab.de/issues/23732015-08-29T16:36:51ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.de
<p><code>rsbag introspect LOGFILE</code> should process introspection events stored in the log file and build up the usual introspection data structures based on the processed events. After that, a report should be generated using one of the existing introspection formatting styles (textual tree, JSON, graph, etc.).</p>
Differences from online introspection:
<ul>
<li>Optionally (should be the default, though) ignore <code>Bye</code> events to accumulate all entities, not just the "end state" of the system</li>
<li>Ignore latency and clock-offset stuff</li>
</ul>
Future work
<ul>
<li>Allow specifying a point in time or a temporal range to summarize</li>
</ul> Enhancement #2371 (Resolved): Introspection receiver should only extend, never reduce informationhttps://code.cor-lab.de/issues/23712015-08-28T11:24:03ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.de
<p>Currently the introspection receiver uses the most recently received value in all cases. For fields like <code>hardware-version</code> and <code>software-version</code> in <code>host-info</code>, this can lead to useful information being deleted when one process sends an introspection event containing the information before a different process send an introspection event lacking the information.</p> Feature #2370 (Resolved): rsbag record should perform an introspection survey at the start of eac...https://code.cor-lab.de/issues/23702015-08-28T08:09:54ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.de
<ul>
<li>Determine transports for introspection survey:
<ol>
<li>Map requested recording URIs to transports</li>
<li>Deduplicate list of transports</li>
<li>Send survey over these transports, ignoring global transport configuration (using <code>introspection-receiver</code>?)</li>
</ol>
</li>
<li>Commandline option for disabling this behavior</li>
<li>Maybe later: restrict recorded introspection information to recorded <em>scopes</em>, not just transports</li>
</ul>