Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java	(revision 17331)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java	(revision 17332)
@@ -124,8 +124,9 @@
         // multiple error object? prepare a HTML list
         //
-        if (!errors.isEmpty() && !GraphicsEnvironment.isHeadless()) {
+        final Collection<String> items = task.getErrorMessages();
+        if (!items.isEmpty() && !GraphicsEnvironment.isHeadless()) {
             SwingUtilities.invokeLater(() -> JOptionPane.showMessageDialog(
                     MainApplication.getMainFrame(),
-                    "<html>"+Utils.joinAsHtmlUnorderedList(task.getErrorMessages())+"</html>",
+                    "<html>"+Utils.joinAsHtmlUnorderedList(items)+"</html>",
                     tr("Errors during download"),
                     JOptionPane.ERROR_MESSAGE));
Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 17331)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 17332)
@@ -765,9 +765,8 @@
         OsmPrimitive result = getPrimitiveById(primitiveId);
         if (result == null && primitiveId != null) {
-            Logging.warn(tr(
+            Logging.error(new IllegalStateException(tr(
                     "JOSM expected to find primitive [{0} {1}] in dataset but it is not there. Please report this "
                             + "at {2}. This is not a critical error, it should be safe to continue in your work.",
-                    primitiveId.getType(), Long.toString(primitiveId.getUniqueId()), Config.getUrls().getJOSMWebsite()));
-            Logging.error(new Exception());
+                    primitiveId.getType(), Long.toString(primitiveId.getUniqueId()), Config.getUrls().getJOSMWebsite())));
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 17331)
+++ trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 17332)
@@ -234,5 +234,7 @@
         }
         List<PrimitiveId> downloaded = new ArrayList<>(ids);
-        downloaded.removeAll(missingPrimitives);
+        if (missingPrimitives != null) {
+            downloaded.removeAll(missingPrimitives);
+        }
         return downloaded;
     }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 17331)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 17332)
@@ -171,5 +171,5 @@
 
         gc.anchor = GridBagConstraints.NORTHWEST;
-        gc.fill = GridBagConstraints.HORIZONTAL;
+        gc.fill = HORIZONTAL;
         gc.weightx = 0.0;
         gc.insets = new Insets(0, 0, 0, 3);
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 17331)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 17332)
@@ -6,4 +6,7 @@
 import java.util.LinkedList;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 import java.util.stream.Collectors;
 
@@ -67,5 +70,9 @@
             final DownloadPrimitivesWithReferrersTask task = new DownloadPrimitivesWithReferrersTask(
                     newLayer, ps, referrers, relationMembers, args.get("layer_name"), null);
-            MainApplication.worker.submit(task);
+            try {
+                MainApplication.worker.submit(task).get(OSM_DOWNLOAD_TIMEOUT.get(), TimeUnit.SECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                Logging.error(e);
+            }
             MainApplication.worker.submit(() -> {
                 final List<PrimitiveId> downloaded = task.getDownloadedId();
