From 8bf78f0d21c16c0538b60c05a5f6934a890de1a8 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Wed, 13 Jul 2016 18:44:46 +0500 Subject: Reduce locks of devices --- src/org/traccar/database/DataManager.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/org/traccar/database/DataManager.java') diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index b3f24383f..0dc3c5c52 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -401,9 +401,11 @@ public class DataManager implements IdentityManager { QueryBuilder.create(dataSource, getQuery("database.updateDeviceStatus")) .setObject(device) .executeUpdate(); - Device cachedDevice = getDeviceById(device.getId()); - cachedDevice.setStatus(device.getStatus()); - cachedDevice.setMotion(device.getMotion()); + if (devicesById.containsKey(device.getId())) { + Device cachedDevice = devicesById.get(device.getId()); + cachedDevice.setStatus(device.getStatus()); + cachedDevice.setMotion(device.getMotion()); + } } public void removeDevice(long deviceId) throws SQLException { @@ -512,8 +514,10 @@ public class DataManager implements IdentityManager { .setDate("now", new Date()) .setObject(position) .executeUpdate(); - Device device = getDeviceById(position.getDeviceId()); - device.setPositionId(position.getId()); + if (devicesById.containsKey(position.getDeviceId())) { + Device cachedDevice = devicesById.get(position.getDeviceId()); + cachedDevice.setPositionId(position.getId()); + } } public Collection getLatestPositions() throws SQLException { -- cgit v1.2.3