From 7ec91dd0cc22ae2f9ace03cd0badeab9b4541817 Mon Sep 17 00:00:00 2001 From: rishabhrathod01 Date: Thu, 24 Oct 2024 16:10:19 +0530 Subject: [PATCH 1/3] chore: Add JSObject creation flow metrics --- .../constants/spans/ce/ActionSpanCE.java | 5 +++++ .../constants/spans/ce/DatasourceSpanCE.java | 2 ++ .../constants/spans/ce/PageSpanCE.java | 6 ++++- .../layouts/UpdateLayoutServiceCEImpl.java | 4 ++-- .../ce/LayoutActionServiceCEImpl.java | 22 ++++++++++++++++--- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ActionSpanCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ActionSpanCE.java index b800f3a97707..6000a4fdf1f6 100644 --- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ActionSpanCE.java +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ActionSpanCE.java @@ -39,4 +39,9 @@ public class ActionSpanCE { public static final String DELETE_ACTION = APPSMITH_SPAN_PREFIX + "delete.action"; public static final String FILL_SELF_REFERENCING_PATHS_ACTION = APPSMITH_SPAN_PREFIX + "action.fillSelfReferencingPaths"; + + public static final String VALIDATE_AND_GENERATE_ACTION_DOMAIN_BASED_ON_CONTEXT = + APPSMITH_SPAN_PREFIX + "validateAndGenerateActionDomainBasedOnContext"; + public static final String VALIDATE_AND_SAVE_ACTION_TO_REPOSITORY = + APPSMITH_SPAN_PREFIX + "validateAndSaveActionToRepository"; } diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/DatasourceSpanCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/DatasourceSpanCE.java index edb8b50fe7e0..ac5010eb4f07 100644 --- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/DatasourceSpanCE.java +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/DatasourceSpanCE.java @@ -6,4 +6,6 @@ public class DatasourceSpanCE { public static final String FETCH_ALL_DATASOURCES_WITH_STORAGES = APPSMITH_SPAN_PREFIX + "get_all_datasource_storage"; public static final String FETCH_ALL_PLUGINS_IN_WORKSPACE = APPSMITH_SPAN_PREFIX + "get_all_plugins_in_workspace"; + + public static final String FIND_DATASOURCE_BY_ID = APPSMITH_SPAN_PREFIX + "datasourceService.findById"; } diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/PageSpanCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/PageSpanCE.java index bf56b5bd37fb..771a7836e07c 100644 --- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/PageSpanCE.java +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/PageSpanCE.java @@ -14,6 +14,10 @@ public class PageSpanCE { public static final String PREPARE_APPLICATION_PAGES_DTO_FROM_PAGES = PAGES + "generate_app_pages_dto"; public static final String MIGRATE_DSL = PAGES + "migrate_dsl"; - public static final String GET_PAGE_BY_ID = APPSMITH_SPAN_PREFIX + "get.page.unpublished"; + // spans are named as per the method name to easily identify the method + public static final String GET_PAGE_BY_ID = APPSMITH_SPAN_PREFIX + "newPageService.findById"; public static final String GET_PAGE_BY_ID_AND_LAYOUTS_ID = APPSMITH_SPAN_PREFIX + "getPageByIdAndLayoutsId"; + + // page level method added here + public static final String IS_NAME_ALLOWED = APPSMITH_SPAN_PREFIX + "refactoringService.isNameAllowed"; } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/layouts/UpdateLayoutServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/layouts/UpdateLayoutServiceCEImpl.java index b4d159e67b7e..e286f0be2a25 100755 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/layouts/UpdateLayoutServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/layouts/UpdateLayoutServiceCEImpl.java @@ -146,6 +146,8 @@ private Mono updateLayoutDsl( .then(Mono.error(t)); } + extractAllWidgetNamesAndDynamicBindingsFromDSLSpan.tag("no_of_widgets", String.valueOf(widgetNames.size())); + observationHelper.endSpan(extractAllWidgetNamesAndDynamicBindingsFromDSLSpan, true); layout.setWidgetNames(widgetNames); @@ -225,8 +227,6 @@ private Mono updateLayoutDsl( return onLoadExecutablesUtil .findAndUpdateLayout(creatorId, creatorType, layoutId, layout) - .tag("no_of_widgets", String.valueOf(widgetNames.size())) - .tag("no_of_executables", String.valueOf(executableNames.size())) .name(FIND_AND_UPDATE_LAYOUT) .tap(Micrometer.observation(observationRegistry)); }) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutActionServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutActionServiceCEImpl.java index 45fe4a882efc..84b1b33e7653 100755 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutActionServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutActionServiceCEImpl.java @@ -36,7 +36,12 @@ import static com.appsmith.external.constants.spans.ActionSpan.GET_ACTION_BY_ID; import static com.appsmith.external.constants.spans.ActionSpan.UPDATE_ACTION_BASED_ON_CONTEXT; import static com.appsmith.external.constants.spans.ActionSpan.UPDATE_SINGLE_ACTION; +import static com.appsmith.external.constants.spans.ActionSpan.VALIDATE_AND_GENERATE_ACTION_DOMAIN_BASED_ON_CONTEXT; +import static com.appsmith.external.constants.spans.ActionSpan.VALIDATE_AND_SAVE_ACTION_TO_REPOSITORY; +import static com.appsmith.external.constants.spans.DatasourceSpan.FIND_DATASOURCE_BY_ID; import static com.appsmith.external.constants.spans.LayoutSpan.UPDATE_PAGE_LAYOUT_BY_PAGE_ID; +import static com.appsmith.external.constants.spans.PageSpan.GET_PAGE_BY_ID; +import static com.appsmith.external.constants.spans.PageSpan.IS_NAME_ALLOWED; import static java.util.stream.Collectors.toSet; @Slf4j @@ -337,6 +342,8 @@ protected Mono createAction(ActionDTO actionDTO, Boolean isJsAction) public Mono createAction(ActionDTO actionDTO, AppsmithEventContext eventContext, Boolean isJsAction) { return validateAndGenerateActionDomainBasedOnContext(actionDTO, isJsAction) + .name(VALIDATE_AND_GENERATE_ACTION_DOMAIN_BASED_ON_CONTEXT) + .tap(Micrometer.observation(observationRegistry)) .flatMap(newAction -> { // If the datasource is embedded, check for workspaceId and set it in action if (actionDTO.getDatasource() != null @@ -361,13 +368,17 @@ public Mono createAction(ActionDTO actionDTO, AppsmithEventContext ev }) .flatMap(savedNewAction -> newActionService .validateAndSaveActionToRepository(savedNewAction) + .name(VALIDATE_AND_SAVE_ACTION_TO_REPOSITORY) + .tap(Micrometer.observation(observationRegistry)) .zipWith(Mono.just(savedNewAction))) .zipWhen(zippedActions -> { ActionDTO savedActionDTO = zippedActions.getT1(); if (savedActionDTO.getDatasource() != null && savedActionDTO.getDatasource().getId() != null) { - return datasourceService.findById( - savedActionDTO.getDatasource().getId()); + return datasourceService + .findById(savedActionDTO.getDatasource().getId()) + .name(FIND_DATASOURCE_BY_ID) + .tap(Micrometer.observation(observationRegistry)); } else { return Mono.justOrEmpty(savedActionDTO.getDatasource()); } @@ -398,6 +409,8 @@ protected Mono validateAndGenerateActionDomainBasedOnContext(ActionDT Mono pageMono = newPageService .findById(action.getPageId(), aclPermission) + .name(GET_PAGE_BY_ID) + .tap(Micrometer.observation(observationRegistry)) .switchIfEmpty(Mono.error( new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, FieldName.PAGE, action.getPageId()))) .cache(); @@ -409,7 +422,10 @@ protected Mono validateAndGenerateActionDomainBasedOnContext(ActionDT String name = action.getValidName(); CreatorContextType contextType = action.getContextType() == null ? CreatorContextType.PAGE : action.getContextType(); - return refactoringService.isNameAllowed(page.getId(), contextType, layout.getId(), name); + return refactoringService + .isNameAllowed(page.getId(), contextType, layout.getId(), name) + .name(IS_NAME_ALLOWED) + .tap(Micrometer.observation(observationRegistry)); }) .flatMap(nameAllowed -> { // If the name is allowed, return pageMono for further processing From abe0d13409c8fd1aa873fde2c1cdfa5771ccbd69 Mon Sep 17 00:00:00 2001 From: rishabhrathod01 Date: Thu, 24 Oct 2024 17:16:41 +0530 Subject: [PATCH 2/3] undo the attribute related changes --- .../appsmith/server/layouts/UpdateLayoutServiceCEImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/layouts/UpdateLayoutServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/layouts/UpdateLayoutServiceCEImpl.java index e286f0be2a25..b4d159e67b7e 100755 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/layouts/UpdateLayoutServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/layouts/UpdateLayoutServiceCEImpl.java @@ -146,8 +146,6 @@ private Mono updateLayoutDsl( .then(Mono.error(t)); } - extractAllWidgetNamesAndDynamicBindingsFromDSLSpan.tag("no_of_widgets", String.valueOf(widgetNames.size())); - observationHelper.endSpan(extractAllWidgetNamesAndDynamicBindingsFromDSLSpan, true); layout.setWidgetNames(widgetNames); @@ -227,6 +225,8 @@ private Mono updateLayoutDsl( return onLoadExecutablesUtil .findAndUpdateLayout(creatorId, creatorType, layoutId, layout) + .tag("no_of_widgets", String.valueOf(widgetNames.size())) + .tag("no_of_executables", String.valueOf(executableNames.size())) .name(FIND_AND_UPDATE_LAYOUT) .tap(Micrometer.observation(observationRegistry)); }) From ebf826f21d3714774a6aa4f443d99d9d89fe6454 Mon Sep 17 00:00:00 2001 From: rishabhrathod01 Date: Thu, 24 Oct 2024 18:42:28 +0530 Subject: [PATCH 3/3] rename span to follow nomenclature --- .../appsmith/external/constants/spans/ce/ActionSpanCE.java | 4 ++-- .../external/constants/spans/ce/DatasourceSpanCE.java | 5 ++++- .../appsmith/external/constants/spans/ce/PageSpanCE.java | 7 +++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ActionSpanCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ActionSpanCE.java index 6000a4fdf1f6..567a2296b76d 100644 --- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ActionSpanCE.java +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ActionSpanCE.java @@ -41,7 +41,7 @@ public class ActionSpanCE { APPSMITH_SPAN_PREFIX + "action.fillSelfReferencingPaths"; public static final String VALIDATE_AND_GENERATE_ACTION_DOMAIN_BASED_ON_CONTEXT = - APPSMITH_SPAN_PREFIX + "validateAndGenerateActionDomainBasedOnContext"; + APPSMITH_SPAN_PREFIX + ACTIONS + "validateAndGenerateActionDomainBasedOnContext"; public static final String VALIDATE_AND_SAVE_ACTION_TO_REPOSITORY = - APPSMITH_SPAN_PREFIX + "validateAndSaveActionToRepository"; + APPSMITH_SPAN_PREFIX + ACTIONS + "validateAndSaveActionToRepository"; } diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/DatasourceSpanCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/DatasourceSpanCE.java index ac5010eb4f07..d7e447bec50d 100644 --- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/DatasourceSpanCE.java +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/DatasourceSpanCE.java @@ -3,9 +3,12 @@ import static com.appsmith.external.constants.spans.BaseSpan.APPSMITH_SPAN_PREFIX; public class DatasourceSpanCE { + public static final String DATASOURCES = "datasources."; public static final String FETCH_ALL_DATASOURCES_WITH_STORAGES = APPSMITH_SPAN_PREFIX + "get_all_datasource_storage"; public static final String FETCH_ALL_PLUGINS_IN_WORKSPACE = APPSMITH_SPAN_PREFIX + "get_all_plugins_in_workspace"; - public static final String FIND_DATASOURCE_BY_ID = APPSMITH_SPAN_PREFIX + "datasourceService.findById"; + // datasource service spans + public static final String DATASOURCE_SERVICE = "datasourceService"; + public static final String FIND_DATASOURCE_BY_ID = APPSMITH_SPAN_PREFIX + DATASOURCE_SERVICE + ".findById"; } diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/PageSpanCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/PageSpanCE.java index 771a7836e07c..5934b6b6ae75 100644 --- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/PageSpanCE.java +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/PageSpanCE.java @@ -14,10 +14,9 @@ public class PageSpanCE { public static final String PREPARE_APPLICATION_PAGES_DTO_FROM_PAGES = PAGES + "generate_app_pages_dto"; public static final String MIGRATE_DSL = PAGES + "migrate_dsl"; - // spans are named as per the method name to easily identify the method - public static final String GET_PAGE_BY_ID = APPSMITH_SPAN_PREFIX + "newPageService.findById"; - public static final String GET_PAGE_BY_ID_AND_LAYOUTS_ID = APPSMITH_SPAN_PREFIX + "getPageByIdAndLayoutsId"; + public static final String GET_PAGE_BY_ID = APPSMITH_SPAN_PREFIX + PAGES + "newPageService.findById"; + public static final String GET_PAGE_BY_ID_AND_LAYOUTS_ID = APPSMITH_SPAN_PREFIX + PAGES + "getPageByIdAndLayoutsId"; // page level method added here - public static final String IS_NAME_ALLOWED = APPSMITH_SPAN_PREFIX + "refactoringService.isNameAllowed"; + public static final String IS_NAME_ALLOWED = APPSMITH_SPAN_PREFIX + PAGES + "refactoringService.isNameAllowed"; }