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

Support DocumentDB by replacing certain MongoDB operations #4886

Open
wants to merge 28 commits into
base: master
Choose a base branch
from

Conversation

kwx4957
Copy link
Contributor

@kwx4957 kwx4957 commented Sep 15, 2024

What is changed

ChaosCenter

  • Add pre-commit check for aws documentDB

Auth Server

  • Refactor CreatePaginationStage and add int return values
  • $facet to $group and $project
    • Calculate total and retrieve data by creating an array using $push with $$ROOT, then slice the data with $slice
  • The result struct changed no longer returns an array

GraphQL Server

  • DB schema changed from array to int
  • Export and add common function for CreatePaginationStage
  • $lookup multiple join seperate each stage $lookup and $project etc

5 Types

  • $facet to $count
  • $facet to $group
    • Use $switch to count data based on specific cases in groupbyTotal
  • $facet to $group and $project
    • Calculate total and retrieve data by creating an array using $push with $$ROOT, then slice the data with $slice
  • $facet to $group, $project, and $unwind
  • $bucket to $switch
    • Calculate avg_resiliency_score

Test Code

  • chaos_experiment_run
    • Changed data type from array to integer

AWS documentDB e2e test result

I ran the e2e test on aws documnetdb instead of mongodb, and got the following results

image

The Google Drive link below is videos of the e2e test.
https://drive.google.com/drive/folders/1_Rs8TPVlOg7KKDCRqzlgtePDO9Kp4I0O?usp=drive_link

Run simple Experiment

i ran simple chaosexperiment using k6. this is the result.
image

Related proposal: #4812
Related issue: #4459

Add return int values for paging

Signed-off-by: DongYoung Kim <[email protected]>
$facet to $group and $project
Change the result type. return type has changed

Signed-off-by: DongYoung Kim <[email protected]>
Replace $facet to $group and $project
Change the result type. return type has changed
Extract common pagination feature

Signed-off-by: DongYoung Kim <[email protected]>
Replace $facet to $count
Change the result type. return type has changed

Signed-off-by: DongYoung Kim <[email protected]>
Replace $facet to $group and $project
Change the result type. return type has changed
Extract common pagination feature

Signed-off-by: DongYoung Kim <[email protected]>
Replace $facet to $group and $project
Change the result type. return type has changed
Extract common pagination feature

Signed-off-by: DongYoung Kim <[email protected]>
Signed-off-by: DongYoung Kim <[email protected]>
Replace $facet to $group and $project
Change the result type. return type has changed
Extract common pagination feature

Signed-off-by: DongYoung Kim <[email protected]>
Replace $facet to $group and $project

Signed-off-by: DongYoung Kim <[email protected]>
Replace $facet to $group and $project

Signed-off-by: DongYoung Kim <[email protected]>
Replace $facet to $group, $project and $unwind

Signed-off-by: DongYoung Kim <[email protected]>
Add a condition to check for null pointer error if the res value is no present

Signed-off-by: DongYoung Kim <[email protected]>
@namkyu1999
Copy link
Member

Can you check a backend-checks?

Signed-off-by: DongYoung Kim <[email protected]>
@kwx4957
Copy link
Contributor Author

kwx4957 commented Sep 16, 2024

yes, i will check

@kwx4957
Copy link
Contributor Author

kwx4957 commented Sep 17, 2024

i find a error when get ListExperimentRun, i will fix it

@namkyu1999 namkyu1999 added the need-approvers-review Reminder label to the codeowners/maintainers for stale PRs that are more that 2 weeks old label Nov 15, 2024
@Saranya-jena
Copy link
Contributor

Hi @kwx4957 can you perform a benchmarking test to check how these changes have affected the API latency? You can use a mongo compass to run the mongo pipelines and check the latencie==y.

@Saranya-jena
Copy link
Contributor

Otherwise the changes look good to me! 🚀

@kwx4957
Copy link
Contributor Author

kwx4957 commented Nov 23, 2024

@Saranya-jena Thank you for informing me about the tool I wasn't aware of. yes I will run a benchmarking test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mentorship-kr need-approvers-review Reminder label to the codeowners/maintainers for stale PRs that are more that 2 weeks old
Projects
Status: In Review
Development

Successfully merging this pull request may close these issues.

4 participants