|
@@ -37,10 +37,12 @@ import org.thingsboard.server.dao.service.Validator; |
|
@@ -37,10 +37,12 @@ import org.thingsboard.server.dao.service.Validator; |
37
|
import java.util.ArrayList;
|
37
|
import java.util.ArrayList;
|
38
|
import java.util.Collection;
|
38
|
import java.util.Collection;
|
39
|
import java.util.HashMap;
|
39
|
import java.util.HashMap;
|
|
|
40
|
+import java.util.HashSet;
|
40
|
import java.util.List;
|
41
|
import java.util.List;
|
41
|
import java.util.Map;
|
42
|
import java.util.Map;
|
42
|
import java.util.Objects;
|
43
|
import java.util.Objects;
|
43
|
import java.util.Optional;
|
44
|
import java.util.Optional;
|
|
|
45
|
+import java.util.Set;
|
44
|
import java.util.stream.Collectors;
|
46
|
import java.util.stream.Collectors;
|
45
|
|
47
|
|
46
|
import static org.thingsboard.server.common.data.CacheConstants.ATTRIBUTES_CACHE;
|
48
|
import static org.thingsboard.server.common.data.CacheConstants.ATTRIBUTES_CACHE;
|
|
@@ -106,13 +108,11 @@ public class CachedAttributesService implements AttributesService { |
|
@@ -106,13 +108,11 @@ public class CachedAttributesService implements AttributesService { |
106
|
return Futures.immediateFuture(cachedAttributes);
|
108
|
return Futures.immediateFuture(cachedAttributes);
|
107
|
}
|
109
|
}
|
108
|
|
110
|
|
109
|
- ArrayList<String> notFoundAttributeKeys = new ArrayList<>(attributeKeys);
|
111
|
+ Set<String> notFoundAttributeKeys = new HashSet<>(attributeKeys);
|
110
|
notFoundAttributeKeys.removeAll(wrappedCachedAttributes.keySet());
|
112
|
notFoundAttributeKeys.removeAll(wrappedCachedAttributes.keySet());
|
111
|
|
113
|
|
112
|
ListenableFuture<List<AttributeKvEntry>> result = attributesDao.find(tenantId, entityId, scope, notFoundAttributeKeys);
|
114
|
ListenableFuture<List<AttributeKvEntry>> result = attributesDao.find(tenantId, entityId, scope, notFoundAttributeKeys);
|
113
|
- return Futures.transform(result, foundInDbAttributes -> {
|
|
|
114
|
- return mergeDbAndCacheAttributes(entityId, scope, cachedAttributes, notFoundAttributeKeys, foundInDbAttributes);
|
|
|
115
|
- }, MoreExecutors.directExecutor());
|
115
|
+ return Futures.transform(result, foundInDbAttributes -> mergeDbAndCacheAttributes(entityId, scope, cachedAttributes, notFoundAttributeKeys, foundInDbAttributes), MoreExecutors.directExecutor());
|
116
|
|
116
|
|
117
|
}
|
117
|
}
|
118
|
|
118
|
|
|
@@ -130,7 +130,7 @@ public class CachedAttributesService implements AttributesService { |
|
@@ -130,7 +130,7 @@ public class CachedAttributesService implements AttributesService { |
130
|
return cachedAttributes;
|
130
|
return cachedAttributes;
|
131
|
}
|
131
|
}
|
132
|
|
132
|
|
133
|
- private List<AttributeKvEntry> mergeDbAndCacheAttributes(EntityId entityId, String scope, List<AttributeKvEntry> cachedAttributes, ArrayList<String> notFoundAttributeKeys, List<AttributeKvEntry> foundInDbAttributes) {
|
133
|
+ private List<AttributeKvEntry> mergeDbAndCacheAttributes(EntityId entityId, String scope, List<AttributeKvEntry> cachedAttributes, Set<String> notFoundAttributeKeys, List<AttributeKvEntry> foundInDbAttributes) {
|
134
|
for (AttributeKvEntry foundInDbAttribute : foundInDbAttributes) {
|
134
|
for (AttributeKvEntry foundInDbAttribute : foundInDbAttributes) {
|
135
|
AttributeCacheKey attributeCacheKey = new AttributeCacheKey(scope, entityId, foundInDbAttribute.getKey());
|
135
|
AttributeCacheKey attributeCacheKey = new AttributeCacheKey(scope, entityId, foundInDbAttribute.getKey());
|
136
|
attributesCache.put(attributeCacheKey, foundInDbAttribute);
|
136
|
attributesCache.put(attributeCacheKey, foundInDbAttribute);
|