From bab2d74665276cb3e0de3930f9d11a15683837f1 Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <daniel.gerhardt@mni.thm.de>
Date: Mon, 12 May 2014 00:15:53 +0200
Subject: [PATCH] Do not clutter CouchDB with unnecessary document updates

---
 src/main/java/de/thm/arsnova/dao/CouchDBDao.java | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 53c3d4ea..5d59ae3d 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -387,6 +387,11 @@ public class CouchDBDao implements IDatabaseDao {
 				}
 			}
 
+			/* Do not clutter CouchDB. Only update once every 3 hours per session. */
+			if (loggedIn.getSessionId().equals(session.get_id()) && loggedIn.getTimestamp() > System.currentTimeMillis() - 3 * 3600000) {
+				return loggedIn;
+			}
+
 			loggedIn.setUser(user.getUsername());
 			loggedIn.setSessionId(session.get_id());
 			loggedIn.addVisitedSession(session);
@@ -420,6 +425,11 @@ public class CouchDBDao implements IDatabaseDao {
 	@Override
 	public final void updateSessionOwnerActivity(final Session session) {
 		try {
+			/* Do not clutter CouchDB. Only update once every 3 hours. */
+			if (session.getLastOwnerActivity() > System.currentTimeMillis() - 3 * 3600000) {
+				return;
+			}
+
 			session.setLastOwnerActivity(System.currentTimeMillis());
 			JSONObject json = JSONObject.fromObject(session);
 			this.getDatabase().saveDocument(new Document(json));
-- 
GitLab