Skip to main content

Troubleshooting

Quick Diagnosis

# Check container status
docker ps | grep schema

# Check recent logs
docker logs enforce-schema --tail 50 2>&1 | grep -i error

# Test schema validation
curl -X POST http://localhost:8080/sensors \
-H "Content-Type: application/json" \
-d '{"sensor_id": "temp-001", "temperature": 72.5}'

Common Issues

Valid data being rejected

Cause: Schema too strict or type mismatch

# Check validation error messages
docker logs enforce-schema --tail 20 2>&1 | grep validation

Fix: Check for type coercion issues:

# Allow string or number for temperature
'temperature':
{
'oneOf':
[{ 'type': 'number' }, { 'type': 'string', 'pattern': '^[0-9.]+$' }],
}

Invalid data not being caught

Cause: Schema missing required fields or validation rules

Fix: Add required array and additionalProperties:

"required": ["sensor_id", "temperature", "timestamp"],
"additionalProperties": false

DLQ not receiving failed messages

Cause: Switch condition not routing to DLQ

Fix: Ensure error path is configured:

- check: meta("validation_error") != ""
output:
kafka: { topic: dlq }
- output:
kafka: { topic: valid-data }

Schema changes breaking pipeline

Cause: Schema updated without version handling

Fix: Support multiple schema versions:

- mapping: |
root.schema_version = this.schema_version.or("v1")
- switch:
- check: this.schema_version == "v2"
processors: [{ json_schema: { schema_path: './schema-v2.json' } }]
- processors: [{ json_schema: { schema_path: './schema-v1.json' } }]

Still stuck?

  1. Add debug logging: logger: {level: DEBUG}
  2. Check the Complete Pipeline for reference config
  3. Review Remove PII for data cleaning patterns