Index: /trunk/src/org/openstreetmap/josm/io/MessageNotifier.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 11968)
+++ /trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 11969)
@@ -57,25 +57,31 @@
 
         private int lastUnreadCount;
+        private long lastTimeInMillis;
 
         @Override
         public void run() {
             try {
-                final UserInfo userInfo = new OsmServerUserInfoReader().fetchUserInfo(NullProgressMonitor.INSTANCE,
-                        tr("get number of unread messages"));
-                final int unread = userInfo.getUnreadMessages();
-                if (unread > 0 && unread != lastUnreadCount) {
-                    GuiHelper.runInEDT(() -> {
-                        JPanel panel = new JPanel(new GridBagLayout());
-                        panel.add(new JLabel(trn("You have {0} unread message.", "You have {0} unread messages.", unread, unread)),
-                                GBC.eol());
-                        panel.add(new UrlLabel(Main.getBaseUserUrl() + '/' + userInfo.getDisplayName() + "/inbox",
-                                tr("Click here to see your inbox.")), GBC.eol());
-                        panel.setOpaque(false);
-                        new Notification().setContent(panel)
-                            .setIcon(JOptionPane.INFORMATION_MESSAGE)
-                            .setDuration(Notification.TIME_LONG)
-                            .show();
-                    });
-                    lastUnreadCount = unread;
+                long currentTime = System.currentTimeMillis();
+                // See #14671 - Make sure we don't run the API call many times after system wakeup
+                if (currentTime >= lastTimeInMillis + TimeUnit.MINUTES.toMillis(PROP_INTERVAL.get())) {
+                    lastTimeInMillis = currentTime;
+                    final UserInfo userInfo = new OsmServerUserInfoReader().fetchUserInfo(NullProgressMonitor.INSTANCE,
+                            tr("get number of unread messages"));
+                    final int unread = userInfo.getUnreadMessages();
+                    if (unread > 0 && unread != lastUnreadCount) {
+                        GuiHelper.runInEDT(() -> {
+                            JPanel panel = new JPanel(new GridBagLayout());
+                            panel.add(new JLabel(trn("You have {0} unread message.", "You have {0} unread messages.", unread, unread)),
+                                    GBC.eol());
+                            panel.add(new UrlLabel(Main.getBaseUserUrl() + '/' + userInfo.getDisplayName() + "/inbox",
+                                    tr("Click here to see your inbox.")), GBC.eol());
+                            panel.setOpaque(false);
+                            new Notification().setContent(panel)
+                                .setIcon(JOptionPane.INFORMATION_MESSAGE)
+                                .setDuration(Notification.TIME_LONG)
+                                .show();
+                        });
+                        lastUnreadCount = unread;
+                    }
                 }
             } catch (OsmTransferException e) {
