This is an automated email from the ASF dual-hosted git repository. madhan pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 0030bc23acd1bb36462f77ba795fe42f8bda423d Author: Ashutosh Mestry <[email protected]> AuthorDate: Mon Apr 20 17:49:29 2020 -0700 ATLAS-3735: CustomAttribute length validation bypass for keys with special prefix. (cherry picked from commit 318c645fb555b17b9fdd8c2f1b642a3065e337fc) --- intg/src/main/java/org/apache/atlas/AtlasConfiguration.java | 2 ++ .../apache/atlas/repository/store/graph/v2/EntityGraphMapper.java | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/intg/src/main/java/org/apache/atlas/AtlasConfiguration.java b/intg/src/main/java/org/apache/atlas/AtlasConfiguration.java index 5d8776b..2c007ca 100644 --- a/intg/src/main/java/org/apache/atlas/AtlasConfiguration.java +++ b/intg/src/main/java/org/apache/atlas/AtlasConfiguration.java @@ -64,6 +64,8 @@ public enum AtlasConfiguration { CUSTOM_ATTRIBUTE_KEY_MAX_LENGTH("atlas.custom.attribute.key.max.length", 50), CUSTOM_ATTRIBUTE_VALUE_MAX_LENGTH("atlas.custom.attribute.value.max.length", 500), + CUSTOM_ATTRIBUTE_KEY_SPECIAL_PREFIX("atlas.custom.attribute.special.prefix", ""), + LABEL_MAX_LENGTH("atlas.entity.label.max.length", 50), IMPORT_TEMP_DIRECTORY("atlas.import.temp.directory", ""), MIGRATION_IMPORT_START_POSITION("atlas.migration.import.start.position", 0), diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java index d949ed0..8c43807 100644 --- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java +++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java @@ -119,6 +119,8 @@ public class EntityGraphMapper { private static final String SOFT_REF_FORMAT = "%s:%s"; private static final int INDEXED_STR_SAFE_LEN = AtlasConfiguration.GRAPHSTORE_INDEXED_STRING_SAFE_LENGTH.getInt(); private static final boolean WARN_ON_NO_RELATIONSHIP = AtlasConfiguration.RELATIONSHIP_WARN_NO_RELATIONSHIPS.getBoolean(); + private static final String CUSTOM_ATTRIBUTE_KEY_SPECIAL_PREFIX = AtlasConfiguration.CUSTOM_ATTRIBUTE_KEY_SPECIAL_PREFIX.getString(); + private static final String CLASSIFICATION_NAME_DELIMITER = "|"; private static final Pattern CUSTOM_ATTRIBUTE_KEY_REGEX = Pattern.compile("^[a-zA-Z0-9_-]*$"); private static final Pattern LABEL_REGEX = Pattern.compile("^[a-zA-Z0-9_-]*$"); @@ -2521,6 +2523,10 @@ public class EntityGraphMapper { throw new AtlasBaseException(AtlasErrorCode.INVALID_CUSTOM_ATTRIBUTE_KEY_CHARACTERS, key); } + if (StringUtils.isNotEmpty(CUSTOM_ATTRIBUTE_KEY_SPECIAL_PREFIX) && key.startsWith(CUSTOM_ATTRIBUTE_KEY_SPECIAL_PREFIX)) { + continue; + } + if (value.length() > CUSTOM_ATTRIBUTE_VALUE_MAX_LENGTH) { throw new AtlasBaseException(AtlasErrorCode.INVALID_CUSTOM_ATTRIBUTE_VALUE, value, String.valueOf(CUSTOM_ATTRIBUTE_VALUE_MAX_LENGTH)); }
