Skip to content

chore: stability pr for changes#35911

Merged
sondermanish merged 1 commit intoreleasefrom
chore/git-blockhound
Aug 30, 2024
Merged

chore: stability pr for changes#35911
sondermanish merged 1 commit intoreleasefrom
chore/git-blockhound

Conversation

@sondermanish
Copy link
Contributor

@sondermanish sondermanish commented Aug 27, 2024

Description

  • Changes to put blocking calls on the bounded elastic thread.
  • This Pr has changes to test.
  • commit
  • Status
  • branch
  • delete branch
  • List branch
  • checkout
  • checkout remote
  • merge status
  • merge

Fixes #Issue Number
or
Fixes Issue URL

Automation

/ok-to-test tags="@tag.Git"

🔍 Cypress test results

Tip

🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/10628395436
Commit: af76a97
Cypress dashboard.
Tags: @tag.Git
Spec:


Fri, 30 Aug 2024 07:29:10 UTC

Communication

Should the DevRel and Marketing teams inform users about this change?

  • Yes
  • No

Summary by CodeRabbit

  • New Features

    • Improved performance and responsiveness when saving applications to Git repositories by optimizing the execution flow.
    • Enhanced clarity and control in the application push process to Git, ensuring better maintainability.
  • Bug Fixes

    • Addressed potential threading issues by ensuring operations run on the appropriate scheduler.

@sondermanish sondermanish requested a review from a team as a code owner August 27, 2024 13:56
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 27, 2024

Walkthrough

The changes involve modifications to the pushApplication method in the GitExecutorCEImpl class and the saveArtifactToLocalRepo method in the CommonGitFileUtilsCE class. These adjustments enhance the clarity of asynchronous operations and improve the execution environment by utilizing a reactive scheduler for blocking tasks. The overall structure of the methods remains intact, with no alterations to public entity declarations.

Changes

Files Change Summary
app/server/appsmith-git/src/main/java/com/appsmith/git/service/ce/GitExecutorCEImpl.java
app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/ce/CommonGitFileUtilsCE.java
The pushApplication method has been restructured for better readability and control flow, while the saveArtifactToLocalRepo method now employs a reactive scheduler to handle blocking tasks, ensuring improved responsiveness.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant GitExecutorCEImpl
    participant CommonGitFileUtilsCE
    participant GitRepo

    User->>GitExecutorCEImpl: Request to push application
    GitExecutorCEImpl->>GitRepo: Initiates push operation
    GitRepo-->>GitExecutorCEImpl: Acknowledges push
    GitExecutorCEImpl->>CommonGitFileUtilsCE: Calls saveArtifactToLocalRepo
    CommonGitFileUtilsCE->>GitRepo: Saves application to local repo
    GitRepo-->>CommonGitFileUtilsCE: Confirms save
    CommonGitFileUtilsCE-->>GitExecutorCEImpl: Returns path
    GitExecutorCEImpl-->>User: Confirms application push
Loading

Poem

In the realm of code, a change did unfold,
With threads now aligned, and stories retold.
A push to the Git, with clarity bright,
As artifacts save, in the soft, gentle night.
We dance with the code, in harmony's song,
Embracing the flow, where all bits belong! 🌟


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@sondermanish sondermanish self-assigned this Aug 27, 2024
@github-actions github-actions bot added the skip-changelog Adding this label to a PR prevents it from being listed in the changelog label Aug 27, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 9da8c49 and af76a97.

Files selected for processing (2)
  • app/server/appsmith-git/src/main/java/com/appsmith/git/service/ce/GitExecutorCEImpl.java (2 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/ce/CommonGitFileUtilsCE.java (2 hunks)
Files skipped from review due to trivial changes (1)
  • app/server/appsmith-git/src/main/java/com/appsmith/git/service/ce/GitExecutorCEImpl.java
Additional comments not posted (1)
app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/ce/CommonGitFileUtilsCE.java (1)

Line range hint 37-99: Great job on improving responsiveness!

The addition of Schedulers.boundedElastic() to offload the potentially blocking operation to a separate thread is a good practice in reactive programming. This will help in preventing the main execution flow from being blocked.

The code changes are approved. However, ensure to monitor the impact of this change on the overall application performance.

// this subscribeOn on is required because Mono.using
// is not deferring the execution of push and for that reason it runs on the
// lettuce-nioEventLoop thread instead of boundedElastic
.subscribeOn(scheduler);
Copy link
Contributor

Choose a reason for hiding this comment

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

Should the inner callable be subscribed instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It's the inner callable only.

return fileUtils.saveApplicationToGitRepo(baseRepoSuffix, artifactGitReference, branchName);
return fileUtils
.saveApplicationToGitRepo(baseRepoSuffix, artifactGitReference, branchName)
.subscribeOn(Schedulers.boundedElastic());
Copy link
Contributor

Choose a reason for hiding this comment

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

Should this be published on immediate to return back to the owning thread pool?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Since this flow is followed by other blocking calls in all 5 cases, we are good with not publishing this on.
However, I would keep this point handy in order to test further.

@sondermanish sondermanish enabled auto-merge (squash) August 30, 2024 06:43
@sondermanish sondermanish added the ok-to-test Required label for CI label Aug 30, 2024
@sondermanish sondermanish merged commit 4b89c1c into release Aug 30, 2024
@sondermanish sondermanish deleted the chore/git-blockhound branch August 30, 2024 07:29
Shivam-z pushed a commit to Shivam-z/appsmith that referenced this pull request Sep 26, 2024
## Description
- Changes to put blocking calls on the bounded elastic thread.
- This Pr has changes to test.
- commit
- Status
- branch
- delete branch
- List branch 
- checkout
- checkout remote
- merge status
- merge

Fixes #`Issue Number`  
_or_  
Fixes `Issue URL`

## Automation

/ok-to-test tags="@tag.Git"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]  
> If you modify the content in this section, you are likely to disrupt
the CI result for your PR.

<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Improved performance and responsiveness when saving applications to
Git repositories by optimizing the execution flow.
- Enhanced clarity and control in the application push process to Git,
ensuring better maintainability.

- **Bug Fixes**
- Addressed potential threading issues by ensuring operations run on the
appropriate scheduler.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@coderabbitai coderabbitai bot mentioned this pull request Mar 18, 2025
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Required label for CI skip-changelog Adding this label to a PR prevents it from being listed in the changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants