/** {@inheritDoc} */ @Override public void safeRun() throws InterruptedException { if (!notifyEnabled.get()) return; verChecker.checkForNewVersion(log, first); // Just wait for 10 secs. Thread.sleep(PERIODIC_VER_CHECK_CONN_TIMEOUT); // Just wait another 60 secs in order to get // version info even on slow connection. for (int i = 0; i < 60 && verChecker.latestVersion() == null; i++) Thread.sleep(1000); // Report status if one is available. // No-op if status is NOT available. verChecker.reportStatus(log); if (first && verChecker.error() == null) { first = false; verChecker.reportOnlyNew(true); } } }
/** {@inheritDoc} */ @Override public void stop(boolean cancel) throws IgniteCheckedException { // Cancel update notification timer. if (updateNtfTimer != null) updateNtfTimer.cancel(); if (verChecker != null) verChecker.stop(); // Io manager can be null, if invoke stop before create io manager, for example // exception on start. if (ctx.io() != null) ctx.io().removeMessageListener(TOPIC_INTERNAL_DIAGNOSTIC); }
/** * Logs out latest version notification if such was received and available. * * @param log Logger. */ void reportStatus(IgniteLogger log) { assert log != null; log = log.getLogger(getClass()); String latestVer = this.latestVer; String downloadUrl = this.downloadUrl; downloadUrl = downloadUrl != null ? downloadUrl : IgniteKernal.SITE; if (latestVer != null) { int cmp = VER_COMPARATOR.compare(latestVer, ver); if (cmp == 0) { if (!reportOnlyNew) throttle(log, false, "Your version is up to date."); } else if (cmp > 0) throttle(log, true, "New version is available at " + downloadUrl + ": " + latestVer); } else if (!reportOnlyNew) throttle(log, false, "Update status is not available."); }
.thenReturn("meta=meta" + "\n" + "version=" + nodeVer + "\n" + "downloadUrl=url"); GridUpdateNotifier ntf = new GridUpdateNotifier(null, nodeVer, false, updatesCheckerMock); ntf.checkForNewVersion(log, true); String ver = ntf.latestVersion(); Thread.sleep(100); ver = ntf.latestVersion(); (nodeMaintenance == 0 && lastMaintenance == 0) || (nodeMaintenance > 0 && lastMaintenance > 0)); ntf.reportStatus(log);
/** * @return Latest version string. */ public String latestVersion() { return verChecker != null ? verChecker.latestVersion() : null; }
/** {@inheritDoc} */ @Override public void onKernalStart(boolean active) throws IgniteCheckedException { if (notifyEnabled.get()) { try { verChecker = new GridUpdateNotifier(ctx.igniteInstanceName(), VER_STR, false); updateNtfTimer = new Timer("ignite-update-notifier-timer", true); // Setup periodic version check. updateNtfTimer.scheduleAtFixedRate( new UpdateNotifierTimerTask((IgniteKernal)ctx.grid(), verChecker, notifyEnabled), 0, PERIODIC_VER_CHECK_DELAY); } catch (IgniteCheckedException e) { if (log.isDebugEnabled()) log.debug("Failed to create GridUpdateNotifier: " + e); } } if (sndMetrics) { metricsProvider = ctx.discovery().createMetricsProvider(); long updateFreq = ctx.config().getMetricsUpdateFrequency(); ctx.timeout().addTimeoutObject(new MetricsUpdateTimeoutObject(updateFreq)); } }
/** * @return Latest version string. */ public String latestVersion() { return verChecker != null ? verChecker.latestVersion() : null; }
/** {@inheritDoc} */ @Override public void onKernalStart(boolean active) throws IgniteCheckedException { if (notifyEnabled.get()) { try { verChecker = new GridUpdateNotifier(ctx.igniteInstanceName(), VER_STR, false); updateNtfTimer = new Timer("ignite-update-notifier-timer", true); // Setup periodic version check. updateNtfTimer.scheduleAtFixedRate( new UpdateNotifierTimerTask((IgniteKernal)ctx.grid(), verChecker, notifyEnabled), 0, PERIODIC_VER_CHECK_DELAY); } catch (IgniteCheckedException e) { if (log.isDebugEnabled()) log.debug("Failed to create GridUpdateNotifier: " + e); } } if (sndMetrics) { metricsProvider = ctx.discovery().createMetricsProvider(); long updateFreq = ctx.config().getMetricsUpdateFrequency(); ctx.timeout().addTimeoutObject(new MetricsUpdateTimeoutObject(updateFreq)); } }
/** {@inheritDoc} */ @Override public void safeRun() throws InterruptedException { if (!notifyEnabled.get()) return; verChecker.checkForNewVersion(log, first); // Just wait for 10 secs. Thread.sleep(PERIODIC_VER_CHECK_CONN_TIMEOUT); // Just wait another 60 secs in order to get // version info even on slow connection. for (int i = 0; i < 60 && verChecker.latestVersion() == null; i++) Thread.sleep(1000); // Report status if one is available. // No-op if status is NOT available. verChecker.reportStatus(log); if (first && verChecker.error() == null) { first = false; verChecker.reportOnlyNew(true); } } }
/** {@inheritDoc} */ @Override public void stop(boolean cancel) throws IgniteCheckedException { // Cancel update notification timer. if (updateNtfTimer != null) updateNtfTimer.cancel(); if (verChecker != null) verChecker.stop(); // Io manager can be null, if invoke stop before create io manager, for example // exception on start. if (ctx.io() != null) ctx.io().removeMessageListener(TOPIC_INTERNAL_DIAGNOSTIC); }
/** * Logs out latest version notification if such was received and available. * * @param log Logger. */ void reportStatus(IgniteLogger log) { assert log != null; log = log.getLogger(getClass()); String latestVer = this.latestVer; String downloadUrl = this.downloadUrl; downloadUrl = downloadUrl != null ? downloadUrl : IgniteKernal.SITE; if (latestVer != null) { int cmp = VER_COMPARATOR.compare(latestVer, ver); if (cmp == 0) { if (!reportOnlyNew) throttle(log, false, "Your version is up to date."); } else if (cmp > 0) throttle(log, true, "New version is available at " + downloadUrl + ": " + latestVer); } else if (!reportOnlyNew) throttle(log, false, "Update status is not available."); }