Applies to:
- Plan:
- Deployment:
Summary
Issue: The S3 exporter produces transientjsonl.gz files that are created and immediately deleted, generating noise in downstream S3 notification pipelines.
Cause: The exporter uses a streaming architecture that uploads files to S3 before the row count is known — if the final batch of an export cycle contains zero rows, the already-uploaded empty file is deleted.
Resolution: This is expected behavior; filter out transient files in your downstream pipeline using one of the approaches below.
When this occurs
Two code paths produce transient files:- End of export cycle — The exporter iterates in batches. The final batch, when the exporter has caught up to current data, returns zero rows. The empty file is deleted after upload.
- Test automation button — Creates and immediately deletes a test file to verify S3 access permissions.
Resolution steps
Filter by object size
Empty gzipped JSONL files are approximately 20 bytes. Skip processing for files below a safe threshold.Check file existence before processing
The delete follows the create almost immediately. AHEAD request confirms the file still exists before triggering downstream logic.
Filter S3 event types
If your notification listener handles bothObjectCreated and ObjectRemoved events, restrict it to ObjectCreated only, then add the existence check above.
In your S3 event notification configuration, set the event filter to:
s3:ObjectRemoved:* triggers.