Skip to content
This repository was archived by the owner on Aug 11, 2023. It is now read-only.

Commit aa38119

Browse files
authored
Merge pull request #238 from stratomda/fix/DefaultPublisherLeak
This fixes #237. Added fix to remove Publishers a…
2 parents a0b2468 + aa09395 commit aa38119

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

rosjava/src/main/java/org/ros/internal/node/DefaultNode.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import org.ros.internal.node.service.ServiceFactory;
4040
import org.ros.internal.node.service.ServiceIdentifier;
4141
import org.ros.internal.node.service.ServiceManager;
42+
import org.ros.internal.node.topic.DefaultPublisher;
43+
import org.ros.internal.node.topic.DefaultSubscriber;
4244
import org.ros.internal.node.topic.PublisherFactory;
4345
import org.ros.internal.node.topic.SubscriberFactory;
4446
import org.ros.internal.node.topic.TopicDeclaration;
@@ -403,12 +405,7 @@ public void shutdown() {
403405
// NOTE(damonkohler): We don't want to raise potentially spurious
404406
// exceptions during shutdown that would interrupt the process. This is
405407
// simply best effort cleanup.
406-
for (Publisher<?> publisher : topicParticipantManager.getPublishers()) {
407-
publisher.shutdown();
408-
}
409-
for (Subscriber<?> subscriber : topicParticipantManager.getSubscribers()) {
410-
subscriber.shutdown();
411-
}
408+
topicParticipantManager.shutdown();
412409
for (ServiceServer<?, ?> serviceServer : serviceManager.getServers()) {
413410
try {
414411
Response<Integer> response =

rosjava/src/main/java/org/ros/internal/node/topic/DefaultPublisher.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ public boolean getLatchMode() {
109109
public void shutdown(long timeout, TimeUnit unit) {
110110
signalOnShutdown(timeout, unit);
111111
outgoingMessageQueue.shutdown();
112+
listeners.shutdown();
112113
}
113114

114115
@Override

rosjava/src/main/java/org/ros/internal/node/topic/TopicParticipantManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,19 @@ public void removePublisherConnection(DefaultPublisher<?> publisher,
136136
publisherConnections.remove(publisher, subscriberIdentifier);
137137
}
138138

139+
public void shutdown(){
140+
for(DefaultPublisher<?> publisher : publishers.values()){
141+
publisher.shutdown();
142+
removePublisher(publisher);
143+
}
144+
subscriberConnections.clear();
145+
for(DefaultSubscriber<?> subscriber : subscribers.values()){
146+
subscriber.shutdown();
147+
removeSubscriber(subscriber);
148+
}
149+
publisherConnections.clear();
150+
}
151+
139152
public Collection<DefaultSubscriber<?>> getSubscribers() {
140153
return ImmutableList.copyOf(subscribers.values());
141154
}

0 commit comments

Comments
 (0)