Robotics Service Bus: Issueshttps://code.cor-lab.de/https://code.cor-lab.de/favicon.ico?14019720732016-05-10T12:48:26ZOpen Source Collaboration Platform
Redmine 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 #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> Tasks #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> Feature #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> Feature #2347 (Resolved): Add isopen() and isrecording() methods to remote interfacehttps://code.cor-lab.de/issues/23472015-07-21T14:01:05ZP. Holthauspholthau@cit-ec.uni-bielefeld.de
<p>Currently, rsbag has the following remotely accessible methods (when started with the -c flag):<br /><pre>
void:start()
void:stop()
void:open(string)
void:close()
void:terminate()
</pre></p>
<p>In order to determine, whether a file is currently opened or written to, please add the following methods:<br /><pre>
# return the currently open filename, or null if nothing is open
string:isopen()
</pre></p>
<pre>
# return if the logger has been started already
bool:isstarted()
</pre> Feature #2311 (Rejected): Allow negative scope filtering in the loggerhttps://code.cor-lab.de/issues/23112015-06-02T12:58:16ZN. Kösternkoester@techfak.uni-bielefeld.de
<p>According to the logger documentation, it is only possible to positively filter scopes, e.g.:</p>
<pre>
tools0.12 logger --on-error=continue --filter 'scope "/some_important_scope/"' --style monitor/timeline
</pre>
<p>gives you all scopes that match the scope " <strong>/some_important_scope/</strong> "</p>
<p>However, it seems that it is not possible to negate this filter in any way. Something I'd expect possible is (or however the correct syntax would be ;)):</p>
<pre>
tools0.12 logger --on-error=continue --filter 'scope :scope "/some_unimportant_scope/" :negate' --style monitor/timeline
</pre>
<p>which would <strong>filter out</strong> the named scope (and possibly all its subscopes...).</p> Bug #2250 (Resolved): AssertionErrorhttps://code.cor-lab.de/issues/22502015-05-06T02:58:24ZM. Pohlingmpohling@cit-ec.uni-bielefeld.de
<p>The following assertion error has occurred. May you want to add some more Exception handling to stabilize rsb.<br />The error was not reproduceable.</p>
<pre>
java.lang.AssertionError
at rsb.eventprocessing.SingleThreadEventReceivingStrategy.handle(SingleThreadEventReceivingStrategy.java:119)
at rsb.transport.socket.SocketInPushConnector.handle(SocketInPushConnector.java:152)
at rsb.transport.socket.BusBase.handleLocally(BusBase.java:349)
at rsb.transport.socket.BusBase.handleOutgoing(BusBase.java:408)
at rsb.transport.socket.RefCountingBus.handleOutgoing(RefCountingBus.java:116)
at rsb.transport.socket.SocketOutConnector.push(SocketOutConnector.java:116)
at rsb.eventprocessing.DefaultOutRouteConfigurator.publishSync(DefaultOutRouteConfigurator.java:89)
at rsb.Informer$InformerStateActive.send(Informer.java:157)
at rsb.Informer.send(Informer.java:295)
at de.citec.jul.rsb.com.RSBInformerPool.send(RSBInformerPool.java:181)
at de.citec.jul.rsb.com.RSBDistributedInformer.send(RSBDistributedInformer.java:117)
at de.citec.jul.rsb.com.RSBCommunicationService.notifyChange(RSBCommunicationService.java:191)
at de.citec.jul.rsb.com.RSBCommunicationService.requestStatus(RSBCommunicationService.java:235)
at de.citec.jul.rsb.com.RSBCommunicationService$1.internalInvoke(RSBCommunicationService.java:125)
at rsb.patterns.LocalMethod.internalNotify(LocalMethod.java:99)
at rsb.eventprocessing.SingleThreadEventReceivingStrategy$DispatchThread.run(SingleThreadEventReceivingStrategy.java:98)
at rsb.patterns.RemoteMethod.internalNotify(RemoteMethod.java:210)
at rsb.eventprocessing.SingleThreadEventReceivingStrategy$DispatchThread.run(SingleThreadEventReceivingStrategy.java:98)
</pre> Bug #1937 (Resolved): Connection refused issueshttps://code.cor-lab.de/issues/19372014-08-13T16:03:25ZJ. Wienkejwienke@techfak.uni-bielefeld.de
<p>It seems the waiting time for the bag binary is too low when using the python API. I constantly receive connect refused errors.</p>
<p>I think a good solution for making this reliable is to let the binary output a ready-message to the stdout one the RSB communication is available. The python library can wait for this message before establishing the connection.</p> Tasks #1030 (Resolved): Expose connector "remoteness" in transport package [Common Lisp]https://code.cor-lab.de/issues/10302012-06-25T12:59:22ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.de
<p>Client code should be able to determine whether a transport implements inprocess or interprocess communication.</p>
<p>The client interface should consist of e.g. <br /><code>bool rsb.transport:is-remote(transport)</code></p> Tasks #1027 (Resolved): Expose connector "remoteness" in transport package [C++]https://code.cor-lab.de/issues/10272012-06-25T12:56:55ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.de
<p>Client code should be able to determine whether a transport implements inprocess or interprocess communication.</p>
<p>The client interface should consist of e.g. <br /><code>bool rsb::transport::Transport::isRemote()</code></p> Enhancement #1026 (Resolved): Add transport class [Common Lisp]https://code.cor-lab.de/issues/10262012-06-25T12:48:57ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.de
The new <code>Transport</code> class would represent properties of transport as a whole (e.g. Spread, socket, inprocess),
<ul>
<li>Instances should aggregate the respective factory objects (in-push, in-pull, out, etc.)</li>
<li>Some Connector properties such as schema list could be moved into the new <code>Transport</code> class</li>
</ul> Bug #852 (Closed): Heap-Exhausted error when reading corrupt TIDELog fileshttps://code.cor-lab.de/issues/8522012-02-03T18:42:41ZJ. Moringenjmoringe@cor-lab.uni-bielefeld.de
<p>The purpose of this issue is documenting the current situation. There is no immediate fix except improving error messages.</p>
<p>When reading corrupt TIDELog files, several kinds of seemingly unrelated errors can occur. This happens when an incorrect size value is read from a file and used in an allocation.</p>
<p>All RSBag tools which read files are affected (at the time of writing <code>bag-cat</code>, <code>bag-play</code>, <code>bag-merge</code>).</p>
<p>On 32-bit and 64-bit platforms, the problem can look like this:<br /><pre>
Heap exhausted during allocation: 815529984 bytes available, 1818326592 requested.
Gen StaPg UbSta LaSta LUbSt Boxed Unboxed LB LUB !move Alloc Waste Trig WP GCs Mem-age
0: 3579 0 5239 0 25 0 912 0 0 30521264 182352 53687091 0 0 0.0000
1: 0 0 0 0 0 0 0 0 0 0 0 53687091 0 0 0.0000
2: 4217 4218 0 0 305 29 0 338 109 21846960 173136 2000000 268 0 0.0000
3: 0 0 0 0 0 0 0 0 0 0 0 2000000 0 0 0.0000
4: 0 0 0 0 0 0 0 0 0 0 0 2000000 0 0 0.0000
5: 0 0 0 0 0 0 0 0 0 0 0 2000000 0 0 0.0000
6: 0 0 0 0 2686 789 0 0 0 113868800 0 2000000 2311 0 0.0000
Total bytes allocated = 166237024
Dynamic-space-size bytes = 1073741824
GC control variables:
*GC-INHIBIT* = false
*GC-PENDING* = false
*STOP-FOR-GC-PENDING* = false
Heap exhausted (no more space for allocation).
There are still 815529984 bytes available; the request was for 1818326592 bytes.
PROCEED WITH CAUTION.
</pre></p>
<p>On 32-bit platforms (and very unlikely on 64-bit platforms) the problem can also look like this:<br /><pre>
The value 1818326576 is not of type (UNSIGNED-BYTE 29).
</pre></p> Feature #833 (Rejected): Highlight active (sub-)scopes in RSB Scope Monitorhttps://code.cor-lab.de/issues/8332012-01-31T20:09:20ZAnonymous
<p>Right now all scopes that passed at least one event during lifetime of the logger are displayed. It could be useful to highlight which scopes passed events within last logger update cycle (not including their events on the sub-scopes).</p>