-
Notifications
You must be signed in to change notification settings - Fork 398
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Exporter: Add retries for Search
, ReadContext
and Import
operations when importing the resource
#3202
Conversation
…en importing the resource Under a very high load, Databricks backend may not answer on time, or return specific errors, so it makes sense to retry operation few times. This PR uses "naive" implementation, I need to play a bit more with `retries` package before adopting it
@mgyucht @tanmay-db It would be really useful to get this merged before the release... |
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #3202 +/- ##
==========================================
+ Coverage 83.57% 83.58% +0.01%
==========================================
Files 168 168
Lines 15021 15063 +42
==========================================
+ Hits 12554 12591 +37
- Misses 1729 1733 +4
- Partials 738 739 +1
|
looking |
b126bc0
to
6fec3ff
Compare
Search
, ReadContext
and Import
operations when importing the resourceSearch
, ReadContext
and Import
operations when importing the resource
Search
, ReadContext
and Import
operations when importing the resourceSearch
, ReadContext
and Import
operations when importing the resource
@@ -758,7 +758,7 @@ func (ic *importContext) generateAndWriteResources(sh *os.File) { | |||
for i, r := range resources { | |||
ic.waitGroup.Add(1) | |||
resourcesChan <- r | |||
if i%50 == 0 { | |||
if i%500 == 0 { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am guessing this is because there are too many items in logs so we want to minimise them?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, it's just too much
return false | ||
} | ||
|
||
func runWithRetries[ERR any](runFunc func() ERR, msg string) ERR { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rest looks good to me, only concern is that we can use https://github.com/databricks/databricks-sdk-go/blob/main/retries/retries.go here otherwise, we would have to maintain this retry mechanism separately.
If the change required is urgent and using retries would require major refactoring, then we can go ahead with this. What do you think? @mgyucht
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
retries
package is a convenience, not a core part of the SDK. The retries package does not expose anything to e.g. print when a retry is taking place or print a specific message after including the total number of retries that have happened, so if @alexott needs these, it's perfectly fine for him to implement his own retry logic.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Though @alexott curious if we added things like WithMaxRetries
or WithRetryOnErrorSubstrings
if that would satisfy your need.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yep, let discuss if we can make something generic...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No problem
### New Features and Improvements * Exporter: timestamps are now added to log entries ([#3146](#3146)). * Validate metastore id for databricks_grant and databricks_grants resources ([#3159](#3159)). * Exporter: Skip emitting of clusters that come from more cluster sources ([#3161](#3161)). * Fix typo in docs ([#3166](#3166)). * Migrate cluster schema to use the go-sdk struct ([#3076](#3076)). * Introduce Generic Settings Resource ([#2997](#2997)). * Update actions/setup-go to v5 ([#3154](#3154)). * Change default branch from `master` to `main` ([#3174](#3174)). * Add .codegen.json configuration ([#3180](#3180)). * Exporter: performance improvements for big workspaces ([#3167](#3167)). * update ([#3192](#3192)). * Exporter: fix generation of cluster policy resources ([#3185](#3185)). * Fix unit test ([#3201](#3201)). * Suppress diff should apply to new fields added in the same chained call to CustomizableSchema ([#3200](#3200)). * Various documentation updates ([#3198](#3198)). * Use common.Resource consistently throughout the provider ([#3193](#3193)). * Extending customizable schema with `AtLeastOneOf`, `ExactlyOneOf`, `RequiredWith` ([#3182](#3182)). * Fix `databricks_connection` regression when creating without owner ([#3186](#3186)). * add test code for job task order ([#3183](#3183)). * Allow using empty strings as job parameters ([#3158](#3158)). * Fix notebook parameters in acceptance test ([#3205](#3205)). * Exporter: Add retries for `Search`, `ReadContext` and `Import` operations when importing the resource ([#3202](#3202)). * Fixed updating owners for UC resources ([#3189](#3189)). * Adds `databricks_volumes` as data source ([#3150](#3150)). ### Documentation Changes ### Exporter ### Internal Changes
* Release v1.35.1 ### New Features and Improvements * Exporter: timestamps are now added to log entries ([#3146](#3146)). * Validate metastore id for databricks_grant and databricks_grants resources ([#3159](#3159)). * Exporter: Skip emitting of clusters that come from more cluster sources ([#3161](#3161)). * Fix typo in docs ([#3166](#3166)). * Migrate cluster schema to use the go-sdk struct ([#3076](#3076)). * Introduce Generic Settings Resource ([#2997](#2997)). * Update actions/setup-go to v5 ([#3154](#3154)). * Change default branch from `master` to `main` ([#3174](#3174)). * Add .codegen.json configuration ([#3180](#3180)). * Exporter: performance improvements for big workspaces ([#3167](#3167)). * update ([#3192](#3192)). * Exporter: fix generation of cluster policy resources ([#3185](#3185)). * Fix unit test ([#3201](#3201)). * Suppress diff should apply to new fields added in the same chained call to CustomizableSchema ([#3200](#3200)). * Various documentation updates ([#3198](#3198)). * Use common.Resource consistently throughout the provider ([#3193](#3193)). * Extending customizable schema with `AtLeastOneOf`, `ExactlyOneOf`, `RequiredWith` ([#3182](#3182)). * Fix `databricks_connection` regression when creating without owner ([#3186](#3186)). * add test code for job task order ([#3183](#3183)). * Allow using empty strings as job parameters ([#3158](#3158)). * Fix notebook parameters in acceptance test ([#3205](#3205)). * Exporter: Add retries for `Search`, `ReadContext` and `Import` operations when importing the resource ([#3202](#3202)). * Fixed updating owners for UC resources ([#3189](#3189)). * Adds `databricks_volumes` as data source ([#3150](#3150)). ### Documentation Changes ### Exporter ### Internal Changes * upd * readable * upd * upd
Changes
Under a very high load, Databricks backend may not answer on time, or return specific errors, so it makes sense to retry operation few times.
This PR uses "naive" implementation, I need to play a bit more with
retries
package before adopting itTests
make test
run locallydocs/
folderinternal/acceptance