diff --git a/application/build.gradle b/application/build.gradle index 833cf4cdc7..8074ea1d81 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -112,7 +112,7 @@ buildDeb { archiveName = "${pkgName}.deb" - requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer") + requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer").or("openjdk-8-jre-headless") configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf") configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml") diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index 7a8f58fc51..aa7fcc10c9 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -169,8 +169,17 @@ cache: # Enable/disable cache functionality. enabled: "${CACHE_ENABLED:true}" device_credentials: - # default time to store device credentials in cache, in seconds - time_to_live: "${DEVICE_CREDENTIAL_CACHE_TTL:3600}" - # default maximum size of device credentials cache - max_size: "${DEVICE_CREDENTIAL_CACHE_MAX_SIZE:1000000}" + # Default time to store device credentials in cache, in seconds + time_to_live: "${CACHE_DEVICE_CREDENTIAL_TTL:3600}" + # Maximum size of the map. When maximum size is reached, the map is evicted based on the policy defined. + max_size: + # Max size policy options: + # PER_NODE: Maximum number of map entries in each JVM. + # PER_PARTITION: Maximum number of map entries within each partition. + # USED_HEAP_SIZE: Maximum used heap size in megabytes for each JVM. + # USED_HEAP_PERCENTAGE: Maximum used heap size percentage for each JVM. + # FREE_HEAP_SIZE: Minimum free heap size in megabytes for each JVM. + # FREE_HEAP_PERCENTAGE: Minimum free heap size percentage for each JVM. + policy: "${CACHE_DEVICE_CREDENTIAL_MAX_SIZE_POLICY:PER_NODE}" + size: "${CACHE_DEVICE_CREDENTIAL_MAX_SIZE_SIZE:1000000}" diff --git a/dao/src/main/java/org/thingsboard/server/dao/cache/ServiceCacheConfiguration.java b/dao/src/main/java/org/thingsboard/server/dao/cache/ServiceCacheConfiguration.java index e45084e4d4..d667f6cec3 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/cache/ServiceCacheConfiguration.java +++ b/dao/src/main/java/org/thingsboard/server/dao/cache/ServiceCacheConfiguration.java @@ -15,10 +15,7 @@ */ package org.thingsboard.server.dao.cache; -import com.hazelcast.config.Config; -import com.hazelcast.config.DiscoveryStrategyConfig; -import com.hazelcast.config.MapConfig; -import com.hazelcast.config.MaxSizeConfig; +import com.hazelcast.config.*; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.instance.GroupProperty; @@ -41,10 +38,13 @@ public class ServiceCacheConfiguration { private static final String HAZELCAST_CLUSTER_NAME = "hazelcast"; - @Value("${cache.device_credentials.max_size}") - private Integer deviceCredentialsCacheMaxSize; + @Value("${cache.device_credentials.max_size.size}") + private Integer cacheDeviceCredentialsMaxSizeSize; + @Value("${cache.device_credentials.max_size.policy}") + private String cacheDeviceCredentialsMaxSizePolicy; @Value("${cache.device_credentials.time_to_live}") - private Integer deviceCredentialsCacheTTL; + private Integer cacheDeviceCredentialsTTL; + @Value("${zk.enabled}") private boolean zkEnabled; @@ -69,8 +69,13 @@ public class ServiceCacheConfiguration { } MapConfig deviceCredentialsCacheConfig = new MapConfig(CacheConstants.DEVICE_CREDENTIALS_CACHE); - deviceCredentialsCacheConfig.setTimeToLiveSeconds(deviceCredentialsCacheTTL); - deviceCredentialsCacheConfig.setMaxSizeConfig(new MaxSizeConfig(deviceCredentialsCacheMaxSize, MaxSizeConfig.MaxSizePolicy.PER_NODE)); + deviceCredentialsCacheConfig.setTimeToLiveSeconds(cacheDeviceCredentialsTTL); + deviceCredentialsCacheConfig.setEvictionPolicy(EvictionPolicy.LRU); + deviceCredentialsCacheConfig.setMaxSizeConfig( + new MaxSizeConfig( + cacheDeviceCredentialsMaxSizeSize, + MaxSizeConfig.MaxSizePolicy.valueOf(cacheDeviceCredentialsMaxSizePolicy)) + ); config.addMapConfig(deviceCredentialsCacheConfig); return Hazelcast.newHazelcastInstance(config); diff --git a/dao/src/test/resources/application-test.properties b/dao/src/test/resources/application-test.properties index b526b00fcb..289f94689b 100644 --- a/dao/src/test/resources/application-test.properties +++ b/dao/src/test/resources/application-test.properties @@ -1,6 +1,7 @@ cache.enabled=false cache.device_credentials.time_to_live=3600 -cache.device_credentials.max_size=1000000 +cache.device_credentials.max_size.size=1000000 +cache.device_credentials.max_size.policy=PER_NODE zk.enabled=false zk.url=localhost:2181 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 3dcfb6249f..65b0aa7087 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -26,18 +26,18 @@ services: links: - cassandra:db - zookeeper:zk - - db-schema:db-schema + - thingsboard-db-schema:thingsboard-db-schema volumes: - "../application/target/thingsboard.deb:/root/thingsboard.deb" env_file: - thingsboard.env - entrypoint: ./run_web_app.sh - db-schema: - build: db-schema + entrypoint: ./run_thingsboard.sh + thingsboard-db-schema: + build: thingsboard-db-schema links: - cassandra:db env_file: - - db-schema.env + - thingsboard-db-schema.env volumes: - "../dao/src/main/resources/schema.cql:/root/schema.cql" - "../dao/src/main/resources/demo-data.cql:/root/demo-data.cql" diff --git a/docker/db-schema.env b/docker/thingsboard-db-schema.env similarity index 100% rename from docker/db-schema.env rename to docker/thingsboard-db-schema.env diff --git a/docker/db-schema/Dockerfile b/docker/thingsboard-db-schema/Dockerfile similarity index 100% rename from docker/db-schema/Dockerfile rename to docker/thingsboard-db-schema/Dockerfile diff --git a/docker/db-schema/install_schema.sh b/docker/thingsboard-db-schema/install_schema.sh similarity index 100% rename from docker/db-schema/install_schema.sh rename to docker/thingsboard-db-schema/install_schema.sh diff --git a/docker/thingsboard/Dockerfile b/docker/thingsboard/Dockerfile index ee6acd4305..c145939ee4 100644 --- a/docker/thingsboard/Dockerfile +++ b/docker/thingsboard/Dockerfile @@ -14,10 +14,10 @@ # limitations under the License. # -FROM java:8-jre +FROM openjdk:8-jre -ADD run_web_app.sh /root/run_web_app.sh +ADD run_thingsboard.sh /root/run_thingsboard.sh -RUN chmod +x /root/run_web_app.sh +RUN chmod +x /root/run_thingsboard.sh WORKDIR /root diff --git a/docker/thingsboard/run_web_app.sh b/docker/thingsboard/run_thingsboard.sh similarity index 61% rename from docker/thingsboard/run_web_app.sh rename to docker/thingsboard/run_thingsboard.sh index f57cac0820..62079731ad 100755 --- a/docker/thingsboard/run_web_app.sh +++ b/docker/thingsboard/run_thingsboard.sh @@ -21,16 +21,24 @@ dpkg -i /root/thingsboard.deb reachable=0 while [ $reachable -eq 0 ]; do - echo "db-schema container is still in progress. waiting until it completed..." + echo "thingsboard-db-schema container is still in progress. waiting until it completed..." sleep 3 - ping -q -c 1 db-schema > /dev/null 2>&1 + ping -q -c 1 thingsboard-db-schema > /dev/null 2>&1 if [ "$?" -ne 0 ]; then - echo "db-schema container completed!" + echo "thingsboard-db-schema container completed!" reachable=1 fi done -echo "Starting 'Thingsboard' service..." -thingsboard start +# Copying env variables into conf files +printenv | while read x; do echo export $x; done >> /usr/share/thingsboard/conf/thingsboard.conf +cat /usr/share/thingsboard/conf/thingsboard.conf + +echo "Starting 'Thingsboard' service..." +service thingsboard start + +# Wait until log file is created +sleep 3 +tail -f /var/log/thingsboard/thingsboard.log