Forum Discussion
How to reset Eventhouse Ingestion from Batching to Streaming ?
Hi everyone,
I am experiencing a persistent latency issue in our Microsoft Fabric Eventhouse. A table that was previously performing perfectly has suddenly "downgraded" its ingestion path from Streaming to Batching and refuses to recover.
The Situation:
The Problem: In our PROD Eventhouse, ingestion latency is stuck at 12–15 seconds. The table is generating 45+ shards (extents) every 10 minutes, confirming it is in Batching Mode.
The Discrepancy: Our DEV Eventhouse (identical schema and higher data volume) is still Streaming perfectly with ~5-second latency and 0 shards created per 10 minutes.
The History: PROD was working fine (5s latency) and then switched to this slow Batching state on its own without any schema or policy changes.
What we have verified:
Streaming Policy: Both DEV and PROD have streamingingestion enabled.
Batching Policy: We tested various ingestionbatching settings in a separate environment. We confirmed that the 12s latency in PROD is a result of the Batching Path overhead
Unable to restore streaming: Running .alter table ... streamingingestion enable in PROD does not trigger a return to the Streaming.
Our Questions:
Why would an Eventhouse suddenly "blacklist" a table from the Streaming path and move it to permanent Batching if the Capacity (CU) is healthy (~50%)?
How do we reverse this process? Once a table is stuck in this "Permanent Batching" state, what is the specific command or workflow to force the Eventhouse to re-evaluate it for the Streaming (Fast) Lane?
We need to restore the 5-second latency to meet our real-time requirements.
Any insights into the internal health-check logic of the Eventhouse would be incredibly helpful.
Thank you !
Hi lavginqo ,
Based on your findings, the root cause is the update policy on the PROD table using the ingestion_time() function, which is not supported with streaming ingestion. Update policy queries execute after ingestion and are subject to streaming ingestion restrictions, therefore ingestion‑context functions such as ingestion_time(), which are evaluated only during ingestion, are not available in update policies. When such an incompatibility is detected, the engine automatically routes ingestion through the batching path to ensure correctness, and this will persist regardless of re enabling the streaming ingestion policy. This also explains why your DEV environment continues to work as expected, since it does not have the same update policy defined.
To restore low latency streaming ingestion, the recommended approach is to modify or remove the update policy so that it no longer uses ingestion_time(). As a best practice, you can separate concerns by keeping the landing table optimized for streaming without update policies or unsupported functions and applying any transformation logic, including time based calculations, in downstream tables or processes. For validation, you may temporarily disable the update policy in PROD and re enable streaming ingestion to confirm that latency returns to expected levels. Once confirmed, you can redesign the update logic in a way that is compatible with streaming ingestion.
Hope this helps.
Thank you.Hi arabalca,
We found a difference in the update policy in Prod.
There was an : order by ingestion_time() desc in the update policy which was apparently adding to the delay
After removing that piece of code- the latency is now gone.
But your response was very very helpful to help us find the problem using the ingestion failure query.
Thanks
15 Replies
- lavginqo2Frequent Visitor
Hi arabalca
Thank you for the detailed steps !
Unfortunately, at this point we can't do any testing in Prod directly as the system is operational.
But I have noted your suggestions and will check if and when we can try them. I will post the results as soon as I can.
Thank you so much !
- v-echaithra
Community Support
Hi lavginqo ,
Based on your findings, the root cause is the update policy on the PROD table using the ingestion_time() function, which is not supported with streaming ingestion. Update policy queries execute after ingestion and are subject to streaming ingestion restrictions, therefore ingestion‑context functions such as ingestion_time(), which are evaluated only during ingestion, are not available in update policies. When such an incompatibility is detected, the engine automatically routes ingestion through the batching path to ensure correctness, and this will persist regardless of re enabling the streaming ingestion policy. This also explains why your DEV environment continues to work as expected, since it does not have the same update policy defined.
To restore low latency streaming ingestion, the recommended approach is to modify or remove the update policy so that it no longer uses ingestion_time(). As a best practice, you can separate concerns by keeping the landing table optimized for streaming without update policies or unsupported functions and applying any transformation logic, including time based calculations, in downstream tables or processes. For validation, you may temporarily disable the update policy in PROD and re enable streaming ingestion to confirm that latency returns to expected levels. Once confirmed, you can redesign the update logic in a way that is compatible with streaming ingestion.
Hope this helps.
Thank you.- lavginqo2Frequent Visitor
Hi v-echaithra
Thanks for your inputs !
Please note that Dev enviornment has the same update policy as well.
Thanks
- v-echaithra
Community Support
Hi lavginqo2 ,
Just following up to see if the Response provided by community members were helpful in addressing the issue. if the issue still persists Feel free to reach out if you need any further clarification or assistance.
Best regards,
Chaithra E. - lavginqo3Regular Visitor
Hi arabalca,
We found a difference in the update policy in Prod.
There was an : order by ingestion_time() desc in the update policy which was apparently adding to the delay
After removing that piece of code- the latency is now gone.
But your response was very very helpful to help us find the problem using the ingestion failure query.
Thanks
- arabalca
Super User
Hola lavginqo3 ,
Me alegro por ti. Muchas gracias por darle "me gusta" a mi publicación, lo aprecio mucho.
Si mis respuestas te ayudaron a resolver el problema, te agradecería que indicaras que te gustan las diferentes respuestas y que marcaras la solución como aceptada para que otros usuarios puedan aprender de ella.
¡Gracias de nuevo!
- lavginqo3Regular Visitor
- v-echaithra
Community Support
Hi lavginqo ,
Thanks for letting us know that the issue is resolved, glad to hear the latency has been addressed. Please feel free to reach out if you need any further assistance.