Skip to content

[Mellanox] do not use system clock to avoid issues caused by system time change #21446

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 21, 2025

Conversation

Junchao-Mellanox
Copy link
Collaborator

Why I did it

Mellanox platform API uses standard python time function time.time() in many places. time.time() gets time from system clock which could be changed by NTP or user. Adjusting system clock will affect the code logical and causes bugs. For example, in platform/mellanox/mlnx-platform-api/sonic_platform/utils.py there is a Timer class, the timer will trigger event with unexpected interval if user/NTP changes the system clock. This PR changes time.time() to time.monotonic to avoid such issue.

Work item tracking
  • Microsoft ADO (number only):

How I did it

Use time.monotonic() instead of time.time .

How to verify it

Manual test.
Unit test.

Which release branch to backport (provide reason below if selected)

  • 201811
  • 201911
  • 202006
  • 202012
  • 202106
  • 202111
  • 202205
  • 202211
  • 202305

Tested branch (Please provide the tested image version)

Description for the changelog

Link to config_db schema for YANG module changes

A picture of a cute animal (not mandatory but encouraged)

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@liat-grozovik liat-grozovik merged commit 876f659 into sonic-net:master Jan 21, 2025
11 checks passed
BYGX-wcr pushed a commit to BYGX-wcr/sonic-buildimage that referenced this pull request Jan 21, 2025
…ime change (sonic-net#21446)

- Why I did it
Mellanox platform API uses standard python time function time.time() in many places. time.time() gets time from system clock which could be changed by NTP or user. Adjusting system clock will affect the code logical and causes bugs. For example, in platform/mellanox/mlnx-platform-api/sonic_platform/utils.py there is a Timer class, the timer will trigger event with unexpected interval if user/NTP changes the system clock. This PR changes time.time() to time.monotonic to avoid such issue.

- How I did it
Use time.monotonic() instead of time.time .

- How to verify it
Manual test.
Unit test.
@mssonicbld
Copy link
Collaborator

Cherry-pick PR to 202411: #21503

stepanblyschak pushed a commit to stepanblyschak/sonic-buildimage that referenced this pull request Jan 27, 2025
dgsudharsan pushed a commit to dgsudharsan/sonic-buildimage that referenced this pull request Jan 29, 2025
dgsudharsan pushed a commit to dgsudharsan/sonic-buildimage that referenced this pull request Jan 29, 2025
prabhataravind pushed a commit to prabhataravind/sonic-buildimage that referenced this pull request Mar 5, 2025
…ime change (sonic-net#21446)

- Why I did it
Mellanox platform API uses standard python time function time.time() in many places. time.time() gets time from system clock which could be changed by NTP or user. Adjusting system clock will affect the code logical and causes bugs. For example, in platform/mellanox/mlnx-platform-api/sonic_platform/utils.py there is a Timer class, the timer will trigger event with unexpected interval if user/NTP changes the system clock. This PR changes time.time() to time.monotonic to avoid such issue.

- How I did it
Use time.monotonic() instead of time.time .

- How to verify it
Manual test.
Unit test.
yanjundeng pushed a commit to yanjundeng/sonic-buildimage that referenced this pull request Apr 23, 2025
…ime change (sonic-net#21446)

- Why I did it
Mellanox platform API uses standard python time function time.time() in many places. time.time() gets time from system clock which could be changed by NTP or user. Adjusting system clock will affect the code logical and causes bugs. For example, in platform/mellanox/mlnx-platform-api/sonic_platform/utils.py there is a Timer class, the timer will trigger event with unexpected interval if user/NTP changes the system clock. This PR changes time.time() to time.monotonic to avoid such issue.

- How I did it
Use time.monotonic() instead of time.time .

- How to verify it
Manual test.
Unit test.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants