Skip to content
Snippets Groups Projects
Commit e2e9d493 authored by Daniel Gerhardt's avatar Daniel Gerhardt
Browse files

Inverted database query used to remove inactive users from legacy map.

This should perform much better.
parent 305c2f96
Branches
Tags
No related merge requests found
...@@ -1376,14 +1376,14 @@ public class CouchDBDao implements IDatabaseDao { ...@@ -1376,14 +1376,14 @@ public class CouchDBDao implements IDatabaseDao {
} }
@Override @Override
public final List<String> getInactiveUsers(int timeDifference) { public final List<String> getActiveUsers(int timeDifference) {
try { try {
long inactiveBeforeTimestamp = new Date().getTime() - timeDifference * 1000; long inactiveBeforeTimestamp = new Date().getTime() - timeDifference * 1000;
View view = new View("logged_in/by_and_only_timestamp_and_username"); View view = new View("logged_in/by_and_only_timestamp_and_username");
view.setEndKey("[" + URLEncoder.encode(String.valueOf(inactiveBeforeTimestamp) + ",{}", "UTF-8") + "]"); view.setStartKey("[" + URLEncoder.encode(String.valueOf(inactiveBeforeTimestamp), "UTF-8") + "]");
ViewResults results = this.getDatabase().view(view); ViewResults results = this.getDatabase().view(view);
LOGGER.debug("getInactiveUsers result count: {}", String.valueOf(results.size())); LOGGER.debug("getActiveUsers result count: {}", String.valueOf(results.size()));
List<String> result = new ArrayList<String>(); List<String> result = new ArrayList<String>();
for (Document d : results.getResults()) { for (Document d : results.getResults()) {
...@@ -1392,7 +1392,7 @@ public class CouchDBDao implements IDatabaseDao { ...@@ -1392,7 +1392,7 @@ public class CouchDBDao implements IDatabaseDao {
return result; return result;
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
LOGGER.error("Error while retrieving inactive users", e); LOGGER.error("Error while retrieving active users", e);
} }
return null; return null;
} }
......
...@@ -134,5 +134,5 @@ public interface IDatabaseDao { ...@@ -134,5 +134,5 @@ public interface IDatabaseDao {
Session lockSession(Session session, Boolean lock); Session lockSession(Session session, Boolean lock);
List<String> getInactiveUsers(int timeDifference); List<String> getActiveUsers(int timeDifference);
} }
...@@ -64,10 +64,10 @@ public class UserService implements IUserService, InitializingBean, DisposableBe ...@@ -64,10 +64,10 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
@Scheduled(fixedDelay = DEFAULT_SCHEDULER_DELAY_MS) @Scheduled(fixedDelay = DEFAULT_SCHEDULER_DELAY_MS)
public final void removeInactiveUsersFromLegacyMap() { public final void removeInactiveUsersFromLegacyMap() {
List<String> usernames = databaseDao.getInactiveUsers(MAX_USER_INACTIVE_SECONDS); List<String> usernames = databaseDao.getActiveUsers(MAX_USER_INACTIVE_SECONDS);
Set<String> affectedSessions = new HashSet<String>(); Set<String> affectedSessions = new HashSet<String>();
LOGGER.info( LOGGER.info(
"Inactive users count: {}, user2sessionLegacy count: {}", "Active users in database: {}, active users in memory (user2sessionLegacy): {}",
usernames.size(), user2sessionLegacy.size() usernames.size(), user2sessionLegacy.size()
); );
for (Entry<User, String> e : user2sessionLegacy.entrySet()) { for (Entry<User, String> e : user2sessionLegacy.entrySet()) {
...@@ -76,8 +76,12 @@ public class UserService implements IUserService, InitializingBean, DisposableBe ...@@ -76,8 +76,12 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
LOGGER.debug("key: {}", key); LOGGER.debug("key: {}", key);
String username = key.getUsername(); String username = key.getUsername();
LOGGER.debug("username: {}", username); LOGGER.debug("username: {}", username);
if (usernames.contains(username)) { if (!usernames.contains(username)) {
affectedSessions.add(e.getValue()); if (null != e.getValue()) {
affectedSessions.add(e.getValue());
} else {
LOGGER.warn("Session for user {} is null", key);
}
LOGGER.debug("Removing user {} from user2sessionLegacy", e.getKey()); LOGGER.debug("Removing user {} from user2sessionLegacy", e.getKey());
user2sessionLegacy.remove(e.getKey()); user2sessionLegacy.remove(e.getKey());
} }
......
...@@ -427,7 +427,7 @@ public class StubDatabaseDao implements IDatabaseDao { ...@@ -427,7 +427,7 @@ public class StubDatabaseDao implements IDatabaseDao {
} }
@Override @Override
public List<String> getInactiveUsers(int timeDifference) { public List<String> getActiveUsers(int timeDifference) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment