Skip to content
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

Lock around field accessibility changes #247

Merged

Conversation

webmakersteve
Copy link
Contributor

Adjusts the field accessibility changes so they are protected behind a lock. Epic was running into this when we concurrently created WorkspaceClients and they would often read properties that another thread had re-set to unaccessible.

Changes

Synchronize on the field object before we mutate and read it to ensure accessibility maintains throughout the code block

Tests

No new tests. Nothing new added so existing tests should ensure logic is correct for config reading. Testing multithreaded races in this case would prove difficult.

@mgyucht
Copy link
Contributor

mgyucht commented Mar 15, 2024

@webmakersteve Thanks for making this PR! We require all commits to be signed in this repo. Can you please setup git commit signing following the instructions at https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits, sign this commit & force push?

Copy link
Contributor

@mgyucht mgyucht left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thanks for this!

@webmakersteve webmakersteve force-pushed the fix-field-accessibility-race branch from b9af8aa to 12a99b2 Compare March 15, 2024 19:55
@webmakersteve
Copy link
Contributor Author

Signed the commit!

@mgyucht mgyucht enabled auto-merge April 2, 2024 15:30
@mgyucht mgyucht added this pull request to the merge queue Apr 2, 2024
Merged via the queue into databricks:main with commit 6243567 Apr 2, 2024
9 checks passed
mgyucht added a commit that referenced this pull request Apr 12, 2024
### Improvements and Bug Fixes
* Introduce more specific exceptions, like `NotFound`, `AlreadyExists`, `BadRequest`, `PermissionDenied`, `InternalError`, and others ([#185](#185), [#257](#257)).
* Lock around field accessibility changes ([#247](#247)).
* Fix Changelog ([#258](#258)).
* Support post with no body for APIs ([#262](#262)).

API Changes:

 * Changed `cancelRefresh()` method for `workspaceClient.lakehouseMonitors()` service with new required argument order.
 * Changed `create()` method for `workspaceClient.lakehouseMonitors()` service with new required argument order.
 * Changed `delete()` method for `workspaceClient.lakehouseMonitors()` service with new required argument order.
 * Changed `get()` method for `workspaceClient.lakehouseMonitors()` service with new required argument order.
 * Changed `getRefresh()` method for `workspaceClient.lakehouseMonitors()` service with new required argument order.
 * Changed `listRefreshes()` method for `workspaceClient.lakehouseMonitors()` service with new required argument order.
 * Changed `runRefresh()` method for `workspaceClient.lakehouseMonitors()` service with new required argument order.
 * Changed `update()` method for `workspaceClient.lakehouseMonitors()` service with new required argument order.
 * Removed `com.databricks.sdk.service.catalog.AzureManagedIdentity` class.
 * Removed `fullName` field for `com.databricks.sdk.service.catalog.CancelRefreshRequest`.
 * Added `tableName` field for `com.databricks.sdk.service.catalog.CancelRefreshRequest`.
 * Changed `customMetrics` field for `com.databricks.sdk.service.catalog.CreateMonitor` to `com.databricks.sdk.service.catalog.MonitorMetricList` class.
 * Removed `fullName` field for `com.databricks.sdk.service.catalog.CreateMonitor`.
 * Changed `inferenceLog` field for `com.databricks.sdk.service.catalog.CreateMonitor` to `com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
 * Changed `notifications` field for `com.databricks.sdk.service.catalog.CreateMonitor` to `com.databricks.sdk.service.catalog.MonitorNotifications` class.
 * Changed `snapshot` field for `com.databricks.sdk.service.catalog.CreateMonitor` to `Object` class.
 * Changed `timeSeries` field for `com.databricks.sdk.service.catalog.CreateMonitor` to `com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
 * Added `tableName` field for `com.databricks.sdk.service.catalog.CreateMonitor`.
 * Changed `azureManagedIdentity` field for `com.databricks.sdk.service.catalog.CreateStorageCredential` to `com.databricks.sdk.service.catalog.AzureManagedIdentityRequest` class.
 * Removed `fullName` field for `com.databricks.sdk.service.catalog.DeleteLakehouseMonitorRequest`.
 * Added `tableName` field for `com.databricks.sdk.service.catalog.DeleteLakehouseMonitorRequest`.
 * Removed `fullName` field for `com.databricks.sdk.service.catalog.GetLakehouseMonitorRequest`.
 * Added `tableName` field for `com.databricks.sdk.service.catalog.GetLakehouseMonitorRequest`.
 * Removed `fullName` field for `com.databricks.sdk.service.catalog.GetRefreshRequest`.
 * Added `tableName` field for `com.databricks.sdk.service.catalog.GetRefreshRequest`.
 * Removed `fullName` field for `com.databricks.sdk.service.catalog.ListRefreshesRequest`.
 * Added `tableName` field for `com.databricks.sdk.service.catalog.ListRefreshesRequest`.
 * Changed `quartzCronExpression` field for `com.databricks.sdk.service.catalog.MonitorCronSchedule` to be required.
 * Changed `timezoneId` field for `com.databricks.sdk.service.catalog.MonitorCronSchedule` to be required.
 * Removed `com.databricks.sdk.service.catalog.MonitorCustomMetric` class.
 * Removed `com.databricks.sdk.service.catalog.MonitorCustomMetricType` class.
 * Removed `com.databricks.sdk.service.catalog.MonitorDestinations` class.
 * Removed `com.databricks.sdk.service.catalog.MonitorInferenceLogProfileType` class.
 * Removed `com.databricks.sdk.service.catalog.MonitorInferenceLogProfileTypeProblemType` class.
 * Changed `customMetrics` field for `com.databricks.sdk.service.catalog.MonitorInfo` to `com.databricks.sdk.service.catalog.MonitorMetricList` class.
 * Changed `driftMetricsTableName` field for `com.databricks.sdk.service.catalog.MonitorInfo` to be required.
 * Changed `inferenceLog` field for `com.databricks.sdk.service.catalog.MonitorInfo` to `com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
 * Changed `monitorVersion` field for `com.databricks.sdk.service.catalog.MonitorInfo` to be required.
 * Changed `notifications` field for `com.databricks.sdk.service.catalog.MonitorInfo` to `com.databricks.sdk.service.catalog.MonitorNotifications` class.
 * Changed `profileMetricsTableName` field for `com.databricks.sdk.service.catalog.MonitorInfo` to be required.
 * Changed `snapshot` field for `com.databricks.sdk.service.catalog.MonitorInfo` to `Object` class.
 * Changed `status` field for `com.databricks.sdk.service.catalog.MonitorInfo` to be required.
 * Changed `tableName` field for `com.databricks.sdk.service.catalog.MonitorInfo` to be required.
 * Changed `timeSeries` field for `com.databricks.sdk.service.catalog.MonitorInfo` to `com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
 * Removed `com.databricks.sdk.service.catalog.MonitorNotificationsConfig` class.
 * Changed `refreshId` field for `com.databricks.sdk.service.catalog.MonitorRefreshInfo` to be required.
 * Changed `startTimeMs` field for `com.databricks.sdk.service.catalog.MonitorRefreshInfo` to be required.
 * Changed `state` field for `com.databricks.sdk.service.catalog.MonitorRefreshInfo` to be required.
 * Added `trigger` field for `com.databricks.sdk.service.catalog.MonitorRefreshInfo`.
 * Removed `Object` class.
 * Removed `com.databricks.sdk.service.catalog.MonitorTimeSeriesProfileType` class.
 * Removed `fullName` field for `com.databricks.sdk.service.catalog.RunRefreshRequest`.
 * Added `tableName` field for `com.databricks.sdk.service.catalog.RunRefreshRequest`.
 * Changed `azureManagedIdentity` field for `com.databricks.sdk.service.catalog.StorageCredentialInfo` to `com.databricks.sdk.service.catalog.AzureManagedIdentityResponse` class.
 * Removed `name` field for `com.databricks.sdk.service.catalog.TableRowFilter`.
 * Added `functionName` field for `com.databricks.sdk.service.catalog.TableRowFilter`.
 * Changed `customMetrics` field for `com.databricks.sdk.service.catalog.UpdateMonitor` to `com.databricks.sdk.service.catalog.MonitorMetricList` class.
 * Removed `fullName` field for `com.databricks.sdk.service.catalog.UpdateMonitor`.
 * Changed `inferenceLog` field for `com.databricks.sdk.service.catalog.UpdateMonitor` to `com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
 * Changed `notifications` field for `com.databricks.sdk.service.catalog.UpdateMonitor` to `com.databricks.sdk.service.catalog.MonitorNotifications` class.
 * Changed `snapshot` field for `com.databricks.sdk.service.catalog.UpdateMonitor` to `Object` class.
 * Changed `timeSeries` field for `com.databricks.sdk.service.catalog.UpdateMonitor` to `com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
 * Added `tableName` field for `com.databricks.sdk.service.catalog.UpdateMonitor`.
 * Changed `azureManagedIdentity` field for `com.databricks.sdk.service.catalog.UpdateStorageCredential` to `com.databricks.sdk.service.catalog.AzureManagedIdentityResponse` class.
 * Changed `azureManagedIdentity` field for `com.databricks.sdk.service.catalog.ValidateStorageCredential` to `com.databricks.sdk.service.catalog.AzureManagedIdentityRequest` class.
 * Removed `operation` field for `com.databricks.sdk.service.catalog.ValidationResult`.
 * Added `awsOperation` field for `com.databricks.sdk.service.catalog.ValidationResult`.
 * Added `azureOperation` field for `com.databricks.sdk.service.catalog.ValidationResult`.
 * Added `gcpOperation` field for `com.databricks.sdk.service.catalog.ValidationResult`.
 * Removed `com.databricks.sdk.service.catalog.ValidationResultOperation` class.
 * Added `com.databricks.sdk.service.catalog.AzureManagedIdentityRequest` class.
 * Added `com.databricks.sdk.service.catalog.AzureManagedIdentityResponse` class.
 * Added `com.databricks.sdk.service.catalog.MonitorDestination` class.
 * Added `com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
 * Added `com.databricks.sdk.service.catalog.MonitorInferenceLogProblemType` class.
 * Added `com.databricks.sdk.service.catalog.MonitorMetric` class.
 * Added `com.databricks.sdk.service.catalog.MonitorMetricType` class.
 * Added `com.databricks.sdk.service.catalog.MonitorNotifications` class.
 * Added `com.databricks.sdk.service.catalog.MonitorRefreshInfoTrigger` class.
 * Added `Object` class.
 * Added `com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
 * Added `com.databricks.sdk.service.catalog.ValidationResultAwsOperation` class.
 * Added `com.databricks.sdk.service.catalog.ValidationResultAzureOperation` class.
 * Added `com.databricks.sdk.service.catalog.ValidationResultGcpOperation` class.
 * Added `cloneFrom` field for `com.databricks.sdk.service.compute.ClusterSpec`.
 * Removed `com.databricks.sdk.service.compute.ComputeSpec` class.
 * Removed `com.databricks.sdk.service.compute.ComputeSpecKind` class.
 * Added `cloneFrom` field for `com.databricks.sdk.service.compute.CreateCluster`.
 * Added `cloneFrom` field for `com.databricks.sdk.service.compute.EditCluster`.
 * Added `com.databricks.sdk.service.compute.CloneCluster` class.
 * Added `com.databricks.sdk.service.compute.Environment` class.
 * Changed `update()` method for `accountClient.workspaceAssignment()` service to return `com.databricks.sdk.service.iam.PermissionAssignment` class.
 * Removed `Object` class.
 * Removed `computeKey` field for `com.databricks.sdk.service.jobs.ClusterSpec`.
 * Removed `compute` field for `com.databricks.sdk.service.jobs.CreateJob`.
 * Added `environments` field for `com.databricks.sdk.service.jobs.CreateJob`.
 * Removed `com.databricks.sdk.service.jobs.JobCompute` class.
 * Removed `compute` field for `com.databricks.sdk.service.jobs.JobSettings`.
 * Added `environments` field for `com.databricks.sdk.service.jobs.JobSettings`.
 * Removed `computeKey` field for `com.databricks.sdk.service.jobs.RunTask`.
 * Removed `com.databricks.sdk.service.jobs.TableTriggerConfiguration` class.
 * Removed `computeKey` field for `com.databricks.sdk.service.jobs.Task`.
 * Added `environmentKey` field for `com.databricks.sdk.service.jobs.Task`.
 * Changed `table` field for `com.databricks.sdk.service.jobs.TriggerSettings` to `com.databricks.sdk.service.jobs.TableUpdateTriggerConfiguration` class.
 * Changed `tableUpdate` field for `com.databricks.sdk.service.jobs.TriggerSettings` to `com.databricks.sdk.service.jobs.TableUpdateTriggerConfiguration` class.
 * Added `com.databricks.sdk.service.jobs.JobEnvironment` class.
 * Added `com.databricks.sdk.service.jobs.TableUpdateTriggerConfiguration` class.
 * Added `com.databricks.sdk.service.marketplace` package.

OpenAPI SHA: 94684175b8bd65f8701f89729351f8069e8309c9, Date: 2024-04-11
@mgyucht mgyucht mentioned this pull request Apr 12, 2024
github-merge-queue bot pushed a commit that referenced this pull request Apr 12, 2024
### Improvements and Bug Fixes
* Introduce more specific exceptions, like `NotFound`, `AlreadyExists`,
`BadRequest`, `PermissionDenied`, `InternalError`, and others
([#185](#185),
[#257](#257)).
* Lock around field accessibility changes
([#247](#247)).
* Fix Changelog
([#258](#258)).
* Support post with no body for APIs
([#262](#262)).

API Changes:

* Changed `cancelRefresh()` method for
`workspaceClient.lakehouseMonitors()` service with new required argument
order.
* Changed `create()` method for `workspaceClient.lakehouseMonitors()`
service with new required argument order.
* Changed `delete()` method for `workspaceClient.lakehouseMonitors()`
service with new required argument order.
* Changed `get()` method for `workspaceClient.lakehouseMonitors()`
service with new required argument order.
* Changed `getRefresh()` method for
`workspaceClient.lakehouseMonitors()` service with new required argument
order.
* Changed `listRefreshes()` method for
`workspaceClient.lakehouseMonitors()` service with new required argument
order.
* Changed `runRefresh()` method for
`workspaceClient.lakehouseMonitors()` service with new required argument
order.
* Changed `update()` method for `workspaceClient.lakehouseMonitors()`
service with new required argument order.
* Removed `com.databricks.sdk.service.catalog.AzureManagedIdentity`
class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.CancelRefreshRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.CancelRefreshRequest`.
* Changed `customMetrics` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to
`com.databricks.sdk.service.catalog.MonitorMetricList` class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.CreateMonitor`.
* Changed `inferenceLog` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to
`com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
* Changed `notifications` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to
`com.databricks.sdk.service.catalog.MonitorNotifications` class.
* Changed `snapshot` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to `Object` class.
* Changed `timeSeries` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to
`com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.CreateMonitor`.
* Changed `azureManagedIdentity` field for
`com.databricks.sdk.service.catalog.CreateStorageCredential` to
`com.databricks.sdk.service.catalog.AzureManagedIdentityRequest` class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.DeleteLakehouseMonitorRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.DeleteLakehouseMonitorRequest`.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.GetLakehouseMonitorRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.GetLakehouseMonitorRequest`.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.GetRefreshRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.GetRefreshRequest`.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.ListRefreshesRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.ListRefreshesRequest`.
* Changed `quartzCronExpression` field for
`com.databricks.sdk.service.catalog.MonitorCronSchedule` to be required.
* Changed `timezoneId` field for
`com.databricks.sdk.service.catalog.MonitorCronSchedule` to be required.
* Removed `com.databricks.sdk.service.catalog.MonitorCustomMetric`
class.
* Removed `com.databricks.sdk.service.catalog.MonitorCustomMetricType`
class.
* Removed `com.databricks.sdk.service.catalog.MonitorDestinations`
class.
* Removed
`com.databricks.sdk.service.catalog.MonitorInferenceLogProfileType`
class.
* Removed
`com.databricks.sdk.service.catalog.MonitorInferenceLogProfileTypeProblemType`
class.
* Changed `customMetrics` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to
`com.databricks.sdk.service.catalog.MonitorMetricList` class.
* Changed `driftMetricsTableName` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `inferenceLog` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to
`com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
* Changed `monitorVersion` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `notifications` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to
`com.databricks.sdk.service.catalog.MonitorNotifications` class.
* Changed `profileMetricsTableName` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `snapshot` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to `Object` class.
* Changed `status` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `tableName` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `timeSeries` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to
`com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
* Removed
`com.databricks.sdk.service.catalog.MonitorNotificationsConfig` class.
* Changed `refreshId` field for
`com.databricks.sdk.service.catalog.MonitorRefreshInfo` to be required.
* Changed `startTimeMs` field for
`com.databricks.sdk.service.catalog.MonitorRefreshInfo` to be required.
* Changed `state` field for
`com.databricks.sdk.service.catalog.MonitorRefreshInfo` to be required.
* Added `trigger` field for
`com.databricks.sdk.service.catalog.MonitorRefreshInfo`.
 * Removed `Object` class.
* Removed
`com.databricks.sdk.service.catalog.MonitorTimeSeriesProfileType` class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.RunRefreshRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.RunRefreshRequest`.
* Changed `azureManagedIdentity` field for
`com.databricks.sdk.service.catalog.StorageCredentialInfo` to
`com.databricks.sdk.service.catalog.AzureManagedIdentityResponse` class.
* Removed `name` field for
`com.databricks.sdk.service.catalog.TableRowFilter`.
* Added `functionName` field for
`com.databricks.sdk.service.catalog.TableRowFilter`.
* Changed `customMetrics` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to
`com.databricks.sdk.service.catalog.MonitorMetricList` class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.UpdateMonitor`.
* Changed `inferenceLog` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to
`com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
* Changed `notifications` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to
`com.databricks.sdk.service.catalog.MonitorNotifications` class.
* Changed `snapshot` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to `Object` class.
* Changed `timeSeries` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to
`com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.UpdateMonitor`.
* Changed `azureManagedIdentity` field for
`com.databricks.sdk.service.catalog.UpdateStorageCredential` to
`com.databricks.sdk.service.catalog.AzureManagedIdentityResponse` class.
* Changed `azureManagedIdentity` field for
`com.databricks.sdk.service.catalog.ValidateStorageCredential` to
`com.databricks.sdk.service.catalog.AzureManagedIdentityRequest` class.
* Removed `operation` field for
`com.databricks.sdk.service.catalog.ValidationResult`.
* Added `awsOperation` field for
`com.databricks.sdk.service.catalog.ValidationResult`.
* Added `azureOperation` field for
`com.databricks.sdk.service.catalog.ValidationResult`.
* Added `gcpOperation` field for
`com.databricks.sdk.service.catalog.ValidationResult`.
* Removed `com.databricks.sdk.service.catalog.ValidationResultOperation`
class.
* Added `com.databricks.sdk.service.catalog.AzureManagedIdentityRequest`
class.
* Added
`com.databricks.sdk.service.catalog.AzureManagedIdentityResponse` class.
 * Added `com.databricks.sdk.service.catalog.MonitorDestination` class.
 * Added `com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
* Added
`com.databricks.sdk.service.catalog.MonitorInferenceLogProblemType`
class.
 * Added `com.databricks.sdk.service.catalog.MonitorMetric` class.
 * Added `com.databricks.sdk.service.catalog.MonitorMetricType` class.
* Added `com.databricks.sdk.service.catalog.MonitorNotifications` class.
* Added `com.databricks.sdk.service.catalog.MonitorRefreshInfoTrigger`
class.
 * Added `Object` class.
 * Added `com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
* Added
`com.databricks.sdk.service.catalog.ValidationResultAwsOperation` class.
* Added
`com.databricks.sdk.service.catalog.ValidationResultAzureOperation`
class.
* Added
`com.databricks.sdk.service.catalog.ValidationResultGcpOperation` class.
* Added `cloneFrom` field for
`com.databricks.sdk.service.compute.ClusterSpec`.
 * Removed `com.databricks.sdk.service.compute.ComputeSpec` class.
 * Removed `com.databricks.sdk.service.compute.ComputeSpecKind` class.
* Added `cloneFrom` field for
`com.databricks.sdk.service.compute.CreateCluster`.
* Added `cloneFrom` field for
`com.databricks.sdk.service.compute.EditCluster`.
 * Added `com.databricks.sdk.service.compute.CloneCluster` class.
 * Added `com.databricks.sdk.service.compute.Environment` class.
* Changed `update()` method for `accountClient.workspaceAssignment()`
service to return `com.databricks.sdk.service.iam.PermissionAssignment`
class.
 * Removed `Object` class.
* Removed `computeKey` field for
`com.databricks.sdk.service.jobs.ClusterSpec`.
* Removed `compute` field for
`com.databricks.sdk.service.jobs.CreateJob`.
* Added `environments` field for
`com.databricks.sdk.service.jobs.CreateJob`.
 * Removed `com.databricks.sdk.service.jobs.JobCompute` class.
* Removed `compute` field for
`com.databricks.sdk.service.jobs.JobSettings`.
* Added `environments` field for
`com.databricks.sdk.service.jobs.JobSettings`.
* Removed `computeKey` field for
`com.databricks.sdk.service.jobs.RunTask`.
* Removed `com.databricks.sdk.service.jobs.TableTriggerConfiguration`
class.
* Removed `computeKey` field for `com.databricks.sdk.service.jobs.Task`.
* Added `environmentKey` field for
`com.databricks.sdk.service.jobs.Task`.
* Changed `table` field for
`com.databricks.sdk.service.jobs.TriggerSettings` to
`com.databricks.sdk.service.jobs.TableUpdateTriggerConfiguration` class.
* Changed `tableUpdate` field for
`com.databricks.sdk.service.jobs.TriggerSettings` to
`com.databricks.sdk.service.jobs.TableUpdateTriggerConfiguration` class.
 * Added `com.databricks.sdk.service.jobs.JobEnvironment` class.
* Added
`com.databricks.sdk.service.jobs.TableUpdateTriggerConfiguration` class.
 * Added `com.databricks.sdk.service.marketplace` package.

OpenAPI SHA: 94684175b8bd65f8701f89729351f8069e8309c9, Date: 2024-04-11
vikrantpuppala pushed a commit to vikrantpuppala/databricks-sdk-java that referenced this pull request Apr 23, 2024
Adjusts the field accessibility changes so they are protected behind a
lock. Epic was running into this when we concurrently created
WorkspaceClients and they would often read properties that another
thread had re-set to unaccessible.

## Changes
Synchronize on the `field` object before we mutate and read it to ensure
accessibility maintains throughout the code block

## Tests
No new tests. Nothing new added so existing tests should ensure logic is
correct for config reading. Testing multithreaded races in this case
would prove difficult.
vikrantpuppala pushed a commit to vikrantpuppala/databricks-sdk-java that referenced this pull request Apr 23, 2024
### Improvements and Bug Fixes
* Introduce more specific exceptions, like `NotFound`, `AlreadyExists`,
`BadRequest`, `PermissionDenied`, `InternalError`, and others
([databricks#185](databricks#185),
[databricks#257](databricks#257)).
* Lock around field accessibility changes
([databricks#247](databricks#247)).
* Fix Changelog
([databricks#258](databricks#258)).
* Support post with no body for APIs
([databricks#262](databricks#262)).

API Changes:

* Changed `cancelRefresh()` method for
`workspaceClient.lakehouseMonitors()` service with new required argument
order.
* Changed `create()` method for `workspaceClient.lakehouseMonitors()`
service with new required argument order.
* Changed `delete()` method for `workspaceClient.lakehouseMonitors()`
service with new required argument order.
* Changed `get()` method for `workspaceClient.lakehouseMonitors()`
service with new required argument order.
* Changed `getRefresh()` method for
`workspaceClient.lakehouseMonitors()` service with new required argument
order.
* Changed `listRefreshes()` method for
`workspaceClient.lakehouseMonitors()` service with new required argument
order.
* Changed `runRefresh()` method for
`workspaceClient.lakehouseMonitors()` service with new required argument
order.
* Changed `update()` method for `workspaceClient.lakehouseMonitors()`
service with new required argument order.
* Removed `com.databricks.sdk.service.catalog.AzureManagedIdentity`
class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.CancelRefreshRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.CancelRefreshRequest`.
* Changed `customMetrics` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to
`com.databricks.sdk.service.catalog.MonitorMetricList` class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.CreateMonitor`.
* Changed `inferenceLog` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to
`com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
* Changed `notifications` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to
`com.databricks.sdk.service.catalog.MonitorNotifications` class.
* Changed `snapshot` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to `Object` class.
* Changed `timeSeries` field for
`com.databricks.sdk.service.catalog.CreateMonitor` to
`com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.CreateMonitor`.
* Changed `azureManagedIdentity` field for
`com.databricks.sdk.service.catalog.CreateStorageCredential` to
`com.databricks.sdk.service.catalog.AzureManagedIdentityRequest` class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.DeleteLakehouseMonitorRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.DeleteLakehouseMonitorRequest`.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.GetLakehouseMonitorRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.GetLakehouseMonitorRequest`.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.GetRefreshRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.GetRefreshRequest`.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.ListRefreshesRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.ListRefreshesRequest`.
* Changed `quartzCronExpression` field for
`com.databricks.sdk.service.catalog.MonitorCronSchedule` to be required.
* Changed `timezoneId` field for
`com.databricks.sdk.service.catalog.MonitorCronSchedule` to be required.
* Removed `com.databricks.sdk.service.catalog.MonitorCustomMetric`
class.
* Removed `com.databricks.sdk.service.catalog.MonitorCustomMetricType`
class.
* Removed `com.databricks.sdk.service.catalog.MonitorDestinations`
class.
* Removed
`com.databricks.sdk.service.catalog.MonitorInferenceLogProfileType`
class.
* Removed
`com.databricks.sdk.service.catalog.MonitorInferenceLogProfileTypeProblemType`
class.
* Changed `customMetrics` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to
`com.databricks.sdk.service.catalog.MonitorMetricList` class.
* Changed `driftMetricsTableName` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `inferenceLog` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to
`com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
* Changed `monitorVersion` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `notifications` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to
`com.databricks.sdk.service.catalog.MonitorNotifications` class.
* Changed `profileMetricsTableName` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `snapshot` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to `Object` class.
* Changed `status` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `tableName` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to be required.
* Changed `timeSeries` field for
`com.databricks.sdk.service.catalog.MonitorInfo` to
`com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
* Removed
`com.databricks.sdk.service.catalog.MonitorNotificationsConfig` class.
* Changed `refreshId` field for
`com.databricks.sdk.service.catalog.MonitorRefreshInfo` to be required.
* Changed `startTimeMs` field for
`com.databricks.sdk.service.catalog.MonitorRefreshInfo` to be required.
* Changed `state` field for
`com.databricks.sdk.service.catalog.MonitorRefreshInfo` to be required.
* Added `trigger` field for
`com.databricks.sdk.service.catalog.MonitorRefreshInfo`.
 * Removed `Object` class.
* Removed
`com.databricks.sdk.service.catalog.MonitorTimeSeriesProfileType` class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.RunRefreshRequest`.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.RunRefreshRequest`.
* Changed `azureManagedIdentity` field for
`com.databricks.sdk.service.catalog.StorageCredentialInfo` to
`com.databricks.sdk.service.catalog.AzureManagedIdentityResponse` class.
* Removed `name` field for
`com.databricks.sdk.service.catalog.TableRowFilter`.
* Added `functionName` field for
`com.databricks.sdk.service.catalog.TableRowFilter`.
* Changed `customMetrics` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to
`com.databricks.sdk.service.catalog.MonitorMetricList` class.
* Removed `fullName` field for
`com.databricks.sdk.service.catalog.UpdateMonitor`.
* Changed `inferenceLog` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to
`com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
* Changed `notifications` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to
`com.databricks.sdk.service.catalog.MonitorNotifications` class.
* Changed `snapshot` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to `Object` class.
* Changed `timeSeries` field for
`com.databricks.sdk.service.catalog.UpdateMonitor` to
`com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
* Added `tableName` field for
`com.databricks.sdk.service.catalog.UpdateMonitor`.
* Changed `azureManagedIdentity` field for
`com.databricks.sdk.service.catalog.UpdateStorageCredential` to
`com.databricks.sdk.service.catalog.AzureManagedIdentityResponse` class.
* Changed `azureManagedIdentity` field for
`com.databricks.sdk.service.catalog.ValidateStorageCredential` to
`com.databricks.sdk.service.catalog.AzureManagedIdentityRequest` class.
* Removed `operation` field for
`com.databricks.sdk.service.catalog.ValidationResult`.
* Added `awsOperation` field for
`com.databricks.sdk.service.catalog.ValidationResult`.
* Added `azureOperation` field for
`com.databricks.sdk.service.catalog.ValidationResult`.
* Added `gcpOperation` field for
`com.databricks.sdk.service.catalog.ValidationResult`.
* Removed `com.databricks.sdk.service.catalog.ValidationResultOperation`
class.
* Added `com.databricks.sdk.service.catalog.AzureManagedIdentityRequest`
class.
* Added
`com.databricks.sdk.service.catalog.AzureManagedIdentityResponse` class.
 * Added `com.databricks.sdk.service.catalog.MonitorDestination` class.
 * Added `com.databricks.sdk.service.catalog.MonitorInferenceLog` class.
* Added
`com.databricks.sdk.service.catalog.MonitorInferenceLogProblemType`
class.
 * Added `com.databricks.sdk.service.catalog.MonitorMetric` class.
 * Added `com.databricks.sdk.service.catalog.MonitorMetricType` class.
* Added `com.databricks.sdk.service.catalog.MonitorNotifications` class.
* Added `com.databricks.sdk.service.catalog.MonitorRefreshInfoTrigger`
class.
 * Added `Object` class.
 * Added `com.databricks.sdk.service.catalog.MonitorTimeSeries` class.
* Added
`com.databricks.sdk.service.catalog.ValidationResultAwsOperation` class.
* Added
`com.databricks.sdk.service.catalog.ValidationResultAzureOperation`
class.
* Added
`com.databricks.sdk.service.catalog.ValidationResultGcpOperation` class.
* Added `cloneFrom` field for
`com.databricks.sdk.service.compute.ClusterSpec`.
 * Removed `com.databricks.sdk.service.compute.ComputeSpec` class.
 * Removed `com.databricks.sdk.service.compute.ComputeSpecKind` class.
* Added `cloneFrom` field for
`com.databricks.sdk.service.compute.CreateCluster`.
* Added `cloneFrom` field for
`com.databricks.sdk.service.compute.EditCluster`.
 * Added `com.databricks.sdk.service.compute.CloneCluster` class.
 * Added `com.databricks.sdk.service.compute.Environment` class.
* Changed `update()` method for `accountClient.workspaceAssignment()`
service to return `com.databricks.sdk.service.iam.PermissionAssignment`
class.
 * Removed `Object` class.
* Removed `computeKey` field for
`com.databricks.sdk.service.jobs.ClusterSpec`.
* Removed `compute` field for
`com.databricks.sdk.service.jobs.CreateJob`.
* Added `environments` field for
`com.databricks.sdk.service.jobs.CreateJob`.
 * Removed `com.databricks.sdk.service.jobs.JobCompute` class.
* Removed `compute` field for
`com.databricks.sdk.service.jobs.JobSettings`.
* Added `environments` field for
`com.databricks.sdk.service.jobs.JobSettings`.
* Removed `computeKey` field for
`com.databricks.sdk.service.jobs.RunTask`.
* Removed `com.databricks.sdk.service.jobs.TableTriggerConfiguration`
class.
* Removed `computeKey` field for `com.databricks.sdk.service.jobs.Task`.
* Added `environmentKey` field for
`com.databricks.sdk.service.jobs.Task`.
* Changed `table` field for
`com.databricks.sdk.service.jobs.TriggerSettings` to
`com.databricks.sdk.service.jobs.TableUpdateTriggerConfiguration` class.
* Changed `tableUpdate` field for
`com.databricks.sdk.service.jobs.TriggerSettings` to
`com.databricks.sdk.service.jobs.TableUpdateTriggerConfiguration` class.
 * Added `com.databricks.sdk.service.jobs.JobEnvironment` class.
* Added
`com.databricks.sdk.service.jobs.TableUpdateTriggerConfiguration` class.
 * Added `com.databricks.sdk.service.marketplace` package.

OpenAPI SHA: 94684175b8bd65f8701f89729351f8069e8309c9, Date: 2024-04-11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants