Commit 0ce509e8e6c52d8331566c0ca53dc60418163bb6

Authored by Volodymyr Babak
2 parents 5557406f 1539e455

Merge remote-tracking branch 'upstream/master' into handle-null-values-in-proto

... ... @@ -166,7 +166,7 @@ public class LwM2mClientContextImpl implements LwM2mClientContext {
166 166 this.lwM2mClientsByRegistrationId.put(registration.getId(), client);
167 167 client.setState(LwM2MClientState.REGISTERED);
168 168 onUplink(client);
169   - if(!compareAndSetSleepFlag(client, false)){
  169 + if (!compareAndSetSleepFlag(client, false)) {
170 170 clientStore.put(client);
171 171 }
172 172 } finally {
... ... @@ -316,7 +316,11 @@ public class LwM2mClientContextImpl implements LwM2mClientContext {
316 316 public void update(LwM2mClient client) {
317 317 client.lock();
318 318 try {
319   - clientStore.put(client);
  319 + if (client.getState().equals(LwM2MClientState.REGISTERED)) {
  320 + clientStore.put(client);
  321 + } else {
  322 + log.error("[{}] Client is in invalid state: {}!", client.getEndpoint(), client.getState());
  323 + }
320 324 } finally {
321 325 client.unlock();
322 326 }
... ...
... ... @@ -106,6 +106,7 @@ public abstract class LwM2MClientOtaInfo<Strategy, State, Result> {
106 106
107 107 public abstract OtaPackageType getType();
108 108
  109 + @JsonIgnore
109 110 public String getTargetPackageId() {
110 111 return getPackageId(targetName, targetVersion);
111 112 }
... ...
... ... @@ -15,11 +15,13 @@
15 15 */
16 16 package org.thingsboard.server.transport.lwm2m.server.store;
17 17
  18 +import lombok.extern.slf4j.Slf4j;
18 19 import org.nustaq.serialization.FSTConfiguration;
19 20 import org.springframework.data.redis.connection.RedisClusterConnection;
20 21 import org.springframework.data.redis.connection.RedisConnectionFactory;
21 22 import org.springframework.data.redis.core.Cursor;
22 23 import org.springframework.data.redis.core.ScanOptions;
  24 +import org.thingsboard.server.transport.lwm2m.server.client.LwM2MClientState;
23 25 import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
24 26
25 27 import java.util.ArrayList;
... ... @@ -27,6 +29,7 @@ import java.util.HashSet;
27 29 import java.util.List;
28 30 import java.util.Set;
29 31
  32 +@Slf4j
30 33 public class TbRedisLwM2MClientStore implements TbLwM2MClientStore {
31 34
32 35 private static final String CLIENT_EP = "CLIENT#EP#";
... ... @@ -76,9 +79,13 @@ public class TbRedisLwM2MClientStore implements TbLwM2MClientStore {
76 79
77 80 @Override
78 81 public void put(LwM2mClient client) {
79   - byte[] clientSerialized = serializer.asByteArray(client);
80   - try (var connection = connectionFactory.getConnection()) {
81   - connection.getSet(getKey(client.getEndpoint()), clientSerialized);
  82 + if (client.getState().equals(LwM2MClientState.UNREGISTERED)) {
  83 + log.error("[{}] Client is in invalid state: {}!", client.getEndpoint(), client.getState(), new Exception());
  84 + } else {
  85 + byte[] clientSerialized = serializer.asByteArray(client);
  86 + try (var connection = connectionFactory.getConnection()) {
  87 + connection.getSet(getKey(client.getEndpoint()), clientSerialized);
  88 + }
82 89 }
83 90 }
84 91
... ...
... ... @@ -196,7 +196,7 @@ public class TbDeviceProfileNodeTest {
196 196 TbMsgDataType.JSON, mapper.writeValueAsString(data), null, null);
197 197 node.onMsg(ctx, msg);
198 198 verify(ctx).tellSuccess(msg);
199   - verify(ctx).tellNext(theMsg, "Alarm Created");
  199 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
200 200 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
201 201
202 202 TbMsg theMsg2 = TbMsg.newMsg("ALARM", deviceId, new TbMsgMetaData(), "2");
... ... @@ -207,7 +207,7 @@ public class TbDeviceProfileNodeTest {
207 207 TbMsgDataType.JSON, mapper.writeValueAsString(data), null, null);
208 208 node.onMsg(ctx, msg2);
209 209 verify(ctx).tellSuccess(msg2);
210   - verify(ctx).tellNext(theMsg2, "Alarm Updated");
  210 + verify(ctx).enqueueForTellNext(theMsg2, "Alarm Updated");
211 211
212 212 }
213 213
... ... @@ -289,7 +289,7 @@ public class TbDeviceProfileNodeTest {
289 289
290 290 node.onMsg(ctx, msg);
291 291 verify(ctx).tellSuccess(msg);
292   - verify(ctx).tellNext(theMsg, "Alarm Created");
  292 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
293 293 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
294 294 }
295 295
... ... @@ -376,7 +376,7 @@ public class TbDeviceProfileNodeTest {
376 376
377 377 node.onMsg(ctx, msg);
378 378 verify(ctx).tellSuccess(msg);
379   - verify(ctx).tellNext(theMsg, "Alarm Created");
  379 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
380 380 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
381 381 }
382 382
... ... @@ -445,7 +445,7 @@ public class TbDeviceProfileNodeTest {
445 445
446 446 node.onMsg(ctx, msg);
447 447 verify(ctx).tellSuccess(msg);
448   - verify(ctx).tellNext(theMsg, "Alarm Created");
  448 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
449 449 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
450 450 }
451 451
... ... @@ -554,7 +554,7 @@ public class TbDeviceProfileNodeTest {
554 554
555 555 node.onMsg(ctx, msg2);
556 556 verify(ctx).tellSuccess(msg2);
557   - verify(ctx).tellNext(theMsg, "Alarm Created");
  557 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
558 558 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
559 559 }
560 560
... ... @@ -678,7 +678,7 @@ public class TbDeviceProfileNodeTest {
678 678
679 679 node.onMsg(ctx, msg2);
680 680 verify(ctx).tellSuccess(msg2);
681   - verify(ctx).tellNext(theMsg, "Alarm Created");
  681 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
682 682 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
683 683 }
684 684
... ... @@ -781,7 +781,7 @@ public class TbDeviceProfileNodeTest {
781 781
782 782 node.onMsg(ctx, msg2);
783 783 verify(ctx).tellSuccess(msg2);
784   - verify(ctx).tellNext(theMsg, "Alarm Created");
  784 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
785 785 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
786 786 }
787 787
... ... @@ -897,7 +897,7 @@ public class TbDeviceProfileNodeTest {
897 897
898 898 node.onMsg(ctx, msg2);
899 899 verify(ctx).tellSuccess(msg2);
900   - verify(ctx).tellNext(theMsg, "Alarm Created");
  900 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
901 901 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
902 902 }
903 903
... ... @@ -999,7 +999,7 @@ public class TbDeviceProfileNodeTest {
999 999
1000 1000 node.onMsg(ctx, msg2);
1001 1001 verify(ctx).tellSuccess(msg2);
1002   - verify(ctx).tellNext(theMsg, "Alarm Created");
  1002 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
1003 1003 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
1004 1004 }
1005 1005
... ... @@ -1082,7 +1082,7 @@ public class TbDeviceProfileNodeTest {
1082 1082
1083 1083 node.onMsg(ctx, msg);
1084 1084 verify(ctx).tellSuccess(msg);
1085   - verify(ctx).tellNext(theMsg, "Alarm Created");
  1085 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
1086 1086 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
1087 1087 }
1088 1088
... ... @@ -1163,7 +1163,7 @@ public class TbDeviceProfileNodeTest {
1163 1163
1164 1164 node.onMsg(ctx, msg);
1165 1165 verify(ctx).tellSuccess(msg);
1166   - verify(ctx).tellNext(theMsg, "Alarm Created");
  1166 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
1167 1167 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
1168 1168 }
1169 1169
... ... @@ -1237,7 +1237,7 @@ public class TbDeviceProfileNodeTest {
1237 1237
1238 1238 node.onMsg(ctx, msg);
1239 1239 verify(ctx).tellSuccess(msg);
1240   - verify(ctx).tellNext(theMsg, "Alarm Created");
  1240 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
1241 1241 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
1242 1242 }
1243 1243
... ... @@ -1321,7 +1321,7 @@ public class TbDeviceProfileNodeTest {
1321 1321
1322 1322 node.onMsg(ctx, msg);
1323 1323 verify(ctx).tellSuccess(msg);
1324   - verify(ctx).tellNext(theMsg, "Alarm Created");
  1324 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
1325 1325 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
1326 1326
1327 1327 }
... ... @@ -1407,7 +1407,7 @@ public class TbDeviceProfileNodeTest {
1407 1407
1408 1408 node.onMsg(ctx, msg);
1409 1409 verify(ctx).tellSuccess(msg);
1410   - verify(ctx).tellNext(theMsg, "Alarm Created");
  1410 + verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
1411 1411 verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
1412 1412 }
1413 1413
... ...