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

chore: Add execution time for git status API #25041

Merged
merged 1 commit into from
Jul 4, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
chore: Add execution time for git status API
  • Loading branch information
AnaghHegde committed Jul 3, 2023
commit 65846e6472ecdd9a593a84a9ffc93faba34b13fc
Original file line number Diff line number Diff line change
Expand Up @@ -1555,19 +1555,19 @@ private Mono<GitStatusDTO> getStatus(String defaultApplicationId, String branchN
2. Fetch the current status from local repo
*/

Mono<GitStatusDTO> statusMono = getGitApplicationMetadata(defaultApplicationId)
Mono<GitStatusDTO> statusMono = executionTimeLogging.measureTask("getGitApplicationMetadata", getGitApplicationMetadata(defaultApplicationId))
.flatMap(gitApplicationMetadata -> {

Mono<Tuple2<Application, ApplicationJson>> applicationJsonTuple = applicationService.findByBranchNameAndDefaultApplicationId(finalBranchName, defaultApplicationId, applicationPermission.getEditPermission())
Mono<Tuple2<Application, ApplicationJson>> applicationJsonTuple = executionTimeLogging.measureTask("findByBranchNameAndDefaultApplicationId", applicationService.findByBranchNameAndDefaultApplicationId(finalBranchName, defaultApplicationId, applicationPermission.getEditPermission()))
.onErrorResume(error -> {
//if the branch does not exist in local, checkout remote branch
return checkoutBranch(defaultApplicationId, finalBranchName);
return executionTimeLogging.measureTask("checkoutBranch", checkoutBranch(defaultApplicationId, finalBranchName));
})
.zipWhen(application -> importExportApplicationService.exportApplicationById(application.getId(), SerialiseApplicationObjective.VERSION_CONTROL));
.zipWhen(application -> executionTimeLogging.measureTask( "getStatus->exportApplicationById", importExportApplicationService.exportApplicationById(application.getId(), SerialiseApplicationObjective.VERSION_CONTROL)));

if (Boolean.TRUE.equals(isFileLock)) {
// Add file lock for the status API call to avoid sending wrong info on the status
return redisUtils.addFileLock(gitApplicationMetadata.getDefaultApplicationId())
return executionTimeLogging.measureTask("addFileLock", redisUtils.addFileLock(gitApplicationMetadata.getDefaultApplicationId()))
.retryWhen(Retry.fixedDelay(MAX_RETRIES, RETRY_DELAY).jitter(0.75)
.onRetryExhaustedThrow((retryBackoffSpec, retrySignal) -> {
throw new AppsmithException(AppsmithError.GIT_FILE_IN_USE);
Expand All @@ -1588,7 +1588,7 @@ private Mono<GitStatusDTO> getStatus(String defaultApplicationId, String branchN

try {
return Mono.zip(
fileUtils.saveApplicationToLocalRepo(repoSuffix, applicationJson, finalBranchName),
executionTimeLogging.measureTask("getStatus->saveApplicationToLocalRepo", fileUtils.saveApplicationToLocalRepo(repoSuffix, applicationJson, finalBranchName)),
Mono.just(gitData.getGitAuth()),
Mono.just(repoSuffix)
);
Expand All @@ -1597,15 +1597,15 @@ private Mono<GitStatusDTO> getStatus(String defaultApplicationId, String branchN
}
})
.flatMap(tuple -> {
Mono<GitStatusDTO> branchedStatusMono = gitExecutor.getStatus(tuple.getT1(), finalBranchName).cache();
Mono<GitStatusDTO> branchedStatusMono = executionTimeLogging.measureTask("getStatus->gitExecutor.getStatus", gitExecutor.getStatus(tuple.getT1(), finalBranchName).cache());
try {
return gitExecutor.fetchRemote(tuple.getT1(), tuple.getT2().getPublicKey(), tuple.getT2().getPrivateKey(), true, branchName, false)
return executionTimeLogging.measureTask("getStatus->gitExecutor.fetchRemote", gitExecutor.fetchRemote(tuple.getT1(), tuple.getT2().getPublicKey(), tuple.getT2().getPrivateKey(), true, branchName, false))
.then(branchedStatusMono)
// Remove any files which are copied by hard resetting the repo
.then(gitExecutor.resetToLastCommit(tuple.getT3(), branchName))
.then(executionTimeLogging.measureTask("getStatus->gitExecutor.resetToLastCommit", gitExecutor.resetToLastCommit(tuple.getT3(), branchName)))
.flatMap(gitStatusDTO -> {
if (Boolean.TRUE.equals(isFileLock)) {
return releaseFileLock(defaultApplicationId)
return executionTimeLogging.measureTask("getStatus->releaseFileLock", releaseFileLock(defaultApplicationId))
.then(branchedStatusMono);
}
return branchedStatusMono;
Expand All @@ -1617,7 +1617,10 @@ private Mono<GitStatusDTO> getStatus(String defaultApplicationId, String branchN
});

return Mono.create(sink -> {
statusMono.subscribe(sink::success, sink::error, null, sink.currentContext());
statusMono.map(t -> {
log.debug("Time take, {}\n", executionTimeLogging.print());
return t;
}).subscribe(sink::success, sink::error, null, sink.currentContext());
});
}

Expand Down