Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.
Hi community,
We ran into an unusual refresh behavior and would appreciate confirmation from Microsoft or other experts.
Issue observed
A dataset refresh triggered via Logic App + Power BI REST API connector started at 10:47pm and ran unusually long (over 4 hours).
During that time, subsequent refreshes (every ~10 mins) correctly failed with error “another refresh in progress” until ~11:38pm.
Unexpectedly, at 11:48pm, a new refresh request was accepted (202) while the original long-running refresh was still in progress.
After that point, subsequent refresh requests continued to return 202 Accepted as if no conflict existed, even though the original refresh was only terminated manually later.
Why this is concerning
Documentation (Power BI REST API – Refreshes) states that a 409 Conflict should be returned if a refresh is already running.
This anomaly caused false-success signals in our automation (Logic App), which could mislead downstream processes.
Questions
Is this a known service-side issue (e.g., refresh job stuck in “ghost state”)?
What’s the best practice to reliably detect this scenario, beyond simply handling 202 vs 409 in automation?
Has this been observed by others in Premium capacity environments?
Environment details
Power BI workspace capacity: Premium P1
Developer license: Pro
Trigger: Logic App with Power BI REST API connector
Multiple datasets scheduled for refresh every 10 minutes
References for context
@GilbertQ (Power BI MVP) and @v-chuncz-msft (Microsoft Support) — tagging for visibility, as you’ve shared insights on similar refresh issues before.
Thanks in advance — really appreciate Microsoft confirmation on whether this is a known issue and guidance on how to mitigate it.
Solved! Go to Solution.
Hi @shaswat,
Thanks for sharing the detailed breakdown it really helps to understand what happened here. From your description, the key concern is that a long-running refresh (started at 10:47pm) kept going for hours, but after ~50 minutes the API began returning 202 Accepted instead of the expected 409 Conflict. This gave your Logic App the impression that refreshes were successful even though the original job was still active.
This behaviour is not expected per our documentation. Normally, if a refresh is already in progress, the API should return a 409 Conflict. Refer this link: https://learn.microsoft.com/en-us/rest/api/power-bi/datasets/refresh-dataset
What you likely experienced is a refresh that got stuck in a “ghost state” on Premium capacity. In such cases, the service may lose track of the running job and start accepting new refresh requests. While rare, this has been observed in Premium environments.
Validate refresh completion using Get Refresh History API: Instead of relying only on 202 vs 409, check the actual refresh state after triggering a job. Add monitoring for long refreshes: You can use capacity metrics to track unusual refresh durations and set up alerts.
https://learn.microsoft.com/en-in/rest/api/power-bi/datasets/get-refresh-history-in-group
Consider cancelling stuck refreshes: If a refresh runs far beyond expected thresholds, the Cancel Refresh API can help reset the state.
https://learn.microsoft.com/en-in/rest/api/power-bi/datasets/cancel-refresh-in-group
Hope this clears things up. If you have any doubts regarding this, please feel free to ask here. We will be happy to help.
Thank you for using the Microsoft Community Forum.
Hi @shaswat,
Thanks for sharing the detailed breakdown it really helps to understand what happened here. From your description, the key concern is that a long-running refresh (started at 10:47pm) kept going for hours, but after ~50 minutes the API began returning 202 Accepted instead of the expected 409 Conflict. This gave your Logic App the impression that refreshes were successful even though the original job was still active.
This behaviour is not expected per our documentation. Normally, if a refresh is already in progress, the API should return a 409 Conflict. Refer this link: https://learn.microsoft.com/en-us/rest/api/power-bi/datasets/refresh-dataset
What you likely experienced is a refresh that got stuck in a “ghost state” on Premium capacity. In such cases, the service may lose track of the running job and start accepting new refresh requests. While rare, this has been observed in Premium environments.
Validate refresh completion using Get Refresh History API: Instead of relying only on 202 vs 409, check the actual refresh state after triggering a job. Add monitoring for long refreshes: You can use capacity metrics to track unusual refresh durations and set up alerts.
https://learn.microsoft.com/en-in/rest/api/power-bi/datasets/get-refresh-history-in-group
Consider cancelling stuck refreshes: If a refresh runs far beyond expected thresholds, the Cancel Refresh API can help reset the state.
https://learn.microsoft.com/en-in/rest/api/power-bi/datasets/cancel-refresh-in-group
Hope this clears things up. If you have any doubts regarding this, please feel free to ask here. We will be happy to help.
Thank you for using the Microsoft Community Forum.
Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!
Check out the October 2025 Power BI update to learn about new features.
User | Count |
---|---|
8 | |
3 | |
3 | |
3 | |
3 |