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: added thread logging info for plugins #36077

Merged
merged 10 commits into from
Sep 5, 2024
2 changes: 1 addition & 1 deletion app/client/packages/eslint-plugin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
"postinstall": "yarn build",
"test:unit": "yarn g:jest"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,18 @@ public void stopAndLogTimeInMillis() {
log.debug("Execute time: {}, Time elapsed: {}ms", this.flow, this.watch.getTime(TimeUnit.MILLISECONDS));
}

/**
* This is a temporary function created to log stopwatch timer within the plugin package
* Due to this bug https://github.com/appsmithorg/appsmith/issues/36073 logging is not working in the plugin package
*/
public void stopAndLogTimeInMillisWithSysOut() {
if (!this.watch.isStopped()) {
this.watch.stop();
}
System.out.println(String.format(
"Execute time: %s, Time elapsed: %dms", this.flow, this.watch.getTime(TimeUnit.MILLISECONDS)));
}

public void stopTimer() {
if (!this.watch.isStopped()) {
this.watch.stop();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,9 @@ public Mono<ActionExecutionResult> executeParameterized(
DatasourceConfiguration datasourceConfiguration,
ActionConfiguration actionConfiguration) {

String printMessage =
Thread.currentThread().getName() + ": executeParameterized() called for AmazonS3 plugin.";
System.out.println(printMessage);
NilanshBansal marked this conversation as resolved.
Show resolved Hide resolved
final Map<String, Object> formData = actionConfiguration.getFormData();
List<Map.Entry<String, String>> parameters = new ArrayList<>();

Expand Down Expand Up @@ -464,6 +467,8 @@ private Mono<ActionExecutionResult> executeCommon(
DatasourceConfiguration datasourceConfiguration,
ActionConfiguration actionConfiguration) {

String printMessage = Thread.currentThread().getName() + ": executeCommon() called for AmazonS3 plugin.";
System.out.println(printMessage);
final String[] query = new String[1];
Map<String, Object> requestProperties = new HashMap<>();
List<RequestParamDTO> requestParams = new ArrayList<>();
Expand Down Expand Up @@ -539,6 +544,8 @@ private Mono<ActionExecutionResult> executeCommon(
Object actionResult;
switch (s3Action) {
case LIST:
System.out.println(
Thread.currentThread().getName() + ": LIST action called for AmazonS3 plugin.");
String prefix = getDataValueSafelyFromFormData(formData, LIST_PREFIX, STRING_TYPE, "");
requestParams.add(new RequestParamDTO(LIST_PREFIX, prefix, null, null, null));

Expand Down Expand Up @@ -637,6 +644,8 @@ private Mono<ActionExecutionResult> executeCommon(

break;
case UPLOAD_FILE_FROM_BODY: {
System.out.println(Thread.currentThread().getName()
+ ": UPLOAD_FILE_FROM_BODY action called for AmazonS3 plugin.");
requestParams.add(
new RequestParamDTO(ACTION_CONFIGURATION_PATH, path, null, null, null));

Expand Down Expand Up @@ -688,6 +697,8 @@ private Mono<ActionExecutionResult> executeCommon(
break;
}
case UPLOAD_MULTIPLE_FILES_FROM_BODY: {
System.out.println(Thread.currentThread().getName()
+ ": UPLOAD_MULTIPLE_FILES_FROM_BODY action called for AmazonS3 plugin.");
requestParams.add(
new RequestParamDTO(ACTION_CONFIGURATION_PATH, path, null, null, null));

Expand Down Expand Up @@ -740,6 +751,8 @@ private Mono<ActionExecutionResult> executeCommon(
break;
}
case READ_FILE:
System.out.println(Thread.currentThread().getName()
+ ": READ_FILE action called for AmazonS3 plugin.");
requestParams.add(
new RequestParamDTO(ACTION_CONFIGURATION_PATH, path, null, null, null));

Expand All @@ -757,6 +770,8 @@ private Mono<ActionExecutionResult> executeCommon(
actionResult = Map.of("fileData", result);
break;
case DELETE_FILE:
System.out.println(Thread.currentThread().getName()
+ ": DELETE_FILE action called for AmazonS3 plugin.");
requestParams.add(
new RequestParamDTO(ACTION_CONFIGURATION_PATH, path, null, null, null));

Expand All @@ -768,6 +783,8 @@ private Mono<ActionExecutionResult> executeCommon(
actionResult = Map.of("status", "File deleted successfully");
break;
case DELETE_MULTIPLE_FILES:
System.out.println(Thread.currentThread().getName()
+ ": DELETE_MULTIPLE_FILES action called for AmazonS3 plugin.");
requestParams.add(
new RequestParamDTO(ACTION_CONFIGURATION_PATH, path, null, null, null));

Expand Down Expand Up @@ -806,7 +823,7 @@ private Mono<ActionExecutionResult> executeCommon(
ActionExecutionResult actionExecutionResult = new ActionExecutionResult();
actionExecutionResult.setBody(result);
actionExecutionResult.setIsExecutionSuccess(true);
log.debug("In the S3 Plugin, got action execution result");
System.out.println("In the S3 Plugin, got action execution result");
NilanshBansal marked this conversation as resolved.
Show resolved Hide resolved
return Mono.just(actionExecutionResult);
})
.onErrorResume(e -> {
Expand All @@ -825,6 +842,8 @@ private Mono<ActionExecutionResult> executeCommon(
})
// Now set the request in the result to be returned to the server
.map(actionExecutionResult -> {
System.out.println(Thread.currentThread().getName()
+ ": Setting the actionExecutionResult for AmazonS3 plugin.");
ActionExecutionRequest actionExecutionRequest = new ActionExecutionRequest();
actionExecutionRequest.setQuery(query[0]);
actionExecutionRequest.setProperties(requestProperties);
Expand Down Expand Up @@ -873,7 +892,8 @@ private DeleteObjectsRequest getDeleteObjectsRequest(String bucketName, List<Str

@Override
public Mono<AmazonS3> datasourceCreate(DatasourceConfiguration datasourceConfiguration) {

String printMessage = Thread.currentThread().getName() + ": datasourceCreate() called for AmazonS3 plugin.";
System.out.println(printMessage);
try {
Class.forName(S3_DRIVER);
} catch (ClassNotFoundException e) {
Expand Down Expand Up @@ -901,13 +921,17 @@ public Mono<AmazonS3> datasourceCreate(DatasourceConfiguration datasourceConfigu

@Override
public void datasourceDestroy(AmazonS3 connection) {
String printMessage =
Thread.currentThread().getName() + ": datasourceDestroy() called for AmazonS3 plugin.";
System.out.println(printMessage);
if (connection != null) {
Mono.fromCallable(() -> {
connection.shutdown();
return connection;
})
.onErrorResume(exception -> {
log.debug("Error closing S3 connection.", exception);
System.out.println("Error closing S3 connection.");
exception.printStackTrace();
NilanshBansal marked this conversation as resolved.
Show resolved Hide resolved
return Mono.empty();
})
.subscribeOn(scheduler)
Expand All @@ -917,6 +941,9 @@ public void datasourceDestroy(AmazonS3 connection) {

@Override
public Set<String> validateDatasource(DatasourceConfiguration datasourceConfiguration) {
String printMessage =
Thread.currentThread().getName() + ": validateDatasource() called for AmazonS3 plugin.";
System.out.println(printMessage);
Set<String> invalids = new HashSet<>();

if (datasourceConfiguration == null || datasourceConfiguration.getAuthentication() == null) {
Expand Down Expand Up @@ -978,6 +1005,8 @@ public Set<String> validateDatasource(DatasourceConfiguration datasourceConfigur

@Override
public Mono<DatasourceTestResult> testDatasource(DatasourceConfiguration datasourceConfiguration) {
String printMessage = Thread.currentThread().getName() + ": testDatasource() called for AmazonS3 plugin.";
System.out.println(printMessage);
if (datasourceConfiguration == null) {
return Mono.just(new DatasourceTestResult(
S3ErrorMessages.DS_AT_LEAST_ONE_MANDATORY_PARAMETER_MISSING_ERROR_MSG));
Expand All @@ -1000,6 +1029,8 @@ public Mono<DatasourceTestResult> testDatasource(DatasourceConfiguration datasou
* object with wrong credentials does not throw any exception.
* - Hence, adding a listBuckets() method call to test the connection.
*/
System.out.println(Thread.currentThread().getName()
+ ": listBuckets() called for AmazonS3 plugin.");
connection.listBuckets();
return new DatasourceTestResult();
})
Expand Down Expand Up @@ -1037,6 +1068,8 @@ private Mono<DatasourceTestResult> testGoogleCloudStorage(DatasourceConfiguratio
return datasourceCreate(datasourceConfiguration)
.flatMap(connection -> Mono.fromCallable(() -> {
connection.listObjects(defaultBucket);
System.out.println(Thread.currentThread().getName()
+ ": connection.listObjects() called for AmazonS3 plugin.");
return new DatasourceTestResult();
})
.onErrorResume(error -> {
Expand All @@ -1062,9 +1095,13 @@ private Mono<DatasourceTestResult> testGoogleCloudStorage(DatasourceConfiguratio
public Mono<DatasourceStructure> getStructure(
AmazonS3 connection, DatasourceConfiguration datasourceConfiguration) {

String printMessage = Thread.currentThread().getName() + ": getStructure() called for AmazonS3 plugin.";
System.out.println(printMessage);
return Mono.fromSupplier(() -> {
List<DatasourceStructure.Table> tableList;
try {
System.out.println(Thread.currentThread().getName()
+ ": connection.listBuckets() called for AmazonS3 plugin.");
tableList = connection.listBuckets().stream()
/* Get name of each bucket */
.map(Bucket::getName)
Expand Down Expand Up @@ -1113,6 +1150,9 @@ public Object substituteValueInInput(
Object... args) {
String jsonBody = (String) input;
Param param = (Param) args[0];
String printMessage =
Thread.currentThread().getName() + ": substituteValueInInput() called for AmazonS3 plugin.";
System.out.println(printMessage);
return DataTypeStringUtils.jsonSmartReplacementPlaceholderWithValue(
jsonBody, value, null, insertedParams, null, param);
}
Expand Down Expand Up @@ -1158,6 +1198,9 @@ void uploadFileInS3(
@Override
public Mono<Void> sanitizeGenerateCRUDPageTemplateInfo(
List<ActionConfiguration> actionConfigurationList, Object... args) {
String printMessage = Thread.currentThread().getName()
+ ": sanitizeGenerateCRUDPageTemplateInfo() called for AmazonS3 plugin.";
System.out.println(printMessage);
if (isEmpty(actionConfigurationList)) {
return Mono.empty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public static S3ServiceProvider fromString(String name) throws AppsmithPluginExc
*/
public static AmazonS3ClientBuilder getS3ClientBuilder(DatasourceConfiguration datasourceConfiguration)
throws AppsmithPluginException {

System.out.println(Thread.currentThread().getName() + ": getS3ClientBuilder action called.");
DBAuth authentication = (DBAuth) datasourceConfiguration.getAuthentication();
String accessKey = authentication.getUsername();
String secretKey = authentication.getPassword();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ protected AnthropicPluginExecutor(SharedConfig sharedConfig) {

@Override
public Mono<DatasourceTestResult> testDatasource(DatasourceConfiguration datasourceConfiguration) {
String printMessage = Thread.currentThread().getName() + ": testDatasource() called for Anthropic plugin.";
System.out.println(printMessage);
final ApiKeyAuth apiKeyAuth = (ApiKeyAuth) datasourceConfiguration.getAuthentication();
if (!StringUtils.hasText(apiKeyAuth.getValue())) {
return Mono.error(new AppsmithPluginException(
Expand Down Expand Up @@ -110,6 +112,10 @@ public Mono<ActionExecutionResult> executeParameterized(
ExecuteActionDTO executeActionDTO,
DatasourceConfiguration datasourceConfiguration,
ActionConfiguration actionConfiguration) {

String printMessage =
Thread.currentThread().getName() + ": executeParameterized() called for Anthropic plugin.";
System.out.println(printMessage);
// Get prompt from action configuration
List<Map.Entry<String, String>> parameters = new ArrayList<>();

Expand Down Expand Up @@ -248,6 +254,8 @@ private Object formatResponseBodyAsCompletionAPI(String model, byte[] response)
@Override
public Mono<TriggerResultDTO> trigger(
APIConnection connection, DatasourceConfiguration datasourceConfiguration, TriggerRequestDTO request) {
String printMessage = Thread.currentThread().getName() + ": trigger() called for Anthropic plugin.";
System.out.println(printMessage);
final ApiKeyAuth apiKeyAuth = (ApiKeyAuth) datasourceConfiguration.getAuthentication();
if (!StringUtils.hasText(apiKeyAuth.getValue())) {
return Mono.error(new AppsmithPluginException(
Expand Down Expand Up @@ -309,6 +317,9 @@ public Mono<TriggerResultDTO> trigger(

@Override
public Set<String> validateDatasource(DatasourceConfiguration datasourceConfiguration) {
String printMessage =
Thread.currentThread().getName() + ": validateDatasource() called for Anthropic plugin.";
System.out.println(printMessage);
return RequestUtils.validateApiKeyAuthDatasource(datasourceConfiguration);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ public AppsmithAiPluginExecutor(SharedConfig config) {

@Override
public Mono<APIConnection> datasourceCreate(DatasourceConfiguration datasourceConfiguration) {
String printMessage =
Thread.currentThread().getName() + ": datasourceCreate() called for AppsmithAI plugin.";
System.out.println(printMessage);
ApiKeyAuth apiKeyAuth = new ApiKeyAuth();
apiKeyAuth.setValue("test-key");
return ApiKeyAuthentication.create(apiKeyAuth)
Expand All @@ -78,6 +81,8 @@ public Mono<APIConnection> datasourceCreate(DatasourceConfiguration datasourceCo
@Override
public Mono<TriggerResultDTO> trigger(
APIConnection connection, DatasourceConfiguration datasourceConfiguration, TriggerRequestDTO request) {
String printMessage = Thread.currentThread().getName() + ": trigger() called for AppsmithAI plugin.";
System.out.println(printMessage);
SourceDetails sourceDetails = SourceDetails.createSourceDetails(request);
String requestType = request.getRequestType();
if (UPLOAD_FILES.equals(requestType)) {
Expand Down Expand Up @@ -143,6 +148,9 @@ public Mono<ActionExecutionResult> executeParameterized(
DatasourceConfiguration datasourceConfiguration,
ActionConfiguration actionConfiguration) {

String printMessage =
Thread.currentThread().getName() + ": executeParameterized() called for AppsmithAI plugin.";
System.out.println(printMessage);
// Get input from action configuration
List<Map.Entry<String, String>> parameters = new ArrayList<>();

Expand All @@ -162,6 +170,8 @@ public Mono<ActionExecutionResult> executeCommon(
List<Map.Entry<String, String>> insertedParams,
ExecuteActionDTO executeActionDTO) {

String printMessage = Thread.currentThread().getName() + ": executeCommon() called for AppsmithAI plugin.";
System.out.println(printMessage);
// Initializing object for error condition
ActionExecutionResult errorResult = new ActionExecutionResult();
initUtils.initializeResponseWithError(errorResult);
Expand Down Expand Up @@ -199,18 +209,25 @@ public Mono<ActionExecutionResult> executeCommon(

@Override
public Set<String> validateDatasource(DatasourceConfiguration datasourceConfiguration, boolean isEmbedded) {
String printMessage =
Thread.currentThread().getName() + ": validateDatasource() called for AppsmithAI plugin.";
System.out.println(printMessage);
return Set.of();
}

@Override
public Mono<DatasourceStorage> preSaveHook(DatasourceStorage datasourceStorage) {
String printMessage = Thread.currentThread().getName() + ": preSaveHook() called for AppsmithAI plugin.";
System.out.println(printMessage);
return aiServerService
.associateDatasource(createAssociateDTO(datasourceStorage))
.thenReturn(datasourceStorage);
}

@Override
public Mono<DatasourceStorage> preDeleteHook(DatasourceStorage datasourceStorage) {
String printMessage = Thread.currentThread().getName() + ": preDeleteHook() called for AppsmithAI plugin.";
System.out.println(printMessage);
DatasourceConfiguration datasourceConfiguration = datasourceStorage.getDatasourceConfiguration();
if (hasFiles(datasourceConfiguration)) {
return aiServerService
Expand Down
Loading
Loading