Commit ceb9ba2704776853da6768245fd4655b6871bcf1

Authored by Igor Kulikov
2 parents c9b201a8 84bbd412

Merge branch 'master' of github.com:ashvayka/thingsboard

@@ -112,7 +112,7 @@ buildDeb { @@ -112,7 +112,7 @@ buildDeb {
112 112
113 archiveName = "${pkgName}.deb" 113 archiveName = "${pkgName}.deb"
114 114
115 - requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer") 115 + requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer").or("openjdk-8-jre-headless")
116 116
117 configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf") 117 configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf")
118 configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml") 118 configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml")
@@ -169,8 +169,17 @@ cache: @@ -169,8 +169,17 @@ cache:
169 # Enable/disable cache functionality. 169 # Enable/disable cache functionality.
170 enabled: "${CACHE_ENABLED:true}" 170 enabled: "${CACHE_ENABLED:true}"
171 device_credentials: 171 device_credentials:
172 - # default time to store device credentials in cache, in seconds  
173 - time_to_live: "${DEVICE_CREDENTIAL_CACHE_TTL:3600}"  
174 - # default maximum size of device credentials cache  
175 - max_size: "${DEVICE_CREDENTIAL_CACHE_MAX_SIZE:1000000}" 172 + # Default time to store device credentials in cache, in seconds
  173 + time_to_live: "${CACHE_DEVICE_CREDENTIAL_TTL:3600}"
  174 + # Maximum size of the map. When maximum size is reached, the map is evicted based on the policy defined.
  175 + max_size:
  176 + # Max size policy options:
  177 + # PER_NODE: Maximum number of map entries in each JVM.
  178 + # PER_PARTITION: Maximum number of map entries within each partition.
  179 + # USED_HEAP_SIZE: Maximum used heap size in megabytes for each JVM.
  180 + # USED_HEAP_PERCENTAGE: Maximum used heap size percentage for each JVM.
  181 + # FREE_HEAP_SIZE: Minimum free heap size in megabytes for each JVM.
  182 + # FREE_HEAP_PERCENTAGE: Minimum free heap size percentage for each JVM.
  183 + policy: "${CACHE_DEVICE_CREDENTIAL_MAX_SIZE_POLICY:PER_NODE}"
  184 + size: "${CACHE_DEVICE_CREDENTIAL_MAX_SIZE_SIZE:1000000}"
