Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,19 @@ public void deleteAtlasTypeDefs(AtlasTypesDef typesDef) throws AtlasServiceExcep
}

public void deleteTypeByName(String typeName) throws AtlasServiceException {
callAPI(API_V2.DELETE_TYPE_DEF_BY_NAME, (Class) null, null, typeName);
callAPI(API_V2.DELETE_TYPE_DEF_BY_NAME, (Class<?>) null, null, typeName);
}

public void deleteTypeByName(String typeName, boolean forceDelete) throws AtlasServiceException {
if (forceDelete) {

MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add("force", "true");
callAPI(API_V2.DELETE_TYPE_DEF_BY_NAME, (Class<?>) null, queryParams, typeName);
} else {

callAPI(API_V2.DELETE_TYPE_DEF_BY_NAME, (Class<?>) null, null, typeName);
}
}

// Entity APIs
Expand Down
4 changes: 3 additions & 1 deletion intg/src/main/java/org/apache/atlas/AtlasErrorCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,9 @@ public enum AtlasErrorCode {
IMPORT_REGISTRATION_FAILED(500, "ATLAS-500-00-020", "Failed to register import request"),
IMPORT_FAILED(500, "ATLAS-500-00-021", "Import with id {0} failed"),
ABORT_IMPORT_FAILED(500, "ATLAS-500-00-022", "Failed to abort import with id {0}"),
IMPORT_QUEUEING_FAILED(500, "ATLAS-500-00-023", "Failed to add import with id {0} to request queue, please try again later");
IMPORT_QUEUEING_FAILED(500, "ATLAS-500-00-023", "Failed to add import with id {0} to request queue, please try again later"),

NON_INDEXABLE_BM_DELETE_NOT_ALLOWED(400, "ATLAS-400-00-106", "Deletion not allowed for non-indexable Business Metadata ''{0}'' without force-delete. Please use the force-delete parameter to remove.");

private static final Logger LOG = LoggerFactory.getLogger(AtlasErrorCode.class);
private final String errorCode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,25 @@ public interface AtlasDefStore<T extends AtlasBaseTypeDef> {

AtlasVertex preDeleteByName(String name) throws AtlasBaseException;

void deleteByName(String name, AtlasVertex preDeleteResult) throws AtlasBaseException;

AtlasVertex preDeleteByGuid(String guid) throws AtlasBaseException;

void deleteByName(String name, AtlasVertex preDeleteResult) throws AtlasBaseException;

void deleteByGuid(String guid, AtlasVertex preDeleteResult) throws AtlasBaseException;

default AtlasVertex preDeleteByName(String name, boolean forceDelete) throws AtlasBaseException {
return preDeleteByName(name);
}

default void deleteByName(String name, AtlasVertex preDeleteResult, boolean forceDelete) throws AtlasBaseException {
deleteByName(name, preDeleteResult);
}

default AtlasVertex preDeleteByGuid(String guid, boolean forceDelete) throws AtlasBaseException {
return preDeleteByGuid(guid);
}

default void deleteByGuid(String guid, AtlasVertex preDeleteResult, boolean forceDelete) throws AtlasBaseException {
deleteByGuid(guid, preDeleteResult);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -539,14 +539,20 @@ public AtlasTypesDef createUpdateTypesDef(AtlasTypesDef typesToCreate, AtlasType
@Override
@GraphTransaction
public void deleteTypesDef(AtlasTypesDef typesDef) throws AtlasBaseException {
deleteTypesDef(typesDef, false);
}

@GraphTransaction
public void deleteTypesDef(AtlasTypesDef typesDef, boolean forceDelete) throws AtlasBaseException {
if (LOG.isDebugEnabled()) {
LOG.debug("==> AtlasTypeDefGraphStore.deleteTypesDef(enums={}, structs={}, classfications={}, entities={}, relationships={}, businessMetadataDefs={})",
LOG.debug("==> AtlasTypeDefGraphStore.deleteTypesDef(enums={}, structs={}, classfications={}, entities={}, relationships={}, businessMetadataDefs={}, forceDelete={})",
CollectionUtils.size(typesDef.getEnumDefs()),
CollectionUtils.size(typesDef.getStructDefs()),
CollectionUtils.size(typesDef.getClassificationDefs()),
CollectionUtils.size(typesDef.getEntityDefs()),
CollectionUtils.size(typesDef.getRelationshipDefs()),
CollectionUtils.size(typesDef.getBusinessMetadataDefs()));
CollectionUtils.size(typesDef.getBusinessMetadataDefs()),
forceDelete);
}

AtlasTransientTypeRegistry ttr = lockTypeRegistryAndReleasePostCommit();
Expand Down Expand Up @@ -678,9 +684,9 @@ public void deleteTypesDef(AtlasTypesDef typesDef) throws AtlasBaseException {
if (CollectionUtils.isNotEmpty(typesDef.getBusinessMetadataDefs())) {
for (AtlasBusinessMetadataDef businessMetadataDef : typesDef.getBusinessMetadataDefs()) {
if (StringUtils.isNotBlank(businessMetadataDef.getGuid())) {
businessMetadataDefStore.deleteByGuid(businessMetadataDef.getGuid(), null);
businessMetadataDefStore.deleteByGuid(businessMetadataDef.getGuid(), null, forceDelete);
} else {
businessMetadataDefStore.deleteByName(businessMetadataDef.getName(), null);
businessMetadataDefStore.deleteByName(businessMetadataDef.getName(), null, forceDelete);
}
}
}
Expand Down Expand Up @@ -777,7 +783,7 @@ public AtlasBaseTypeDef getByGuid(String guid) throws AtlasBaseException {

@Override
@GraphTransaction
public void deleteTypeByName(String typeName) throws AtlasBaseException {
public void deleteTypeByName(String typeName, boolean forceDelete) throws AtlasBaseException {
AtlasType atlasType = typeRegistry.getType(typeName);

if (atlasType == null) {
Expand All @@ -801,7 +807,7 @@ public void deleteTypeByName(String typeName) throws AtlasBaseException {
typesDef.setStructDefs(Collections.singletonList((AtlasStructDef) baseTypeDef));
}

deleteTypesDef(typesDef);
deleteTypesDef(typesDef, forceDelete);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,24 +148,46 @@ public boolean isValidName(String typeName) {

@Override
public void deleteByName(String name, AtlasVertex preDeleteResult) throws AtlasBaseException {
LOG.debug("==> AtlasAbstractDefStoreV1.deleteByName({}, {})", name, preDeleteResult);
LOG.debug("==> AtlasAbstractDefStoreV2.deleteByName({}, {})", name, preDeleteResult);

AtlasVertex vertex = (preDeleteResult == null) ? preDeleteByName(name) : preDeleteResult;

typeDefStore.deleteTypeVertex(vertex);

LOG.debug("<== AtlasAbstractDefStoreV1.deleteByName({}, {})", name, preDeleteResult);
LOG.debug("<== AtlasAbstractDefStoreV2.deleteByName({}, {})", name, preDeleteResult);
}

@Override
public void deleteByGuid(String guid, AtlasVertex preDeleteResult) throws AtlasBaseException {
LOG.debug("==> AtlasAbstractDefStoreV1.deleteByGuid({}, {})", guid, preDeleteResult);
LOG.debug("==> AtlasAbstractDefStoreV2.deleteByGuid({}, {})", guid, preDeleteResult);

AtlasVertex vertex = (preDeleteResult == null) ? preDeleteByGuid(guid) : preDeleteResult;

typeDefStore.deleteTypeVertex(vertex);

LOG.debug("<== AtlasAbstractDefStoreV1.deleteByGuid({}, {})", guid, preDeleteResult);
LOG.debug("<== AtlasAbstractDefStoreV2.deleteByGuid({}, {})", guid, preDeleteResult);
}

@Override
public void deleteByName(String name, AtlasVertex preDeleteResult, boolean forceDelete) throws AtlasBaseException {
LOG.debug("==> AtlasAbstractDefStoreV2.deleteByName({}, {}, {})", name, preDeleteResult, forceDelete);

AtlasVertex vertex = (preDeleteResult == null) ? preDeleteByName(name, forceDelete) : preDeleteResult;

typeDefStore.deleteTypeVertex(vertex);

LOG.debug("<== AtlasAbstractDefStoreV2.deleteByName({}, {}, {})", name, preDeleteResult, forceDelete);
}

@Override
public void deleteByGuid(String guid, AtlasVertex preDeleteResult, boolean forceDelete) throws AtlasBaseException {
LOG.debug("==> AtlasAbstractDefStoreV2.deleteByGuid({}, {}, {})", guid, preDeleteResult, forceDelete);

AtlasVertex vertex = (preDeleteResult == null) ? preDeleteByGuid(guid, forceDelete) : preDeleteResult;

typeDefStore.deleteTypeVertex(vertex);

LOG.debug("<== AtlasAbstractDefStoreV2.deleteByGuid({}, {}, {})", guid, preDeleteResult, forceDelete);
}

public boolean isInvalidTypeDefName(String typeName) {
Expand Down
Loading