diff --git a/.gitignore b/.gitignore
index 0c6a6f929924c609961306bde62fea19c64911c5..499b104576805ac11189341f6f82937f433af7c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,4 @@ bin
 *.iml
 .idea
 bazel-*
+local.properties
diff --git a/rosjava/src/main/java/org/ros/internal/node/DefaultNode.java b/rosjava/src/main/java/org/ros/internal/node/DefaultNode.java
index 9f1a1bdc1278b79e0216c11ded4adc3417f52c6c..28e7e2d54a56f5545941fedc7fe89a486c8abdee 100644
--- a/rosjava/src/main/java/org/ros/internal/node/DefaultNode.java
+++ b/rosjava/src/main/java/org/ros/internal/node/DefaultNode.java
@@ -416,8 +416,6 @@ public class DefaultNode implements ConnectedNode {
     // NOTE(damonkohler): We don't want to raise potentially spurious
     // exceptions during shutdown that would interrupt the process. This is
     // simply best effort cleanup.
-    slaveServer.shutdown();
-    topicParticipantManager.shutdown();
     for (ServiceServer<?, ?> serviceServer : serviceManager.getServers()) {
       try {
         Response<Integer> response =
@@ -436,8 +434,9 @@ public class DefaultNode implements ConnectedNode {
     for (ServiceClient<?, ?> serviceClient : serviceManager.getClients()) {
       serviceClient.shutdown();
     }
-    registrar.shutdown();
     slaveServer.shutdown();
+    topicParticipantManager.shutdown();
+    registrar.shutdown();
     signalOnShutdownComplete();
   }