stat: fix duplicate timestamps in iops/latency/bandwidth logs #982
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
add_log_sample() checks if the current time is greater than the last log time
plus the sampling window duration ("log_avg_msec"). If so it records the log
entry and sets the "last log time" to the current "last log time" plus
log_avg_msec. This is incorrect in cases where more than log_avg_msec has
elapsed between calls to add_log_sample(). The effect is that the very next
time add_log_sample() is called a new log entry will be recorded, possibly with
the same timestamp as the previous log entry.
This fix sets the last log time to the current time, rounded down to the nearest
multiple of log_avg_msec (e.g. if current time is 203 and log_avg_msec is 50 the
last log time will be set to 200, so the next log entry should be recorded at
time=250). This prevents duplicate log entries.
Fixes #971