in polaris-synchronizer/api/src/main/java/org/apache/polaris/tools/sync/polaris/planning/AccessControlAwarePlanner.java [200:250]
public SynchronizationPlan<CatalogRole> planCatalogRoleSync(
String catalogName,
List<CatalogRole> catalogRolesOnSource,
List<CatalogRole> catalogRolesOnTarget) {
List<CatalogRole> skippedRoles = new ArrayList<>();
List<CatalogRole> filteredRolesSource = new ArrayList<>();
List<CatalogRole> filteredRolesTarget = new ArrayList<>();
for (CatalogRole role : catalogRolesOnSource) {
// filter out omnipotent catalog role
if (role.getProperties() != null
&& role.getProperties().containsKey(AccessControlConstants.OMNIPOTENCE_PROPERTY)) {
skippedRoles.add(role);
continue;
}
// filter out catalog admin
if (role.getName().equals("catalog_admin")) {
skippedRoles.add(role);
continue;
}
filteredRolesSource.add(role);
}
for (CatalogRole role : catalogRolesOnTarget) {
// filter out omnipotent catalog role
if (role.getProperties() != null
&& role.getProperties().containsKey(AccessControlConstants.OMNIPOTENCE_PROPERTY)) {
skippedRoles.add(role);
continue;
}
// filter out catalog admin
if (role.getName().equals("catalog_admin")) {
skippedRoles.add(role);
continue;
}
filteredRolesTarget.add(role);
}
SynchronizationPlan<CatalogRole> delegatedPlan =
this.delegate.planCatalogRoleSync(catalogName, filteredRolesSource, filteredRolesTarget);
for (CatalogRole role : skippedRoles) {
delegatedPlan.skipEntityAndSkipChildren(role);
}
return delegatedPlan;
}