Maiara Reinaldo
06/12/2026, 3:25 PMkapa.ai
06/12/2026, 3:26 PMupload_run_results() / dbt_run_results and elementary_test_results — these are described as append-only tables (INSERT only, no deletes or updates). [Cosmos/Athena discussion]
• upload_dbt_artifacts() / artifact metadata tables (dbt_models, dbt_sources, dbt_tests, etc.) — these are NOT append-only. They use a truncate-and-insert (DELETE + INSERT) pattern when the models run. [artifacts write pattern] This is precisely why concurrent writes to these tables cause conflicts across all warehouses.
So your Iceberg analysis about AppendFiles being safe applies to upload_run_results(), but not to upload_dbt_artifacts(), which involves non-retryable destructive operations.
2. Known issues with high-concurrency Iceberg INSERT on Athena? The knowledge sources confirm that Athena + Iceberg is a known problematic combination with Elementary:
> "if I use iceberg tables format, it does not support parallel inserts" [GitHub issue]
Even for append-only operations, Iceberg on Athena has been reported to have issues with parallel inserts at scale. The knowledge sources also note that Elementary has made fixes to properly sequence and clean temp tables/files for Athena — upgrading to the latest Elementary package is recommended. [Athena temp tables]
The knowledge sources do not contain specific data on Glue catalog commit retry behaviour under 50–100 concurrent pod load. I cannot confirm or deny your specific concurrency assumptions at that scale.
3. Re-enabling run results by removing disable_run_results: true Yes, removing disable_run_results: true is the way to re-enable run-level observability. However, given your scale (50–100 concurrent pods), the knowledge sources strongly suggest also setting:
vars:
disable_dbt_artifacts_autoupload: true
and running artifact uploads separately in a single controlled job:
dbt run --select elementary.edr.dbt_artifacts
This decouples the dangerous truncate-and-insert artifact writes from your parallel runs, while allowing append-only run results to flow through the hooks. [recommended pattern]
You may also want to consider chunking inserts to handle large volumes:
vars:
insert_rows_method: chunk
dbt_artifacts_chunk_size: 5000
[chunking fix]
4. Uploading run results outside the on-run-end hook (decoupled approach) The knowledge sources confirm this is not natively supported as of the latest available information:
> "there is no out-of-the-box mechanism to collect artifacts from S3 (or other object storage) and insert them into Elementary tables... This was recognized as a need, and the Elementary team expressed openness to further discussion, but no ready-made solution was provided." [batching discussion]
The idea of reading run_results.json from S3 and ingesting it into Elementary tables has been discussed by community members and the Elementary team, but no supported command or API equivalent to upload-source-freshness exists for run results. [GitHub feature request]
Summary Given your scale, I'd recommend reaching out to the Elementary team directly to discuss the batching/S3 ingestion approach, as they've expressed openness to collaborating on this. [community discussion] 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help., with interactive elementsMaiara Reinaldo
06/12/2026, 3:51 PMkapa.ai
06/12/2026, 3:51 PM