176 185
@@ -15,10 +15,7 @@ @@ -15,10 +15,7 @@
15 */ 15 */
16 package org.thingsboard.server.dao.cache; 16 package org.thingsboard.server.dao.cache;
17 17
18 -import com.hazelcast.config.Config;  
19 -import com.hazelcast.config.DiscoveryStrategyConfig;  
20 -import com.hazelcast.config.MapConfig;  
21 -import com.hazelcast.config.MaxSizeConfig; 18 +import com.hazelcast.config.*;
22 import com.hazelcast.core.Hazelcast; 19 import com.hazelcast.core.Hazelcast;
23 import com.hazelcast.core.HazelcastInstance; 20 import com.hazelcast.core.HazelcastInstance;
24 import com.hazelcast.instance.GroupProperty; 21 import com.hazelcast.instance.GroupProperty;
@@ -41,10 +38,13 @@ public class ServiceCacheConfiguration { @@ -41,10 +38,13 @@ public class ServiceCacheConfiguration {
41 38
42 private static final String HAZELCAST_CLUSTER_NAME = "hazelcast"; 39 private static final String HAZELCAST_CLUSTER_NAME = "hazelcast";
43 40
44 - @Value("${cache.device_credentials.max_size}")  
45 - private Integer deviceCredentialsCacheMaxSize; 41 + @Value("${cache.device_credentials.max_size.size}")
  42 + private Integer cacheDeviceCredentialsMaxSizeSize;
  43 + @Value("${cache.device_credentials.max_size.policy}")
  44 + private String cacheDeviceCredentialsMaxSizePolicy;
46 @Value("${cache.device_credentials.time_to_live}") 45 @Value("${cache.device_credentials.time_to_live}")
47 - private Integer deviceCredentialsCacheTTL; 46 + private Integer cacheDeviceCredentialsTTL;
  47 +
48 48
49 @Value("${zk.enabled}") 49 @Value("${zk.enabled}")
50 private boolean zkEnabled; 50 private boolean zkEnabled;
@@ -69,8 +69,13 @@ public class ServiceCacheConfiguration { @@ -69,8 +69,13 @@ public class ServiceCacheConfiguration {
69 } 69 }
70 70
71 MapConfig deviceCredentialsCacheConfig = new MapConfig(CacheConstants.DEVICE_CREDENTIALS_CACHE); 71 MapConfig deviceCredentialsCacheConfig = new MapConfig(CacheConstants.DEVICE_CREDENTIALS_CACHE);
72 - deviceCredentialsCacheConfig.setTimeToLiveSeconds(deviceCredentialsCacheTTL);  
73 - deviceCredentialsCacheConfig.setMaxSizeConfig(new MaxSizeConfig(deviceCredentialsCacheMaxSize, MaxSizeConfig.MaxSizePolicy.PER_NODE)); 72 + deviceCredentialsCacheConfig.setTimeToLiveSeconds(cacheDeviceCredentialsTTL);
  73 + deviceCredentialsCacheConfig.setEvictionPolicy(EvictionPolicy.LRU);
  74 + deviceCredentialsCacheConfig.setMaxSizeConfig(
  75 + new MaxSizeConfig(
  76 + cacheDeviceCredentialsMaxSizeSize,
  77 + MaxSizeConfig.MaxSizePolicy.valueOf(cacheDeviceCredentialsMaxSizePolicy))
  78 + );
74 config.addMapConfig(deviceCredentialsCacheConfig); 79 config.addMapConfig(deviceCredentialsCacheConfig);
75 80
76 return Hazelcast.newHazelcastInstance(config); 81 return Hazelcast.newHazelcastInstance(config);
1 cache.enabled=false 1 cache.enabled=false
2 cache.device_credentials.time_to_live=3600 2 cache.device_credentials.time_to_live=3600
3 -cache.device_credentials.max_size=1000000 3 +cache.device_credentials.max_size.size=1000000
  4 +cache.device_credentials.max_size.policy=PER_NODE
4 5
5 zk.enabled=false 6 zk.enabled=false
6 zk.url=localhost:2181 7 zk.url=localhost:2181
@@ -26,18 +26,18 @@ services: @@ -26,18 +26,18 @@ services:
26 links: 26 links:
27 - cassandra:db 27 - cassandra:db
28 - zookeeper:zk 28 - zookeeper:zk
29 - - db-schema:db-schema 29 + - thingsboard-db-schema:thingsboard-db-schema
30 volumes: 30 volumes:
31 - "../application/target/thingsboard.deb:/root/thingsboard.deb" 31 - "../application/target/thingsboard.deb:/root/thingsboard.deb"
32 env_file: 32 env_file:
33 - thingsboard.env 33 - thingsboard.env
34 - entrypoint: ./run_web_app.sh  
35 - db-schema:  
36 - build: db-schema 34 + entrypoint: ./run_thingsboard.sh
  35 + thingsboard-db-schema:
  36 + build: thingsboard-db-schema
37 links: 37 links:
38 - cassandra:db 38 - cassandra:db
39 env_file: 39 env_file:
40 - - db-schema.env 40 + - thingsboard-db-schema.env
41 volumes: 41 volumes:
42 - "../dao/src/main/resources/schema.cql:/root/schema.cql" 42 - "../dao/src/main/resources/schema.cql:/root/schema.cql"
43 - "../dao/src/main/resources/demo-data.cql:/root/demo-data.cql" 43 - "../dao/src/main/resources/demo-data.cql:/root/demo-data.cql"
docker/thingsboard-db-schema/Dockerfile renamed from docker/db-schema/Dockerfile
docker/thingsboard-db-schema/install_schema.sh renamed from docker/db-schema/install_schema.sh
@@ -14,10 +14,10 @@ @@ -14,10 +14,10 @@
14 # limitations under the License. 14 # limitations under the License.
15 # 15 #
16 16
17 -FROM java:8-jre 17 +FROM openjdk:8-jre
18 18
19 -ADD run_web_app.sh /root/run_web_app.sh 19 +ADD run_thingsboard.sh /root/run_thingsboard.sh
20 20
21 -RUN chmod +x /root/run_web_app.sh 21 +RUN chmod +x /root/run_thingsboard.sh
22 22
23 WORKDIR /root 23 WORKDIR /root
docker/thingsboard/run_thingsboard.sh renamed from docker/thingsboard/run_web_app.sh
@@ -21,16 +21,24 @@ dpkg -i /root/thingsboard.deb @@ -21,16 +21,24 @@ dpkg -i /root/thingsboard.deb
21 reachable=0 21 reachable=0
22 while [ $reachable -eq 0 ]; 22 while [ $reachable -eq 0 ];
23 do 23 do
24 - echo "db-schema container is still in progress. waiting until it completed..." 24 + echo "thingsboard-db-schema container is still in progress. waiting until it completed..."
25 sleep 3 25 sleep 3
26 - ping -q -c 1 db-schema > /dev/null 2>&1 26 + ping -q -c 1 thingsboard-db-schema > /dev/null 2>&1
27 if [ "$?" -ne 0 ]; 27 if [ "$?" -ne 0 ];
28 then 28 then
29 - echo "db-schema container completed!" 29 + echo "thingsboard-db-schema container completed!"
30 reachable=1 30 reachable=1
31 fi 31 fi
32 done 32 done
33 33
  34 +# Copying env variables into conf files
  35 +printenv | while read x; do echo export $x; done >> /usr/share/thingsboard/conf/thingsboard.conf
  36 +
  37 +cat /usr/share/thingsboard/conf/thingsboard.conf
  38 +
34 echo "Starting 'Thingsboard' service..." 39 echo "Starting 'Thingsboard' service..."
35 -thingsboard start 40 +service thingsboard start
36 41
  42 +# Wait until log file is created
  43 +sleep 3
  44 +tail -f /var/log/thingsboard/thingsboard.log