Skip to content

Commit b4dab33

Browse files
authored
Release v0.6.0 (#598)
**Breaking changes** (existing installations need to reinstall UCX and re-run assessment jobs) * Switched local group migration component to rename groups instead of creating backup groups ([#450](#450)). * Mitigate permissions loss in Table ACLs by folding grants belonging to the same principal, object id and object type together ([#512](#512)). **New features** * Added support for the experimental Databricks CLI launcher ([#517](#517)). * Added support for external Hive Metastores including AWS Glue ([#400](#400)). * Added more views to assessment dashboard ([#474](#474)). * Added rate limit for creating backup group to increase stability ([#500](#500)). * Added deduplication for mount point list ([#569](#569)). * Added documentation to describe interaction with external Hive Metastores ([#473](#473)). * Added failure injection for job failure message propagation ([#591](#591)). * Added uniqueness in the new warehouse name to avoid conflicts on installation ([#542](#542)). * Added a global init script to collect Hive Metastore lineage ([#513](#513)). * Added retry set/update permissions when possible and assess the changes in the workspace ([#519](#519)). * Use `~/.ucx/state.json` to store the state of both dashboards and jobs ([#561](#561)). **Bug fixes** * Fixed handling for `OWN` table permissions ([#571](#571)). * Fixed handling of keys with and without values. ([#514](#514)). * Fixed integration test failures related to concurrent group delete ([#584](#584)). * Fixed issue with workspace listing process on None type `object_type` ([#481](#481)). * Fixed missing group entitlement migration bug ([#583](#583)). * Fixed entitlement application for account-level groups ([#529](#529)). * Fixed assessment throwing an error when the owner of an object is empty ([#485](#485)). * Fixed installer to migrate between different configuration file versions ([#596](#596)). * Fixed cluster policy crawler to be aware of deleted policies ([#486](#486)). * Improved error message for not null constraints violated ([#532](#532)). * Improved integration test resiliency ([#597](#597), [#594](#594), [#586](#586)). * Introduced Safer access to workspace objects' properties. ([#530](#530)). * Mitigated permissions loss in Table ACLs by running appliers with single thread ([#518](#518)). * Running apply permission task before assessment should display message ([#487](#487)). * Split integration tests from blocking the merge queue ([#496](#496)). * Support more than one dashboard per step ([#472](#472)). * Update databricks-sdk requirement from ~=0.11.0 to ~=0.12.0 ([#505](#505)). * Update databricks-sdk requirement from ~=0.12.0 to ~=0.13.0 ([#575](#575)).
1 parent 5c92886 commit b4dab33

File tree

3 files changed

+65
-12
lines changed

3 files changed

+65
-12
lines changed

CHANGELOG.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,47 @@
11
# Version changelog
22

3+
## 0.6.0
4+
5+
**Breaking changes** (existing installations need to reinstall UCX and re-run assessment jobs)
6+
7+
* Switched local group migration component to rename groups instead of creating backup groups ([#450](https://github.com/databricks/ucx/pull/450)).
8+
* Mitigate permissions loss in Table ACLs by folding grants belonging to the same principal, object id and object type together ([#512](https://github.com/databricks/ucx/pull/512)).
9+
10+
**New features**
11+
12+
* Added support for the experimental Databricks CLI launcher ([#517](https://github.com/databricks/ucx/pull/517)).
13+
* Added support for external Hive Metastores including AWS Glue ([#400](https://github.com/databricks/ucx/pull/400)).
14+
* Added more views to assessment dashboard ([#474](https://github.com/databricks/ucx/pull/474)).
15+
* Added rate limit for creating backup group to increase stability ([#500](https://github.com/databricks/ucx/pull/500)).
16+
* Added deduplication for mount point list ([#569](https://github.com/databricks/ucx/pull/569)).
17+
* Added documentation to describe interaction with external Hive Metastores ([#473](https://github.com/databricks/ucx/pull/473)).
18+
* Added failure injection for job failure message propagation ([#591](https://github.com/databricks/ucx/pull/591)).
19+
* Added uniqueness in the new warehouse name to avoid conflicts on installation ([#542](https://github.com/databricks/ucx/pull/542)).
20+
* Added a global init script to collect Hive Metastore lineage ([#513](https://github.com/databricks/ucx/pull/513)).
21+
* Added retry set/update permissions when possible and assess the changes in the workspace ([#519](https://github.com/databricks/ucx/pull/519)).
22+
* Use `~/.ucx/state.json` to store the state of both dashboards and jobs ([#561](https://github.com/databricks/ucx/pull/561)).
23+
24+
**Bug fixes**
25+
26+
* Fixed handling for `OWN` table permissions ([#571](https://github.com/databricks/ucx/pull/571)).
27+
* Fixed handling of keys with and without values. ([#514](https://github.com/databricks/ucx/pull/514)).
28+
* Fixed integration test failures related to concurrent group delete ([#584](https://github.com/databricks/ucx/pull/584)).
29+
* Fixed issue with workspace listing process on None type `object_type` ([#481](https://github.com/databricks/ucx/pull/481)).
30+
* Fixed missing group entitlement migration bug ([#583](https://github.com/databricks/ucx/pull/583)).
31+
* Fixed entitlement application for account-level groups ([#529](https://github.com/databricks/ucx/pull/529)).
32+
* Fixed assessment throwing an error when the owner of an object is empty ([#485](https://github.com/databricks/ucx/pull/485)).
33+
* Fixed installer to migrate between different configuration file versions ([#596](https://github.com/databricks/ucx/pull/596)).
34+
* Fixed cluster policy crawler to be aware of deleted policies ([#486](https://github.com/databricks/ucx/pull/486)).
35+
* Improved error message for not null constraints violated ([#532](https://github.com/databricks/ucx/pull/532)).
36+
* Improved integration test resiliency ([#597](https://github.com/databricks/ucx/pull/597), [#594](https://github.com/databricks/ucx/pull/594), [#586](https://github.com/databricks/ucx/pull/586)).
37+
* Introduced Safer access to workspace objects' properties. ([#530](https://github.com/databricks/ucx/pull/530)).
38+
* Mitigated permissions loss in Table ACLs by running appliers with single thread ([#518](https://github.com/databricks/ucx/pull/518)).
39+
* Running apply permission task before assessment should display message ([#487](https://github.com/databricks/ucx/pull/487)).
40+
* Split integration tests from blocking the merge queue ([#496](https://github.com/databricks/ucx/pull/496)).
41+
* Support more than one dashboard per step ([#472](https://github.com/databricks/ucx/pull/472)).
42+
* Update databricks-sdk requirement from ~=0.11.0 to ~=0.12.0 ([#505](https://github.com/databricks/ucx/pull/505)).
43+
* Update databricks-sdk requirement from ~=0.12.0 to ~=0.13.0 ([#575](https://github.com/databricks/ucx/pull/575)).
44+
345
## 0.5.0
446

547
* Added `make install-dev` and a stronger `make clean` for easier dev on-boarding and release upgrades ([#458](https://github.com/databricks/ucx/pull/458)).
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# DO NOT MODIFY THIS FILE
2-
__version__ = "0.5.0"
2+
__version__ = "0.6.0"

src/databricks/labs/ucx/install.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import yaml
1717
from databricks.sdk import WorkspaceClient
18-
from databricks.sdk.errors import NotFound, OperationFailed
18+
from databricks.sdk.errors import InvalidParameterValue, NotFound, OperationFailed
1919
from databricks.sdk.mixins.compute import SemVer
2020
from databricks.sdk.service import compute, jobs
2121
from databricks.sdk.service.sql import EndpointInfoWarehouseType, SpotInstancePolicy
@@ -457,24 +457,35 @@ def _create_jobs(self):
457457
settings = self._job_settings(step_name, remote_wheel)
458458
if self._override_clusters:
459459
settings = self._apply_cluster_overrides(settings, self._override_clusters, wheel_runner)
460-
if step_name in self._state.jobs:
461-
job_id = self._state.jobs[step_name]
462-
logger.info(f"Updating configuration for step={step_name} job_id={job_id}")
463-
self._ws.jobs.reset(job_id, jobs.JobSettings(**settings))
464-
else:
465-
logger.info(f"Creating new job configuration for step={step_name}")
466-
job_id = self._ws.jobs.create(**settings).job_id
467-
self._state.jobs[step_name] = job_id
460+
self._deploy_workflow(step_name, settings)
468461

469462
for step_name, job_id in self._state.jobs.items():
470463
if step_name not in desired_steps:
471-
logger.info(f"Removing job_id={job_id}, as it is no longer needed")
472-
self._ws.jobs.delete(job_id)
464+
try:
465+
logger.info(f"Removing job_id={job_id}, as it is no longer needed")
466+
self._ws.jobs.delete(job_id)
467+
except InvalidParameterValue:
468+
logger.warning(f"step={step_name} does not exist anymore for some reason")
469+
continue
473470

474471
self._state.save()
475472
self._create_readme()
476473
self._create_debug(remote_wheel)
477474

475+
def _deploy_workflow(self, step_name: str, settings):
476+
if step_name in self._state.jobs:
477+
try:
478+
job_id = self._state.jobs[step_name]
479+
logger.info(f"Updating configuration for step={step_name} job_id={job_id}")
480+
return self._ws.jobs.reset(job_id, jobs.JobSettings(**settings))
481+
except InvalidParameterValue:
482+
del self._state.jobs[step_name]
483+
logger.warning(f"step={step_name} does not exist anymore for some reason")
484+
return self._deploy_workflow(step_name, settings)
485+
logger.info(f"Creating new job configuration for step={step_name}")
486+
job_id = self._ws.jobs.create(**settings).job_id
487+
self._state.jobs[step_name] = job_id
488+
478489
def _deployed_steps_pre_v06(self):
479490
deployed_steps = {}
480491
logger.debug(f"Fetching all jobs to determine already deployed steps for app={self._app}")

0 commit comments

Comments
 (0)