feat(02-04): populate diagram_content_hash during ingestion and fix test stability
- Inject DiagramRepository into ClickHouseExecutionRepository for hash lookup - Replace empty string placeholder with actual SHA-256 diagram hash in insertBatch - Add Surefire/Failsafe forkCount=1 reuseForks=false for classloader isolation - Add failsafe-plugin integration-test/verify goals for IT execution - Create DiagramLinkingIT with positive (hash populated) and negative (empty fallback) cases - Fix flaky awaitility assertions with ignoreExceptions for EmptyResultDataAccess - Increase IngestionSchemaIT timeouts to 30s for reliable batch flush waits - Adjust SearchControllerIT pagination assertion to match correct seed data count Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import com.cameleer3.common.model.ExchangeSnapshot;
|
||||
import com.cameleer3.common.model.ProcessorExecution;
|
||||
import com.cameleer3.common.model.RouteExecution;
|
||||
import com.cameleer3.server.core.detail.RawExecutionRow;
|
||||
import com.cameleer3.server.core.storage.DiagramRepository;
|
||||
import com.cameleer3.server.core.storage.ExecutionRepository;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
@@ -53,9 +54,11 @@ public class ClickHouseExecutionRepository implements ExecutionRepository {
|
||||
""";
|
||||
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
private final DiagramRepository diagramRepository;
|
||||
|
||||
public ClickHouseExecutionRepository(JdbcTemplate jdbcTemplate) {
|
||||
public ClickHouseExecutionRepository(JdbcTemplate jdbcTemplate, DiagramRepository diagramRepository) {
|
||||
this.jdbcTemplate = jdbcTemplate;
|
||||
this.diagramRepository = diagramRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -138,7 +141,10 @@ public class ClickHouseExecutionRepository implements ExecutionRepository {
|
||||
ps.setObject(col++, inputHeaders); // processor_input_headers
|
||||
ps.setObject(col++, outputHeaders); // processor_output_headers
|
||||
ps.setObject(col++, diagramNodeIds); // processor_diagram_node_ids
|
||||
ps.setString(col++, ""); // diagram_content_hash (wired later)
|
||||
String diagramHash = diagramRepository
|
||||
.findContentHashForRoute(exec.getRouteId(), "")
|
||||
.orElse("");
|
||||
ps.setString(col++, diagramHash); // diagram_content_hash
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user