fix: prefer cameleer.exchangeId MDC key for log correlation
The agent now sets cameleer.exchangeId in MDC (persists across processor executions, unlike Camel's camel.exchangeId which is scoped to MDCUnitOfWork). For ON_COMPLETION exchange copies, the agent uses the parent's exchange ID. Server changes: - ClickHouseLogStore ingestion: extract exchange_id preferring cameleer.exchangeId, falling back to camel.exchangeId - ClickHouseLogStore search: match exchangeId filter against exchange_id column OR cameleer.exchangeId OR camel.exchangeId in MDC - Update CLAUDE.md with log exchange correlation documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -62,7 +62,7 @@ public class ClickHouseLogStore implements LogIndex {
|
||||
ps.setString(9, entry.getStackTrace() != null ? entry.getStackTrace() : "");
|
||||
|
||||
Map<String, String> mdc = entry.getMdc() != null ? entry.getMdc() : Collections.emptyMap();
|
||||
String exchangeId = mdc.getOrDefault("camel.exchangeId", "");
|
||||
String exchangeId = mdc.getOrDefault("cameleer.exchangeId", mdc.getOrDefault("camel.exchangeId", ""));
|
||||
ps.setString(10, exchangeId);
|
||||
ps.setObject(11, mdc);
|
||||
ps.setString(12, entry.getSource() != null ? entry.getSource() : "app");
|
||||
@@ -93,7 +93,7 @@ public class ClickHouseLogStore implements LogIndex {
|
||||
ps.setString(10, entry.getStackTrace() != null ? entry.getStackTrace() : "");
|
||||
|
||||
Map<String, String> mdc = entry.getMdc() != null ? entry.getMdc() : Collections.emptyMap();
|
||||
String exchangeId = mdc.getOrDefault("camel.exchangeId", "");
|
||||
String exchangeId = mdc.getOrDefault("cameleer.exchangeId", mdc.getOrDefault("camel.exchangeId", ""));
|
||||
ps.setString(11, exchangeId);
|
||||
ps.setObject(12, mdc);
|
||||
ps.setString(13, entry.getSource() != null ? entry.getSource() : "app");
|
||||
@@ -126,7 +126,10 @@ public class ClickHouseLogStore implements LogIndex {
|
||||
}
|
||||
|
||||
if (request.exchangeId() != null && !request.exchangeId().isEmpty()) {
|
||||
baseConditions.add("(exchange_id = ? OR (mapContains(mdc, 'camel.exchangeId') AND mdc['camel.exchangeId'] = ?))");
|
||||
baseConditions.add("(exchange_id = ?" +
|
||||
" OR (mapContains(mdc, 'cameleer.exchangeId') AND mdc['cameleer.exchangeId'] = ?)" +
|
||||
" OR (mapContains(mdc, 'camel.exchangeId') AND mdc['camel.exchangeId'] = ?))");
|
||||
baseParams.add(request.exchangeId());
|
||||
baseParams.add(request.exchangeId());
|
||||
baseParams.add(request.exchangeId());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user