mirror of
https://github.com/Alfresco/alfresco-transform-core.git
synced 2025-08-14 17:58:27 +00:00
ACS-2002 Enhance T-Router debug (#507)
[trigger release] 2.5.5-A1 By default T-Engines now provide the more readable TransformerDebug DEBUG messages, rather than the original detailed request and reply messages, which are still available as TRACE.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Transform Core
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2020 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
@@ -26,12 +26,15 @@
|
||||
*/
|
||||
package org.alfresco.transformer;
|
||||
|
||||
import org.alfresco.transform.client.model.InternalContext;
|
||||
import org.alfresco.transform.client.model.TransformReply;
|
||||
import org.alfresco.transform.client.model.TransformRequest;
|
||||
import org.alfresco.transform.client.model.TransformRequestValidator;
|
||||
import org.alfresco.transform.client.model.config.TransformConfig;
|
||||
import org.alfresco.transform.client.registry.TransformServiceRegistry;
|
||||
import org.alfresco.transform.exceptions.TransformException;
|
||||
import org.alfresco.transform.router.TransformStack;
|
||||
import org.alfresco.transform.router.TransformerDebug;
|
||||
import org.alfresco.transformer.clients.AlfrescoSharedFileStoreClient;
|
||||
import org.alfresco.transformer.logging.LogEntry;
|
||||
import org.alfresco.transformer.model.FileRefResponse;
|
||||
@@ -134,6 +137,9 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
@Autowired
|
||||
private TransformServiceRegistry transformRegistry;
|
||||
|
||||
@Autowired
|
||||
private TransformerDebug transformerDebug;
|
||||
|
||||
@GetMapping(value = "/transform/config")
|
||||
public ResponseEntity<TransformConfig> info()
|
||||
{
|
||||
@@ -203,16 +209,18 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
public ResponseEntity<TransformReply> transform(@RequestBody TransformRequest request,
|
||||
@RequestParam(value = "timeout", required = false) Long timeout)
|
||||
{
|
||||
logger.info("Received {}, timeout {} ms", request, timeout);
|
||||
logger.trace("Received {}, timeout {} ms", request, timeout);
|
||||
|
||||
final TransformReply reply = new TransformReply();
|
||||
reply.setInternalContext(request.getInternalContext());
|
||||
reply.setRequestId(request.getRequestId());
|
||||
reply.setSourceReference(request.getSourceReference());
|
||||
reply.setSchema(request.getSchema());
|
||||
reply.setClientData(request.getClientData());
|
||||
|
||||
final Errors errors = validateTransformRequest(request);
|
||||
validateInternalContext(request, errors);
|
||||
initialiseContext(request);
|
||||
reply.setInternalContext(request.getInternalContext());
|
||||
if (!errors.getAllErrors().isEmpty())
|
||||
{
|
||||
reply.setStatus(BAD_REQUEST.value());
|
||||
@@ -222,7 +230,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
.map(Object::toString)
|
||||
.collect(joining(", ")));
|
||||
|
||||
logger.error("Invalid request, sending {}", reply);
|
||||
transformerDebug.logFailure(reply);
|
||||
logger.trace("Invalid request, sending {}", reply);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
|
||||
@@ -237,7 +246,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
reply.setStatus(e.getStatusCode());
|
||||
reply.setErrorDetails(messageWithCause("Failed at reading the source file", e));
|
||||
|
||||
logger.error("Failed to load source file (TransformException), sending " + reply);
|
||||
transformerDebug.logFailure(reply);
|
||||
logger.trace("Failed to load source file (TransformException), sending " + reply);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
catch (HttpClientErrorException e)
|
||||
@@ -245,8 +255,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
reply.setStatus(e.getStatusCode().value());
|
||||
reply.setErrorDetails(messageWithCause("Failed at reading the source file", e));
|
||||
|
||||
logger.error("Failed to load source file (HttpClientErrorException), sending " +
|
||||
reply, e);
|
||||
transformerDebug.logFailure(reply);
|
||||
logger.trace("Failed to load source file (HttpClientErrorException), sending " + reply, e);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -254,7 +264,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
reply.setStatus(INTERNAL_SERVER_ERROR.value());
|
||||
reply.setErrorDetails(messageWithCause("Failed at reading the source file", e));
|
||||
|
||||
logger.error("Failed to load source file (Exception), sending " + reply, e);
|
||||
transformerDebug.logFailure(reply);
|
||||
logger.trace("Failed to load source file (Exception), sending " + reply, e);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
|
||||
@@ -266,10 +277,10 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
// Run the transformation
|
||||
try
|
||||
{
|
||||
|
||||
String targetMimetype = request.getTargetMediaType();
|
||||
String sourceMimetype = request.getSourceMediaType();
|
||||
Map<String, String> transformOptions = request.getTransformRequestOptions();
|
||||
transformerDebug.logOptions(request);
|
||||
String transformName = getTransformerName(sourceFile, sourceMimetype, targetMimetype, transformOptions);
|
||||
transformImpl(transformName, sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile);
|
||||
}
|
||||
@@ -278,7 +289,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
reply.setStatus(e.getStatusCode());
|
||||
reply.setErrorDetails(messageWithCause("Failed at processing transformation", e));
|
||||
|
||||
logger.error("Failed to perform transform (TransformException), sending " + reply, e);
|
||||
transformerDebug.logFailure(reply);
|
||||
logger.trace("Failed to perform transform (TransformException), sending " + reply, e);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -286,7 +298,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
reply.setStatus(INTERNAL_SERVER_ERROR.value());
|
||||
reply.setErrorDetails(messageWithCause("Failed at processing transformation", e));
|
||||
|
||||
logger.error("Failed to perform transform (Exception), sending " + reply, e);
|
||||
transformerDebug.logFailure(reply);
|
||||
logger.trace("Failed to perform transform (Exception), sending " + reply, e);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
|
||||
@@ -301,7 +314,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
reply.setStatus(e.getStatusCode());
|
||||
reply.setErrorDetails(messageWithCause("Failed at writing the transformed file", e));
|
||||
|
||||
logger.error("Failed to save target file (TransformException), sending " + reply, e);
|
||||
transformerDebug.logFailure(reply);
|
||||
logger.trace("Failed to save target file (TransformException), sending " + reply, e);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
catch (HttpClientErrorException e)
|
||||
@@ -309,8 +323,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
reply.setStatus(e.getStatusCode().value());
|
||||
reply.setErrorDetails(messageWithCause("Failed at writing the transformed file. ", e));
|
||||
|
||||
logger.error("Failed to save target file (HttpClientErrorException), sending " + reply,
|
||||
e);
|
||||
transformerDebug.logFailure(reply);
|
||||
logger.trace("Failed to save target file (HttpClientErrorException), sending " + reply, e);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -318,7 +332,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
reply.setStatus(INTERNAL_SERVER_ERROR.value());
|
||||
reply.setErrorDetails(messageWithCause("Failed at writing the transformed file. ", e));
|
||||
|
||||
logger.error("Failed to save target file (Exception), sending " + reply, e);
|
||||
transformerDebug.logFailure(reply);
|
||||
logger.trace("Failed to save target file (Exception), sending " + reply, e);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
|
||||
@@ -343,7 +358,8 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
reply.setTargetReference(targetRef.getEntry().getFileRef());
|
||||
reply.setStatus(CREATED.value());
|
||||
|
||||
logger.info("Sending successful {}, timeout {} ms", reply, timeout);
|
||||
transformerDebug.popTransform(reply);
|
||||
logger.trace("Sending successful {}, timeout {} ms", reply, timeout);
|
||||
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
|
||||
}
|
||||
|
||||
@@ -354,6 +370,21 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
return errors;
|
||||
}
|
||||
|
||||
private void validateInternalContext(TransformRequest request, Errors errors)
|
||||
{
|
||||
String errorMessage = InternalContext.checkForBasicErrors(request.getInternalContext(), "T-Request");
|
||||
if (errorMessage != null)
|
||||
{
|
||||
errors.rejectValue("internalContext", null, errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
private void initialiseContext(TransformRequest request)
|
||||
{
|
||||
// If needed initialise the context enough to allow logging to take place without NPE checks
|
||||
request.setInternalContext(InternalContext.initialise(request.getInternalContext()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the file with the specified sourceReference from Alfresco Shared File Store
|
||||
*
|
||||
@@ -422,7 +453,7 @@ public abstract class AbstractTransformerController implements TransformControll
|
||||
}
|
||||
else if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("Using transform name provided in the request: " + requestTransformName);
|
||||
logger.trace("Using transform name provided in the request: " + requestTransformName);
|
||||
}
|
||||
return transformName;
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Transform Core
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
@@ -106,7 +106,7 @@ public class QueueTransformService
|
||||
return;
|
||||
}
|
||||
|
||||
logger.info("New T-Request from queue with correlationId: {}", correlationId);
|
||||
logger.trace("New T-Request from queue with correlationId: {}", correlationId);
|
||||
|
||||
Optional<TransformRequest> transformRequest;
|
||||
try
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Transform Core
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
@@ -28,6 +28,7 @@ package org.alfresco.transformer.config;
|
||||
|
||||
import org.alfresco.transform.client.model.TransformRequestValidator;
|
||||
import org.alfresco.transform.client.registry.TransformServiceRegistry;
|
||||
import org.alfresco.transform.router.TransformerDebug;
|
||||
import org.alfresco.transformer.TransformInterceptor;
|
||||
import org.alfresco.transformer.TransformRegistryImpl;
|
||||
import org.alfresco.transformer.clients.AlfrescoSharedFileStoreClient;
|
||||
@@ -78,4 +79,10 @@ public class WebApplicationConfig implements WebMvcConfigurer
|
||||
{
|
||||
return new TransformRegistryImpl();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public TransformerDebug transformerDebug()
|
||||
{
|
||||
return new TransformerDebug().setIsTEngine(true);
|
||||
}
|
||||
}
|
||||
|
@@ -66,7 +66,7 @@ public class TransformReplySender
|
||||
m.setJMSCorrelationID(correlationId);
|
||||
return m;
|
||||
});
|
||||
logger.info("Sent: {} - with correlation ID {}", reply, correlationId);
|
||||
logger.trace("Sent: {} - with correlation ID {}", reply, correlationId);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@@ -31,6 +31,7 @@ logging:
|
||||
org.alfresco.transformer.ImageMagickController: debug
|
||||
org.alfresco.transformer.TikaController: debug
|
||||
org.alfresco.transformer.MiscellaneousTransformersController: debug
|
||||
org.alfresco.transform.router.TransformerDebug: debug
|
||||
|
||||
fileStoreUrl: ${FILE_STORE_URL:http://localhost:8099/alfresco/api/-default-/private/sfs/versions/1/file}
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Transform Core
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2021 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
@@ -48,10 +48,12 @@ import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.nio.file.Files;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.transform.client.model.InternalContext;
|
||||
import org.alfresco.transform.client.model.TransformReply;
|
||||
import org.alfresco.transform.client.model.TransformRequest;
|
||||
import org.alfresco.transform.client.model.config.SupportedSourceAndTarget;
|
||||
@@ -61,6 +63,7 @@ import org.alfresco.transform.client.model.config.TransformOptionGroup;
|
||||
import org.alfresco.transform.client.model.config.TransformOptionValue;
|
||||
import org.alfresco.transform.client.model.config.Transformer;
|
||||
import org.alfresco.transform.client.registry.TransformServiceRegistry;
|
||||
import org.alfresco.transform.router.TransformStack;
|
||||
import org.alfresco.transformer.clients.AlfrescoSharedFileStoreClient;
|
||||
import org.alfresco.transformer.probes.ProbeTestTransform;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -104,6 +107,7 @@ public abstract class AbstractTransformerControllerTest
|
||||
protected String targetExtension;
|
||||
protected String sourceMimetype;
|
||||
protected String targetMimetype;
|
||||
protected HashMap<String, String> options = new HashMap<>();
|
||||
|
||||
protected MockMultipartFile sourceFile;
|
||||
protected String expectedOptions;
|
||||
@@ -220,6 +224,30 @@ public abstract class AbstractTransformerControllerTest
|
||||
return builder;
|
||||
}
|
||||
|
||||
protected TransformRequest createTransformRequest(String sourceFileRef, File sourceFile)
|
||||
{
|
||||
TransformRequest transformRequest = new TransformRequest();
|
||||
transformRequest.setRequestId("1");
|
||||
transformRequest.setSchema(1);
|
||||
transformRequest.setClientData("Alfresco Digital Business Platform");
|
||||
transformRequest.setTransformRequestOptions(options);
|
||||
transformRequest.setSourceReference(sourceFileRef);
|
||||
transformRequest.setSourceExtension(sourceExtension);
|
||||
transformRequest.setSourceMediaType(sourceMimetype);
|
||||
transformRequest.setSourceSize(sourceFile.length());
|
||||
transformRequest.setTargetExtension(targetExtension);
|
||||
transformRequest.setTargetMediaType(targetMimetype);
|
||||
transformRequest.setInternalContext(InternalContext.initialise(null));
|
||||
transformRequest.getInternalContext().getMultiStep().setInitialRequestId("123");
|
||||
transformRequest.getInternalContext().getMultiStep().setInitialSourceMediaType(sourceMimetype);
|
||||
TransformStack.setInitialTransformRequestOptions(transformRequest.getInternalContext(), options);
|
||||
TransformStack.setInitialSourceReference(transformRequest.getInternalContext(), sourceFileRef);
|
||||
TransformStack.addTransformLevel(transformRequest.getInternalContext(),
|
||||
TransformStack.levelBuilder(TransformStack.PIPELINE_FLAG)
|
||||
.withStep("transformerName", sourceMimetype, targetMimetype));
|
||||
return transformRequest;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void simpleTransformTest() throws Exception
|
||||
{
|
||||
|
Reference in New Issue
Block a user