Verification and Troubleshooting ​
Troubleshooting ​
Common Issues ​
1. Missing Dependencies ​
Ensure the required dependency is present. Both runtime and deployment components are bundled in a single dependency:
xml
<dependency>
<groupId>org.pipelineframework</groupId>
<artifactId>pipelineframework</artifactId>
</dependency>2. Annotation Processing Not Running ​
Verify the processor is on the classpath:
bash
# Check that the pipelineframework dependency is included
mvn dependency:tree | grep pipelineframework3. Generated Classes Not Found ​
Check the generated sources directory:
bash
# List generated classes
find target/generated-sources -name "*.java" | grep -i pipelineDebugging Tips ​
Enable Detailed Logging ​
properties
# application.properties
quarkus.log.category."org.pipelineframework".level=DEBUG
quarkus.log.category."org.pipelineframework.processor".level=TRACEVerify Generated Classes ​
bash
# Check that step classes were generated
find target/classes -name "*Step.class" | head -5
# Check that gRPC service classes were generated
find target/classes -name "*GrpcService.class" | head -5Clean and Rebuild ​
bash
# Clean build to force regeneration
mvn clean compileBest Practices ​
Development Workflow ​
- Author Internal Step Contracts in YAML: Define
service,cardinality,input,output, and optionalinboundMapper/outboundMapperinpipeline.yaml. - Build Project: Run
mvn compileto trigger generation - Verify Generation: Check that generated classes are created and the service interface matches the YAML cardinality
- Test Integration: Run integration tests to verify the pipeline works
- Deploy: Deploy the complete application with generated components
Maintenance ​
- Keep YAML and Service Signatures in Sync: Update
pipeline.yamlwhenever an internal service interface changes - Review Generated Code: Periodically review generated code for correctness
- Monitor Build Logs: Watch for generation warnings or errors
- Test Changes: Thoroughly test after making changes to YAML-defined steps or service implementations
Performance Considerations ​
- Minimize Regeneration: Only rebuild when annotations change
- Optimize Mappers: Ensure mappers are efficient
- Configure Retries: Set appropriate retry limits and wait times
- Monitor Resource Usage: Watch memory and CPU usage of generated components
The Pipeline Framework's annotation processing provides a powerful way to automatically generate pipeline infrastructure while maintaining type safety and reducing boilerplate code. By understanding how this process works, you can leverage its full potential while troubleshooting any issues that may arise.