Merge branch 'develop/3.5' of github.com:thingsboard/thingsboard into develop/3.5-fixes

This commit is contained in:
YevhenBondarenko 2023-03-29 12:46:53 +02:00
commit 46b62be30c
7 changed files with 83 additions and 13 deletions

View File

@ -112,13 +112,11 @@ public class DefaultSystemInfoService extends TbApplicationEventListener<Partiti
public SystemInfo getSystemInfo() { public SystemInfo getSystemInfo() {
SystemInfo systemInfo = new SystemInfo(); SystemInfo systemInfo = new SystemInfo();
ServiceInfo serviceInfo = serviceInfoProvider.getServiceInfoWithCurrentSystemInfo();
if (discoveryService.isMonolith()) { if (discoveryService.isMonolith()) {
systemInfo.setMonolith(true); systemInfo.setMonolith(true);
systemInfo.setSystemData(Collections.singletonList(createSystemInfoData(serviceInfo))); systemInfo.setSystemData(Collections.singletonList(createSystemInfoData(serviceInfoProvider.generateNewServiceInfoWithCurrentSystemInfo())));
} else { } else {
systemInfo.setSystemData(getSystemData(serviceInfo)); systemInfo.setSystemData(getSystemData(serviceInfoProvider.getServiceInfo()));
} }
return systemInfo; return systemInfo;
@ -156,7 +154,7 @@ public class DefaultSystemInfoService extends TbApplicationEventListener<Partiti
private void saveCurrentClusterSystemInfo() { private void saveCurrentClusterSystemInfo() {
long ts = System.currentTimeMillis(); long ts = System.currentTimeMillis();
List<SystemInfoData> clusterSystemData = getSystemData(serviceInfoProvider.getServiceInfoWithCurrentSystemInfo()); List<SystemInfoData> clusterSystemData = getSystemData(serviceInfoProvider.getServiceInfo());
BasicTsKvEntry clusterDataKv = new BasicTsKvEntry(ts, new JsonDataEntry("clusterSystemData", JacksonUtil.toString(clusterSystemData))); BasicTsKvEntry clusterDataKv = new BasicTsKvEntry(ts, new JsonDataEntry("clusterSystemData", JacksonUtil.toString(clusterSystemData)));
doSave(Collections.singletonList(clusterDataKv)); doSave(Collections.singletonList(clusterDataKv));
} }
@ -164,7 +162,6 @@ public class DefaultSystemInfoService extends TbApplicationEventListener<Partiti
private void saveCurrentMonolithSystemInfo() { private void saveCurrentMonolithSystemInfo() {
long ts = System.currentTimeMillis(); long ts = System.currentTimeMillis();
List<TsKvEntry> tsList = new ArrayList<>(); List<TsKvEntry> tsList = new ArrayList<>();
getMemoryUsage().ifPresent(v -> tsList.add(new BasicTsKvEntry(ts, new LongDataEntry("memoryUsage", v)))); getMemoryUsage().ifPresent(v -> tsList.add(new BasicTsKvEntry(ts, new LongDataEntry("memoryUsage", v))));
getTotalMemory().ifPresent(v -> tsList.add(new BasicTsKvEntry(ts, new LongDataEntry("totalMemory", v)))); getTotalMemory().ifPresent(v -> tsList.add(new BasicTsKvEntry(ts, new LongDataEntry("totalMemory", v))));
getFreeMemory().ifPresent(v -> tsList.add(new BasicTsKvEntry(ts, new LongDataEntry("freeMemory", v)))); getFreeMemory().ifPresent(v -> tsList.add(new BasicTsKvEntry(ts, new LongDataEntry("freeMemory", v))));

View File

@ -79,7 +79,7 @@ public class DefaultTbServiceInfoProvider implements TbServiceInfoProvider {
serviceTypes = Collections.singletonList(ServiceType.of(serviceType)); serviceTypes = Collections.singletonList(ServiceType.of(serviceType));
} }
serviceInfo = getServiceInfoWithCurrentSystemInfo(); generateNewServiceInfoWithCurrentSystemInfo();
} }
@AfterContextReady @AfterContextReady
@ -106,13 +106,13 @@ public class DefaultTbServiceInfoProvider implements TbServiceInfoProvider {
} }
@Override @Override
public ServiceInfo getServiceInfoWithCurrentSystemInfo() { public ServiceInfo generateNewServiceInfoWithCurrentSystemInfo() {
ServiceInfo.Builder builder = ServiceInfo.newBuilder() ServiceInfo.Builder builder = ServiceInfo.newBuilder()
.setServiceId(serviceId) .setServiceId(serviceId)
.addAllServiceTypes(serviceTypes.stream().map(ServiceType::name).collect(Collectors.toList())) .addAllServiceTypes(serviceTypes.stream().map(ServiceType::name).collect(Collectors.toList()))
.setSystemInfo(getCurrentSystemInfoProto()); .setSystemInfo(getCurrentSystemInfoProto());
return builder.build(); return serviceInfo = builder.build();
} }
private TransportProtos.SystemInfoProto getCurrentSystemInfoProto() { private TransportProtos.SystemInfoProto getCurrentSystemInfoProto() {

View File

@ -16,7 +16,6 @@
package org.thingsboard.server.queue.discovery; package org.thingsboard.server.queue.discovery;
import org.thingsboard.server.common.msg.queue.ServiceType; import org.thingsboard.server.common.msg.queue.ServiceType;
import org.thingsboard.server.gen.transport.TransportProtos;
import org.thingsboard.server.gen.transport.TransportProtos.ServiceInfo; import org.thingsboard.server.gen.transport.TransportProtos.ServiceInfo;
public interface TbServiceInfoProvider { public interface TbServiceInfoProvider {
@ -29,6 +28,6 @@ public interface TbServiceInfoProvider {
boolean isService(ServiceType serviceType); boolean isService(ServiceType serviceType);
ServiceInfo getServiceInfoWithCurrentSystemInfo(); ServiceInfo generateNewServiceInfoWithCurrentSystemInfo();
} }

View File

@ -143,7 +143,7 @@ public class ZkDiscoveryService implements DiscoveryService, PathChildrenCacheLi
TransportProtos.ServiceInfo self = serviceInfoProvider.getServiceInfo(); TransportProtos.ServiceInfo self = serviceInfoProvider.getServiceInfo();
if (currentServerExists()) { if (currentServerExists()) {
log.trace("[{}] Updating ZK node for current instance: {}", self.getServiceId(), nodePath); log.trace("[{}] Updating ZK node for current instance: {}", self.getServiceId(), nodePath);
client.setData().forPath(nodePath, serviceInfoProvider.getServiceInfoWithCurrentSystemInfo().toByteArray()); client.setData().forPath(nodePath, serviceInfoProvider.generateNewServiceInfoWithCurrentSystemInfo().toByteArray());
} else { } else {
try { try {
log.info("[{}] Creating ZK node for current instance", self.getServiceId()); log.info("[{}] Creating ZK node for current instance", self.getServiceId());

View File

@ -15,7 +15,7 @@
limitations under the License. limitations under the License.
--> -->
<button color="primary" mat-icon-button <button mat-icon-button
type="button" type="button"
(click)="gotoHelpPage()" (click)="gotoHelpPage()"
matTooltip="{{'help.goto-help-page' | translate}}" matTooltip="{{'help.goto-help-page' | translate}}"

View File

@ -140,6 +140,8 @@ export enum QuickTimeInterval {
PREVIOUS_WEEK = 'PREVIOUS_WEEK', PREVIOUS_WEEK = 'PREVIOUS_WEEK',
PREVIOUS_WEEK_ISO = 'PREVIOUS_WEEK_ISO', PREVIOUS_WEEK_ISO = 'PREVIOUS_WEEK_ISO',
PREVIOUS_MONTH = 'PREVIOUS_MONTH', PREVIOUS_MONTH = 'PREVIOUS_MONTH',
PREVIOUS_QUARTER = 'PREVIOUS_QUARTER',
PREVIOUS_HALF_YEAR = 'PREVIOUS_HALF_YEAR',
PREVIOUS_YEAR = 'PREVIOUS_YEAR', PREVIOUS_YEAR = 'PREVIOUS_YEAR',
CURRENT_HOUR = 'CURRENT_HOUR', CURRENT_HOUR = 'CURRENT_HOUR',
CURRENT_DAY = 'CURRENT_DAY', CURRENT_DAY = 'CURRENT_DAY',
@ -150,6 +152,10 @@ export enum QuickTimeInterval {
CURRENT_WEEK_ISO_SO_FAR = 'CURRENT_WEEK_ISO_SO_FAR', CURRENT_WEEK_ISO_SO_FAR = 'CURRENT_WEEK_ISO_SO_FAR',
CURRENT_MONTH = 'CURRENT_MONTH', CURRENT_MONTH = 'CURRENT_MONTH',
CURRENT_MONTH_SO_FAR = 'CURRENT_MONTH_SO_FAR', CURRENT_MONTH_SO_FAR = 'CURRENT_MONTH_SO_FAR',
CURRENT_QUARTER = 'CURRENT_QUARTER',
CURRENT_QUARTER_SO_FAR = 'CURRENT_QUARTER_SO_FAR',
CURRENT_HALF_YEAR = 'CURRENT_HALF_YEAR',
CURRENT_HALF_YEAR_SO_FAR = 'CURRENT_HALF_YEAR_SO_FAR',
CURRENT_YEAR = 'CURRENT_YEAR', CURRENT_YEAR = 'CURRENT_YEAR',
CURRENT_YEAR_SO_FAR = 'CURRENT_YEAR_SO_FAR' CURRENT_YEAR_SO_FAR = 'CURRENT_YEAR_SO_FAR'
} }
@ -161,6 +167,8 @@ export const QuickTimeIntervalTranslationMap = new Map<QuickTimeInterval, string
[QuickTimeInterval.PREVIOUS_WEEK, 'timeinterval.predefined.previous-week'], [QuickTimeInterval.PREVIOUS_WEEK, 'timeinterval.predefined.previous-week'],
[QuickTimeInterval.PREVIOUS_WEEK_ISO, 'timeinterval.predefined.previous-week-iso'], [QuickTimeInterval.PREVIOUS_WEEK_ISO, 'timeinterval.predefined.previous-week-iso'],
[QuickTimeInterval.PREVIOUS_MONTH, 'timeinterval.predefined.previous-month'], [QuickTimeInterval.PREVIOUS_MONTH, 'timeinterval.predefined.previous-month'],
[QuickTimeInterval.PREVIOUS_QUARTER, 'timeinterval.predefined.previous-quarter'],
[QuickTimeInterval.PREVIOUS_HALF_YEAR, 'timeinterval.predefined.previous-half-year'],
[QuickTimeInterval.PREVIOUS_YEAR, 'timeinterval.predefined.previous-year'], [QuickTimeInterval.PREVIOUS_YEAR, 'timeinterval.predefined.previous-year'],
[QuickTimeInterval.CURRENT_HOUR, 'timeinterval.predefined.current-hour'], [QuickTimeInterval.CURRENT_HOUR, 'timeinterval.predefined.current-hour'],
[QuickTimeInterval.CURRENT_DAY, 'timeinterval.predefined.current-day'], [QuickTimeInterval.CURRENT_DAY, 'timeinterval.predefined.current-day'],
@ -171,6 +179,10 @@ export const QuickTimeIntervalTranslationMap = new Map<QuickTimeInterval, string
[QuickTimeInterval.CURRENT_WEEK_ISO_SO_FAR, 'timeinterval.predefined.current-week-iso-so-far'], [QuickTimeInterval.CURRENT_WEEK_ISO_SO_FAR, 'timeinterval.predefined.current-week-iso-so-far'],
[QuickTimeInterval.CURRENT_MONTH, 'timeinterval.predefined.current-month'], [QuickTimeInterval.CURRENT_MONTH, 'timeinterval.predefined.current-month'],
[QuickTimeInterval.CURRENT_MONTH_SO_FAR, 'timeinterval.predefined.current-month-so-far'], [QuickTimeInterval.CURRENT_MONTH_SO_FAR, 'timeinterval.predefined.current-month-so-far'],
[QuickTimeInterval.CURRENT_QUARTER, 'timeinterval.predefined.current-quarter'],
[QuickTimeInterval.CURRENT_QUARTER_SO_FAR, 'timeinterval.predefined.current-quarter-so-far'],
[QuickTimeInterval.CURRENT_HALF_YEAR, 'timeinterval.predefined.current-half-year'],
[QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR, 'timeinterval.predefined.current-half-year-so-far'],
[QuickTimeInterval.CURRENT_YEAR, 'timeinterval.predefined.current-year'], [QuickTimeInterval.CURRENT_YEAR, 'timeinterval.predefined.current-year'],
[QuickTimeInterval.CURRENT_YEAR_SO_FAR, 'timeinterval.predefined.current-year-so-far'] [QuickTimeInterval.CURRENT_YEAR_SO_FAR, 'timeinterval.predefined.current-year-so-far']
]); ]);
@ -485,6 +497,18 @@ function getSubscriptionRealtimeWindowFromTimeInterval(interval: QuickTimeInterv
case QuickTimeInterval.CURRENT_MONTH_SO_FAR: case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
currentDate = getCurrentTime(tz); currentDate = getCurrentTime(tz);
return currentDate.endOf('month').diff(currentDate.clone().startOf('month')); return currentDate.endOf('month').diff(currentDate.clone().startOf('month'));
case QuickTimeInterval.CURRENT_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
currentDate = getCurrentTime(tz);
return currentDate.endOf('quarter').diff(currentDate.clone().startOf('quarter'));
case QuickTimeInterval.CURRENT_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
currentDate = getCurrentTime(tz);
if (currentDate.get('quarter') < 3) {
return currentDate.clone().set('quarter', 2).endOf('quarter').diff(currentDate.startOf('year'));
} else {
return currentDate.endOf('year').diff(currentDate.clone().set('quarter', 3).startOf('quarter'));
}
case QuickTimeInterval.CURRENT_YEAR: case QuickTimeInterval.CURRENT_YEAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR: case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
currentDate = getCurrentTime(tz); currentDate = getCurrentTime(tz);
@ -539,6 +563,16 @@ export function calculateIntervalStartTime(interval: QuickTimeInterval, currentD
case QuickTimeInterval.CURRENT_MONTH: case QuickTimeInterval.CURRENT_MONTH:
case QuickTimeInterval.CURRENT_MONTH_SO_FAR: case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
return currentDate.startOf('month'); return currentDate.startOf('month');
case QuickTimeInterval.CURRENT_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
return currentDate.startOf('quarter');
case QuickTimeInterval.CURRENT_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
if (currentDate.get('quarter') < 3) {
return currentDate.startOf('year');
} else {
return currentDate.clone().set('quarter', 3).startOf('quarter');
}
case QuickTimeInterval.CURRENT_YEAR: case QuickTimeInterval.CURRENT_YEAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR: case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
return currentDate.startOf('year'); return currentDate.startOf('year');
@ -560,6 +594,12 @@ export function calculateIntervalEndTime(interval: QuickTimeInterval, startDate:
case QuickTimeInterval.PREVIOUS_MONTH: case QuickTimeInterval.PREVIOUS_MONTH:
case QuickTimeInterval.CURRENT_MONTH: case QuickTimeInterval.CURRENT_MONTH:
return startDate.add(1, 'month').valueOf(); return startDate.add(1, 'month').valueOf();
case QuickTimeInterval.PREVIOUS_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER:
return startDate.add(1, 'quarter').valueOf();
case QuickTimeInterval.PREVIOUS_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR:
return startDate.add(2, 'quarters').valueOf();
case QuickTimeInterval.PREVIOUS_YEAR: case QuickTimeInterval.PREVIOUS_YEAR:
case QuickTimeInterval.CURRENT_YEAR: case QuickTimeInterval.CURRENT_YEAR:
return startDate.add(1, 'year').valueOf(); return startDate.add(1, 'year').valueOf();
@ -569,6 +609,8 @@ export function calculateIntervalEndTime(interval: QuickTimeInterval, startDate:
case QuickTimeInterval.CURRENT_WEEK_SO_FAR: case QuickTimeInterval.CURRENT_WEEK_SO_FAR:
case QuickTimeInterval.CURRENT_WEEK_ISO_SO_FAR: case QuickTimeInterval.CURRENT_WEEK_ISO_SO_FAR:
case QuickTimeInterval.CURRENT_MONTH_SO_FAR: case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR: case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
return getCurrentTime(tz).valueOf(); return getCurrentTime(tz).valueOf();
} }
@ -595,6 +637,14 @@ export function quickTimeIntervalPeriod(interval: QuickTimeInterval): number {
case QuickTimeInterval.CURRENT_MONTH: case QuickTimeInterval.CURRENT_MONTH:
case QuickTimeInterval.CURRENT_MONTH_SO_FAR: case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
return DAY * 30; return DAY * 30;
case QuickTimeInterval.PREVIOUS_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
return DAY * 30 * 3;
case QuickTimeInterval.PREVIOUS_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
return DAY * 30 * 6;
case QuickTimeInterval.PREVIOUS_YEAR: case QuickTimeInterval.PREVIOUS_YEAR:
case QuickTimeInterval.CURRENT_YEAR: case QuickTimeInterval.CURRENT_YEAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR: case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
@ -629,6 +679,20 @@ export function calculateIntervalComparisonStartTime(interval: QuickTimeInterval
case QuickTimeInterval.CURRENT_MONTH_SO_FAR: case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
startDate.subtract(1, 'months'); startDate.subtract(1, 'months');
return startDate.startOf('month'); return startDate.startOf('month');
case QuickTimeInterval.PREVIOUS_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
startDate.subtract(1, 'quarters');
return startDate.startOf('quarter');
case QuickTimeInterval.PREVIOUS_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
startDate.subtract(2, 'quarters');
if (startDate.get('quarter') < 3) {
return startDate.startOf('year');
} else {
return startDate.clone().set('quarter', 3).startOf('quarter');
}
case QuickTimeInterval.PREVIOUS_YEAR: case QuickTimeInterval.PREVIOUS_YEAR:
case QuickTimeInterval.CURRENT_YEAR: case QuickTimeInterval.CURRENT_YEAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR: case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
@ -651,6 +715,10 @@ export function calculateIntervalComparisonEndTime(interval: QuickTimeInterval,
return endDate.subtract(1, 'week').valueOf(); return endDate.subtract(1, 'week').valueOf();
case QuickTimeInterval.CURRENT_MONTH_SO_FAR: case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
return endDate.subtract(1, 'month').valueOf(); return endDate.subtract(1, 'month').valueOf();
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
return endDate.subtract(1, 'quarter').valueOf();
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
return endDate.subtract(2, 'quarters').valueOf();
case QuickTimeInterval.CURRENT_YEAR_SO_FAR: case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
return endDate.subtract(1, 'year').valueOf(); return endDate.subtract(1, 'year').valueOf();
default: default:

View File

@ -3642,6 +3642,8 @@
"previous-week": "Previous week (Sun - Sat)", "previous-week": "Previous week (Sun - Sat)",
"previous-week-iso": "Previous week (Mon - Sun)", "previous-week-iso": "Previous week (Mon - Sun)",
"previous-month": "Previous month", "previous-month": "Previous month",
"previous-quarter": "Previous quarter",
"previous-half-year": "Previous half year",
"previous-year": "Previous year", "previous-year": "Previous year",
"current-hour": "Current hour", "current-hour": "Current hour",
"current-day": "Current day", "current-day": "Current day",
@ -3652,6 +3654,10 @@
"current-week-iso-so-far": "Current week so far (Mon - Sun)", "current-week-iso-so-far": "Current week so far (Mon - Sun)",
"current-month": "Current month", "current-month": "Current month",
"current-month-so-far": "Current month so far", "current-month-so-far": "Current month so far",
"current-quarter": "Current quarter",
"current-quarter-so-far": "Current quarter so far",
"current-half-year": "Current half year",
"current-half-year-so-far": "Current half year so far",
"current-year": "Current year", "current-year": "Current year",
"current-year-so-far": "Current year so far" "current-year-so-far": "Current year so far"
} }