clear duplicated attribute keys before loading them from cache to avoid NPE
This commit is contained in:
parent
34e923422a
commit
672c05d9b7
@ -21,6 +21,7 @@ import org.thingsboard.server.dao.exception.IncorrectParameterException;
|
||||
import org.thingsboard.server.dao.service.Validator;
|
||||
|
||||
public class AttributeUtils {
|
||||
|
||||
public static void validate(EntityId id, String scope) {
|
||||
Validator.validateId(id.getId(), "Incorrect id " + id);
|
||||
Validator.validateString(scope, "Incorrect scope " + scope);
|
||||
|
||||
@ -42,6 +42,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
@ -123,6 +124,7 @@ public class CachedAttributesService implements AttributesService {
|
||||
return result;
|
||||
} catch (Throwable e) {
|
||||
cacheTransaction.rollback();
|
||||
log.debug("Could not find attribute from cache: [{}] [{}] [{}]", entityId, scope, attributeKey, e);
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
@ -132,6 +134,7 @@ public class CachedAttributesService implements AttributesService {
|
||||
@Override
|
||||
public ListenableFuture<List<AttributeKvEntry>> find(TenantId tenantId, EntityId entityId, String scope, Collection<String> attributeKeys) {
|
||||
validate(entityId, scope);
|
||||
attributeKeys = new LinkedHashSet<>(attributeKeys); // deduplicate the attributes
|
||||
attributeKeys.forEach(attributeKey -> Validator.validateString(attributeKey, "Incorrect attribute key " + attributeKey));
|
||||
|
||||
Map<String, TbCacheValueWrapper<AttributeKvEntry>> wrappedCachedAttributes = findCachedAttributes(entityId, scope, attributeKeys);
|
||||
@ -170,6 +173,7 @@ public class CachedAttributesService implements AttributesService {
|
||||
return mergedAttributes;
|
||||
} catch (Throwable e) {
|
||||
cacheTransaction.rollback();
|
||||
log.debug("Could not find attributes from cache: [{}] [{}] [{}]", entityId, scope, notFoundAttributeKeys, e);
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user