Skip to content
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

To fix the issue: show_techsupport & saidump errors during testbed testing by replacing redis-rdb-tool with rdb-cli #1391

Merged
merged 6 commits into from
Oct 9, 2024

Conversation

JunhongMao
Copy link
Contributor

@JunhongMao JunhongMao commented Jun 11, 2024

Why I did it

Fix issue: #1387
The latest redis-rdb-tools-0.1.15 doesn't support Redis 7.0. Redis 7.0 was released in 2020 and adopted by SONiC's latest version. So, this issue turned out.

https://github.com/sripathikrishnan/redis-rdb-tools

I.e., the rdb-tools is far behind the Redis 7.0. The librdb can perfectly fix this issue. Please see quote from https://github.com/redis/librdb.

Motivation behind this project
There is a genuine need by the Redis community for a versatile RDB file parser that can export data, perform data analysis, or merely extract raw data from RDB and RESTORE it against a live Redis server. However, available parsers have shortcomings in some aspects such as lack of long-term support, lagging far behind the latest Redis release, and usually not being optimized for memory, performance, or high-traffic streaming for production environments. Additionally, most of them are not written in C, which limits the reuse of Redis components and the potential to contribute back to Redis repo. To address these issues, it is worthwhile to develop a new parser with a modern architecture, that maybe can also challenge the current integrated RDB parser of Redis and even replace it in the future.

So, the below PRS are to replace rdbtools with librdb's tool rdb-cli.
sonic-net/sonic-buildimage#19268
#1391

The above PRs are based on the below PRs.
#1288
#1298
sonic-net/sonic-buildimage#16466
sonic-net/sonic-utilities#2972

How I did it

To use the Redis-db SAVE option to save the snapshot of DB each time and recover later, instead of looping through each entry in the table and saving it.

(1) Updated sonic-buildimage repo's platform/broadcom/docker-syncd-brcm-dnx/Dockerfile.j2, 
 install rdb-cli into the syncd containter.
(2) Updated sonic-sairedis repo's script file: files/scripts/saidump.sh, replace rdbtools with rdb-cli.
(3) Updated sonic-sairedis repo's saidump/saidump.cpp, to process the rdb-cli's ouput json file.

How to verify it

Method 1:
On T2 setup with more than 96K routes, execute CLI command -- generate_dump
No error should be shown

Method 2:
Go into syncd0 container.
admin@ixre-egl-board30:~$ docker exec -it syncd0 bash
Run below command, get saidump's sha1sum value.
root@ixre-egl-board30:/# saidump | sha1sum
1893097ecaeae72383432a54bfe4b285d05b23e5 -
Run below command, get saidump.sh's sha1sum value.
root@ixre-egl-board30:/# saidump.sh | sha1sum
1893097ecaeae72383432a54bfe4b285d05b23e5 -
The two sha1sum values should be the same and no error should be shown.
Method 3:
To run the testbed show_techsupport test case.

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)

@JunhongMao JunhongMao changed the title To fix the issue: show_techsupport & saidump errors during testbed testing by replacing rdb-tool with rdb-cli To fix the issue: show_techsupport & saidump errors during testbed testing by replacing redis-rdb-tool with rdb-cli Jun 11, 2024
@JunhongMao
Copy link
Contributor Author

@mlok-nokia @kcudnik, please help to review, thanks.

@kcudnik
Copy link
Collaborator

kcudnik commented Jun 11, 2024

Please fix coverage

saidump/main.cpp Outdated Show resolved Hide resolved
saidump/saidump.h Outdated Show resolved Hide resolved
@JunhongMao JunhongMao force-pushed the master branch 3 times, most recently from 033e6a2 to 1b9d9d5 Compare June 13, 2024 02:54
saidump/Makefile.am Outdated Show resolved Hide resolved
@kcudnik
Copy link
Collaborator

kcudnik commented Jun 13, 2024

manyfiles have changes permissions from 644 to 755, please revert

saidump/saidump.cpp Outdated Show resolved Hide resolved
saidump/saidump.cpp Outdated Show resolved Hide resolved
saidump/saidump.h Outdated Show resolved Hide resolved
saidump/saidump.h Outdated Show resolved Hide resolved
saidump/saidump.h Outdated Show resolved Hide resolved
tests/checkwhitespace.sh Outdated Show resolved Hide resolved
@JunhongMao JunhongMao force-pushed the master branch 11 times, most recently from a759514 to d2fdd3f Compare June 17, 2024 21:26
@JunhongMao
Copy link
Contributor Author

JunhongMao commented Sep 16, 2024

Hello, @kcudnik. Please help to review and approve. It's been a long time since this PR was created.

kcudnik
kcudnik previously approved these changes Oct 4, 2024
@JunhongMao
Copy link
Contributor Author

Hello @deepak-singhal0408 , please help to review and approve. Thanks.

1 similar comment
@JunhongMao
Copy link
Contributor Author

Hello @deepak-singhal0408 , please help to review and approve. Thanks.

@@ -10,7 +10,8 @@ save_saidump_by_rdb()
import json
with open('$filepath') as json_file:
data = json.load(json_file)
print(data['INSTANCES']['redis']['hostname'], data['INSTANCES']['redis']['port'], data['INSTANCES']['redis']['unix_socket_path'])")
print(data['INSTANCES']['redis']['hostname'], data['INSTANCES']['redis']['port'], data['INSTANCES']['redis']['unix_socket_path'])
json_file.close()")
Copy link
Contributor

@deepak-singhal0408 deepak-singhal0408 Oct 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: this is redundant as you are using with open..

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed.

@deepak-singhal0408
Copy link
Contributor

overall looks fine to me.. thanks.

@@ -49,22 +31,21 @@ void printUsage()
std::cout << " -g --dumpGraph:" << std::endl;
std::cout << " Dump current graph" << std::endl;
std::cout << " -r --rdb:" << std::endl;
std::cout << " Dump by parsing the RDB JSON file, which is created by rdbtools based on Redis dump.rdb that is generated by Redis SAVE command" << std::endl;
std::cout << " Dump by parsing the RDB JSON file, which is created based on Redis dump.rdb that is generated by Redis SAVE command" << std::endl;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you update the description as we no longer use redis SAVE command.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed.

@abdosi abdosi merged commit 29ec674 into sonic-net:master Oct 9, 2024
17 checks passed
@abdosi
Copy link
Contributor

abdosi commented Oct 9, 2024

@deepak-singhal0408 : please create MSFT ADO

@deepak-singhal0408
Copy link
Contributor

MSFT ADO: 29975607

@JunhongMao
Copy link
Contributor Author

@deepak-singhal0408, this PR may have a conflict to cherry-pick to 202405 branch. If so, please notify me. I will create a PR to cherry-pick it. Thanks!

@bingwang-ms
Copy link
Contributor

Hi @JunhongMao, what's the impact if this change is missing?

@JunhongMao
Copy link
Contributor Author

Hi @JunhongMao, what's the impact if this change is missing?

The issue #1387 exists.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

7 participants