Change in osmo-pcu[master]: log warnings when measurements arrive from the future

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Stefan Sperling gerrit-no-reply at lists.osmocom.org
Thu May 31 09:45:19 UTC 2018


Stefan Sperling has uploaded this change for review. ( https://gerrit.osmocom.org/9395


Change subject: log warnings when measurements arrive from the future
......................................................................

log warnings when measurements arrive from the future

We have observed problems which look like the monotonic clock
going backwards on Jenkins build workers, causing overflow in
a time delta calculation. When this happens, log an error and
don't process the measurement.

Change-Id: I7a3aaba8eba73fad09bebc1f32e832fc25f8eb28
Related: OS#3225
---
M src/gprs_rlcmac_meas.cpp
1 file changed, 25 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/95/9395/1

diff --git a/src/gprs_rlcmac_meas.cpp b/src/gprs_rlcmac_meas.cpp
index ac01f2a..056db20 100644
--- a/src/gprs_rlcmac_meas.cpp
+++ b/src/gprs_rlcmac_meas.cpp
@@ -24,6 +24,7 @@
 
 #include <string.h>
 #include <errno.h>
+#include <inttypes.h>
 
 /*
  * downlink measurement
@@ -78,6 +79,14 @@
 	tbf->meas.rssi_num++;
 
 	osmo_clock_gettime(CLOCK_MONOTONIC, &now_tv);
+	if (now_tv.tv_sec < rssi_tv->tv_sec ||
+	    (now_tv.tv_sec == rssi_tv->tv_sec && now_tv.tv_nsec < rssi_tv->tv_nsec)) {
+		LOGP(DRLCMACMEAS, LOGL_ERROR, "Not processing RSSI measurement received from the future; "
+		     "did the monotonic clock jump backwards? (now=%" PRIu64 ".%" PRIu64 " < %" PRIu64 ".%" PRIu64 ")\n",
+		      (uint64_t)now_tv.tv_sec, (uint64_t)now_tv.tv_nsec,
+		      (uint64_t)rssi_tv->tv_sec, (uint64_t)rssi_tv->tv_nsec);
+		return 0;
+	}
 	elapsed = ((now_tv.tv_sec - rssi_tv->tv_sec) << 7)
 		+ (((now_tv.tv_nsec - rssi_tv->tv_nsec)/1000) << 7) / 1000000;
 	if (elapsed < 128)
@@ -130,6 +139,14 @@
 	tbf->m_bw.dl_loss_lost += lost;
 
 	osmo_clock_gettime(CLOCK_MONOTONIC, &now_tv);
+	if (now_tv.tv_sec < loss_tv->tv_sec ||
+	    (now_tv.tv_sec == loss_tv->tv_sec && now_tv.tv_nsec < loss_tv->tv_nsec)) {
+		LOGP(DRLCMACMEAS, LOGL_ERROR, "Not processing lost frames measurement received from the future; "
+		     "did the monotonic clock jump backwards? (now=%" PRIu64 ".%" PRIu64 " < %" PRIu64 ".%" PRIu64 ")\n",
+		      (uint64_t)now_tv.tv_sec, (uint64_t)now_tv.tv_nsec,
+		      (uint64_t)loss_tv->tv_sec, (uint64_t)loss_tv->tv_nsec);
+		return 0;
+	}
 	elapsed = ((now_tv.tv_sec - loss_tv->tv_sec) << 7)
 		+ (((now_tv.tv_nsec - loss_tv->tv_nsec)/1000) << 7) / 1000000;
 	if (elapsed < 128)
@@ -174,6 +191,14 @@
 	tbf->m_bw.dl_bw_octets += octets;
 
 	osmo_clock_gettime(CLOCK_MONOTONIC, &now_tv);
+	if (now_tv.tv_sec < bw_tv->tv_sec ||
+	    (now_tv.tv_sec == bw_tv->tv_sec && now_tv.tv_nsec < bw_tv->tv_nsec)) {
+		LOGP(DRLCMACMEAS, LOGL_ERROR, "Not processing bandwidth measurement received from the future; "
+		     "did the monotonic clock jump backwards? (now=%" PRIu64 ".%" PRIu64 " < %" PRIu64 ".%" PRIu64 ")\n",
+		      (uint64_t)now_tv.tv_sec, (uint64_t)now_tv.tv_nsec,
+		      (uint64_t)bw_tv->tv_sec, (uint64_t)bw_tv->tv_nsec);
+		return 0;
+	}
 	elapsed = ((now_tv.tv_sec - bw_tv->tv_sec) << 7)
 		+ (((now_tv.tv_nsec - bw_tv->tv_nsec)/1000) << 7) / 1000000;
 	if (elapsed < 128)

-- 
To view, visit https://gerrit.osmocom.org/9395
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7a3aaba8eba73fad09bebc1f32e832fc25f8eb28
Gerrit-Change-Number: 9395
Gerrit-PatchSet: 1
Gerrit-Owner: Stefan Sperling <ssperling at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180531/5a6a0082/attachment.htm>


More information about the gerrit-log mailing list