chore: Add analytics events to log execution time for the light weight git status API (#26406)
## Description Adds unit execution time events for git status without fetch and git fetch from remote APIs. #### PR fixes following issue(s) Fixes #26405
This commit is contained in:
parent
8ecb1a6bde
commit
1ea441d8e3
|
|
@ -45,6 +45,7 @@ public enum AnalyticsEvents {
|
||||||
GIT_LIST_BRANCH,
|
GIT_LIST_BRANCH,
|
||||||
GIT_RESET,
|
GIT_RESET,
|
||||||
GIT_STATUS,
|
GIT_STATUS,
|
||||||
|
GIT_STATUS_WITHOUT_FETCH,
|
||||||
GIT_COMMIT_HISTORY,
|
GIT_COMMIT_HISTORY,
|
||||||
GIT_CLONE,
|
GIT_CLONE,
|
||||||
GIT_CHECKOUT,
|
GIT_CHECKOUT,
|
||||||
|
|
|
||||||
|
|
@ -1740,7 +1740,7 @@ public class GitServiceCEImpl implements GitServiceCE {
|
||||||
1. Copy resources from DB to local repo
|
1. Copy resources from DB to local repo
|
||||||
2. Fetch the current status from local repo
|
2. Fetch the current status from local repo
|
||||||
*/
|
*/
|
||||||
Mono<User> currUserMono = sessionUserService.getCurrentUser().cache();
|
Mono<User> currUserMono = sessionUserService.getCurrentUser();
|
||||||
Mono<GitStatusDTO> statusMono = getGitApplicationMetadata(defaultApplicationId)
|
Mono<GitStatusDTO> statusMono = getGitApplicationMetadata(defaultApplicationId)
|
||||||
.flatMap(gitApplicationMetadata -> {
|
.flatMap(gitApplicationMetadata -> {
|
||||||
Mono<Tuple2<Application, ApplicationJson>> applicationJsonTuple = branchedAppMono
|
Mono<Tuple2<Application, ApplicationJson>> applicationJsonTuple = branchedAppMono
|
||||||
|
|
@ -1843,17 +1843,24 @@ public class GitServiceCEImpl implements GitServiceCE {
|
||||||
GitStatusDTO gitStatusDTO = objects.getT2().getT1();
|
GitStatusDTO gitStatusDTO = objects.getT2().getT1();
|
||||||
User currentUser = objects.getT2().getT2();
|
User currentUser = objects.getT2().getT2();
|
||||||
Application app = objects.getT2().getT3();
|
Application app = objects.getT2().getT3();
|
||||||
return sendAnalyticsEvent(elapsedTime, gitStatusDTO, currentUser, app);
|
String flowName;
|
||||||
|
if (compareRemote) {
|
||||||
|
flowName = AnalyticsEvents.GIT_STATUS.getEventName();
|
||||||
|
} else {
|
||||||
|
flowName = AnalyticsEvents.GIT_STATUS_WITHOUT_FETCH.getEventName();
|
||||||
|
}
|
||||||
|
return sendUnitExecutionTimeAnalyticsEvent(flowName, elapsedTime, currentUser, app)
|
||||||
|
.thenReturn(gitStatusDTO);
|
||||||
})
|
})
|
||||||
.subscribe(sink::success, sink::error, null, sink.currentContext());
|
.subscribe(sink::success, sink::error, null, sink.currentContext());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private Mono<GitStatusDTO> sendAnalyticsEvent(
|
private Mono<Void> sendUnitExecutionTimeAnalyticsEvent(
|
||||||
Long elapsedTime, GitStatusDTO gitStatusDTO, User currentUser, Application app) {
|
String flowName, Long elapsedTime, User currentUser, Application app) {
|
||||||
final Map<String, Object> data = Map.of(
|
final Map<String, Object> data = Map.of(
|
||||||
FieldName.FLOW_NAME,
|
FieldName.FLOW_NAME,
|
||||||
AnalyticsEvents.GIT_STATUS.getEventName(),
|
flowName,
|
||||||
FieldName.APPLICATION_ID,
|
FieldName.APPLICATION_ID,
|
||||||
app.getGitApplicationMetadata().getDefaultApplicationId(),
|
app.getGitApplicationMetadata().getDefaultApplicationId(),
|
||||||
"appId",
|
"appId",
|
||||||
|
|
@ -1866,9 +1873,8 @@ public class GitServiceCEImpl implements GitServiceCE {
|
||||||
app.getGitApplicationMetadata().getRemoteUrl(),
|
app.getGitApplicationMetadata().getRemoteUrl(),
|
||||||
"executionTime",
|
"executionTime",
|
||||||
elapsedTime);
|
elapsedTime);
|
||||||
return analyticsService
|
return analyticsService.sendEvent(
|
||||||
.sendEvent(AnalyticsEvents.UNIT_EXECUTION_TIME.getEventName(), currentUser.getUsername(), data)
|
AnalyticsEvents.UNIT_EXECUTION_TIME.getEventName(), currentUser.getUsername(), data);
|
||||||
.thenReturn(gitStatusDTO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -1896,11 +1902,13 @@ public class GitServiceCEImpl implements GitServiceCE {
|
||||||
}
|
}
|
||||||
final String finalBranchName = branchName.replaceFirst("origin/", "");
|
final String finalBranchName = branchName.replaceFirst("origin/", "");
|
||||||
|
|
||||||
Mono<BranchTrackingStatus> statusMono = getGitApplicationMetadata(defaultApplicationId)
|
Mono<Application> applicationMono = applicationService
|
||||||
|
.findByBranchNameAndDefaultApplicationId(
|
||||||
|
finalBranchName, defaultApplicationId, applicationPermission.getEditPermission())
|
||||||
|
.cache(); // caching as it'll be also used when sending analytics
|
||||||
|
Mono<User> currUserMono = sessionUserService.getCurrentUser(); // will be used to send analytics event
|
||||||
|
Mono<BranchTrackingStatus> fetchRemoteStatusMono = getGitApplicationMetadata(defaultApplicationId)
|
||||||
.flatMap(gitApplicationMetadata -> {
|
.flatMap(gitApplicationMetadata -> {
|
||||||
Mono<Application> applicationMono = applicationService.findByBranchNameAndDefaultApplicationId(
|
|
||||||
finalBranchName, defaultApplicationId, applicationPermission.getEditPermission());
|
|
||||||
|
|
||||||
if (Boolean.TRUE.equals(isFileLock)) {
|
if (Boolean.TRUE.equals(isFileLock)) {
|
||||||
// Add file lock to avoid sending wrong info on the status
|
// Add file lock to avoid sending wrong info on the status
|
||||||
return redisUtils
|
return redisUtils
|
||||||
|
|
@ -1952,10 +1960,21 @@ public class GitServiceCEImpl implements GitServiceCE {
|
||||||
return Mono.error(new AppsmithException(
|
return Mono.error(new AppsmithException(
|
||||||
AppsmithError.GIT_ACTION_FAILED, "status", error.getMessage()));
|
AppsmithError.GIT_ACTION_FAILED, "status", error.getMessage()));
|
||||||
});
|
});
|
||||||
|
})
|
||||||
|
.elapsed()
|
||||||
|
.zipWith(Mono.zip(currUserMono, applicationMono))
|
||||||
|
.flatMap(objects -> {
|
||||||
|
Long elapsedTime = objects.getT1().getT1();
|
||||||
|
BranchTrackingStatus branchTrackingStatus = objects.getT1().getT2();
|
||||||
|
User currentUser = objects.getT2().getT1();
|
||||||
|
Application app = objects.getT2().getT2();
|
||||||
|
return sendUnitExecutionTimeAnalyticsEvent(
|
||||||
|
AnalyticsEvents.GIT_FETCH.getEventName(), elapsedTime, currentUser, app)
|
||||||
|
.thenReturn(branchTrackingStatus);
|
||||||
});
|
});
|
||||||
|
|
||||||
return Mono.create(sink -> {
|
return Mono.create(sink -> {
|
||||||
statusMono.subscribe(sink::success, sink::error, null, sink.currentContext());
|
fetchRemoteStatusMono.subscribe(sink::success, sink::error, null, sink.currentContext());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user