Browse Source

Merge pull request #948 from janbols/master

Cache assets
pull/965/merge
Andrew Shvayka 8 years ago
committed by GitHub
parent
commit
4cbacde755
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      application/src/main/resources/thingsboard.yml
  2. 1
      common/data/src/main/java/org/thingsboard/server/common/data/CacheConstants.java
  3. 2
      dao/src/main/java/org/thingsboard/server/dao/asset/AssetService.java
  4. 29
      dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java
  5. 3
      dao/src/test/resources/application-test.properties

3
application/src/main/resources/thingsboard.yml

@ -291,6 +291,9 @@ caffeine:
devices:
timeToLiveInMinutes: 1440
maxSize: 100000
assets:
timeToLiveInMinutes: 1440
maxSize: 100000
redis:
# standalone or cluster

1
common/data/src/main/java/org/thingsboard/server/common/data/CacheConstants.java

@ -19,4 +19,5 @@ public class CacheConstants {
public static final String DEVICE_CREDENTIALS_CACHE = "deviceCredentials";
public static final String RELATIONS_CACHE = "relations";
public static final String DEVICE_CACHE = "devices";
public static final String ASSET_CACHE = "assets";
}

2
dao/src/main/java/org/thingsboard/server/dao/asset/AssetService.java

@ -34,7 +34,7 @@ public interface AssetService {
ListenableFuture<Asset> findAssetByIdAsync(AssetId assetId);
Optional<Asset> findAssetByTenantIdAndName(TenantId tenantId, String name);
Asset findAssetByTenantIdAndName(TenantId tenantId, String name);
Asset saveAsset(Asset asset);

29
dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java

@ -21,6 +21,10 @@ import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.thingsboard.server.common.data.Customer;
@ -48,15 +52,12 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import static org.thingsboard.server.common.data.CacheConstants.ASSET_CACHE;
import static org.thingsboard.server.dao.DaoUtil.toUUIDs;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
import static org.thingsboard.server.dao.service.Validator.validateId;
import static org.thingsboard.server.dao.service.Validator.validateIds;
import static org.thingsboard.server.dao.service.Validator.validatePageLink;
import static org.thingsboard.server.dao.service.Validator.validateString;
import static org.thingsboard.server.dao.service.Validator.*;
@Service
@Slf4j
@ -75,6 +76,9 @@ public class BaseAssetService extends AbstractEntityService implements AssetServ
@Autowired
private CustomerDao customerDao;
@Autowired
private CacheManager cacheManager;
@Override
public Asset findAssetById(AssetId assetId) {
log.trace("Executing findAssetById [{}]", assetId);
@ -89,13 +93,16 @@ public class BaseAssetService extends AbstractEntityService implements AssetServ
return assetDao.findByIdAsync(assetId.getId());
}
@Cacheable(cacheNames = ASSET_CACHE, key = "{#tenantId, #name}")
@Override
public Optional<Asset> findAssetByTenantIdAndName(TenantId tenantId, String name) {
public Asset findAssetByTenantIdAndName(TenantId tenantId, String name) {
log.trace("Executing findAssetByTenantIdAndName [{}][{}]", tenantId, name);
validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
return assetDao.findAssetsByTenantIdAndName(tenantId.getId(), name);
return assetDao.findAssetsByTenantIdAndName(tenantId.getId(), name)
.orElse(null);
}
@CacheEvict(cacheNames = ASSET_CACHE, key = "{#asset.tenantId, #asset.name}")
@Override
public Asset saveAsset(Asset asset) {
log.trace("Executing saveAsset [{}]", asset);
@ -122,6 +129,14 @@ public class BaseAssetService extends AbstractEntityService implements AssetServ
log.trace("Executing deleteAsset [{}]", assetId);
validateId(assetId, INCORRECT_ASSET_ID + assetId);
deleteEntityRelations(assetId);
Cache cache = cacheManager.getCache(ASSET_CACHE);
Asset asset = assetDao.findById(assetId.getId());
List<Object> list = new ArrayList<>();
list.add(asset.getTenantId());
list.add(asset.getName());
cache.evict(list);
assetDao.removeById(assetId.getId());
}

3
dao/src/test/resources/application-test.properties

@ -21,6 +21,9 @@ caffeine.specs.deviceCredentials.maxSize=100000
caffeine.specs.devices.timeToLiveInMinutes=1440
caffeine.specs.devices.maxSize=100000
caffeine.specs.assets.timeToLiveInMinutes=1440
caffeine.specs.assets.maxSize=100000
caching.specs.devices.timeToLiveInMinutes=1440
caching.specs.devices.maxSize=100000

Loading…
Cancel
Save