Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.

Reply
shaswat
New Member

Dataset refresh anomaly: API accepted new refresh while one was running

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

  1. Is this a known service-side issue (e.g., refresh job stuck in “ghost state”)?

  2. What’s the best practice to reliably detect this scenario, beyond simply handling 202 vs 409 in automation?

  3. 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

Thanks in advance — really appreciate Microsoft confirmation on whether this is a known issue and guidance on how to mitigate it.

1 ACCEPTED SOLUTION
v-kpoloju-msft
Community Support
Community Support

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.

View solution in original post

1 REPLY 1
v-kpoloju-msft
Community Support
Community Support

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.

Helpful resources

Announcements
FabCon Global Hackathon Carousel

FabCon Global Hackathon

Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors