Browse Source

remove transaction from TbLwM2mRedisRegistrationStore

pull/4661/head^2
YevhenBondarenko 5 years ago
parent
commit
b4ce9e15cc
  1. 1
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/DefaultLwM2MTransportMsgHandler.java
  2. 9
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/TbLwM2mRedisRegistrationStore.java

1
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/DefaultLwM2MTransportMsgHandler.java

@ -247,7 +247,6 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
* @param observations - !!! Warn: if have not finishing unReg, then this operation will be finished on next Client`s connect * @param observations - !!! Warn: if have not finishing unReg, then this operation will be finished on next Client`s connect
*/ */
public void unReg(Registration registration, Collection<Observation> observations) { public void unReg(Registration registration, Collection<Observation> observations) {
log.error("Client unRegistration -> test", new RuntimeException());
unRegistrationExecutor.submit(() -> { unRegistrationExecutor.submit(() -> {
try { try {
this.sendLogsToThingsboard(LOG_LW2M_INFO + ": Client unRegistration", registration.getId()); this.sendLogsToThingsboard(LOG_LW2M_INFO + ": Client unRegistration", registration.getId());

9
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/TbLwM2mRedisRegistrationStore.java

@ -337,23 +337,24 @@ public class TbLwM2mRedisRegistrationStore implements CaliforniumRegistrationSto
} }
} }
//TODO: JedisCluster didn't implement Transaction, maybe should use some advanced key creation strategies
private void removeAddrIndex(RedisConnection connection, Registration registration) { private void removeAddrIndex(RedisConnection connection, Registration registration) {
// Watch the key to remove. // Watch the key to remove.
byte[] regAddrKey = toRegAddrKey(registration.getSocketAddress()); byte[] regAddrKey = toRegAddrKey(registration.getSocketAddress());
connection.watch(regAddrKey); // connection.watch(regAddrKey);
byte[] epFromAddr = connection.get(regAddrKey); byte[] epFromAddr = connection.get(regAddrKey);
// Delete the key if needed. // Delete the key if needed.
if (Arrays.equals(epFromAddr, registration.getEndpoint().getBytes(UTF_8))) { if (Arrays.equals(epFromAddr, registration.getEndpoint().getBytes(UTF_8))) {
// Try to delete the key // Try to delete the key
connection.multi(); // connection.multi();
connection.del(regAddrKey); connection.del(regAddrKey);
connection.exec(); // connection.exec();
// if transaction failed this is not an issue as the socket address is probably reused and we don't neeed to // if transaction failed this is not an issue as the socket address is probably reused and we don't neeed to
// delete it anymore. // delete it anymore.
} else { } else {
// the key must not be deleted. // the key must not be deleted.
connection.unwatch(); // connection.unwatch();
} }
} }

Loading…
Cancel
Save