This is best Fabric, Power BI, SQL and AI community event. How do we know? The last event sold out! Save €200 with code FABCMTY200.
Register nowA new Data Days event is coming soon! This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. Don't miss out.
We automate some git commits to Github using the Fabric APIs (get status and commit).
Requests to these endpoints have started failing frequently - but not deterministically - with an HTTP status code of 500.
Example response:
{
'requestId': '<redacted>',
'errorCode': 'GitProviderOperationFailed',
'message': 'Git provider failed to complete the operation.', 'isRetriable': False
}
I have had to add progressively more retry logic to the notebook (in addition to setting up retires on the notebook itself). Currently, I can successfully loop through all workspaces making commits if I retry up to 5 times with an exponential backoff factor of .5, but this seems excessive.
Has anyone else encountered this degradation or have any idea if there is a cause?
Solved! Go to Solution.
Hi @sean_cochran,
Hope you're doing well!
your retry logic is compensating correctly for a real upstream instability. The fix is to slow down the commit cadence and/or upgrade to a GitHub App token for higher limits.
Try this step by step:
1. Add a delay between workspace commits (throttle proactively)
Even a 1–2 second time.sleep() between workspace iterations significantly reduces the chance of triggering GitHub's secondary limits.
2. Check GitHub rate limit headers
After each API response, inspect X-RateLimit-Remaining and X-RateLimit-Reset headers (if Fabric exposes them). If not, add a deliberate pause when you detect the 500.
3. Use a GitHub App token instead of a PAT
GitHub App installation tokens get higher rate limits that scale with the number of repositories, installations with more than 20 repos get an additional 50 requests/hour per repo, up to 12,500 requests/hour. (GitHub) A PAT is capped at the standard user limits.
4. Serialize commits, don't parallelize
If your notebook commits to multiple workspaces concurrently, switch to sequential processing with a small inter-commit delay.
5. Reduce backoff factor
A factor of 0.5 means waits of 0.5s, 1s, 2s, 4s, 8s... Try a factor of 1 or 2 with a max of 3 retries, this gives GitHub time to clear the secondary limit without being excessive.
Hope this helps! If that works, don't forget to mark as solution and thumbs up in order to help others.
Best regards,
Oussama (Data Consultant - Expert Fabric & Power BI)
Hi @sean_cochran,
Hope you're doing well!
your retry logic is compensating correctly for a real upstream instability. The fix is to slow down the commit cadence and/or upgrade to a GitHub App token for higher limits.
Try this step by step:
1. Add a delay between workspace commits (throttle proactively)
Even a 1–2 second time.sleep() between workspace iterations significantly reduces the chance of triggering GitHub's secondary limits.
2. Check GitHub rate limit headers
After each API response, inspect X-RateLimit-Remaining and X-RateLimit-Reset headers (if Fabric exposes them). If not, add a deliberate pause when you detect the 500.
3. Use a GitHub App token instead of a PAT
GitHub App installation tokens get higher rate limits that scale with the number of repositories, installations with more than 20 repos get an additional 50 requests/hour per repo, up to 12,500 requests/hour. (GitHub) A PAT is capped at the standard user limits.
4. Serialize commits, don't parallelize
If your notebook commits to multiple workspaces concurrently, switch to sequential processing with a small inter-commit delay.
5. Reduce backoff factor
A factor of 0.5 means waits of 0.5s, 1s, 2s, 4s, 8s... Try a factor of 1 or 2 with a max of 3 retries, this gives GitHub time to clear the secondary limit without being excessive.
Hope this helps! If that works, don't forget to mark as solution and thumbs up in order to help others.
Best regards,
Oussama (Data Consultant - Expert Fabric & Power BI)
Thank you for your response! This was very helpful. I'm a little frustrated that Microsoft's wrapper around the Github API has these hidden constraints. Passing on another system's rate limiting behavior without documenting it is poor practice. Regardless, I appreciate your help! I'll add in delays between workspaces and handle things sequentially.
Check out the April 2026 Fabric update to learn about new features.
Sign up to receive a private message when registration opens and key events begin.
| User | Count |
|---|---|
| 12 | |
| 11 | |
| 8 | |
| 6 | |
| 5 |
| User | Count |
|---|---|
| 20 | |
| 16 | |
| 11 | |
| 10 | |
| 9 |