mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-22 15:23:14 +01:00
Bugfixes, identified possible database bug (Refactor caused)
Fix #78 #73 #79 - database might not be giving correct results for user id.
This commit is contained in:
parent
e46dcfa535
commit
ccb2498d38
@ -14,6 +14,7 @@ public enum Settings {
|
||||
WEBSERVER_ENABLED("Settings.WebServer.Enabled"),
|
||||
ANALYSIS_REFRESH_ON_ENABLE("Settings.Cache.AnalysisCache.RefreshAnalysisCacheOnEnable"),
|
||||
ANALYSIS_LOG_TO_CONSOLE("Settings.Analysis.LogProgressOnConsole"),
|
||||
ANALYSIS_LOG_FINISHED("Settings.Analysis.NotifyWhenFinished"),
|
||||
SHOW_ALTERNATIVE_IP("Settings.WebServer.ShowAlternativeServerIP"),
|
||||
USE_ALTERNATIVE_UI("Settings.UseTextUI"),
|
||||
GATHERLOCATIONS("Settings.Data.GatherLocations"),
|
||||
@ -36,6 +37,7 @@ public enum Settings {
|
||||
DEM_MALE("Customization.DemographicsTriggers.Male"),
|
||||
DEM_IGNORE("Customization.DemographicsTriggers.IgnoreWhen"),
|
||||
LOCALE("Settings.Locale"),
|
||||
WEBSERVER_IP("Settings.WebServer.InternalIP"),
|
||||
SECURITY_CODE("Settings.WebServer.Security.AddressSecurityCode"),
|
||||
//
|
||||
COLOR_MAIN("Customization.Colors.Commands.Main"),
|
||||
|
@ -102,9 +102,8 @@ public class UserData {
|
||||
try {
|
||||
isBanned = player.isBanned();
|
||||
} catch (Exception e) {
|
||||
Plan plugin = getPlugin(Plan.class);
|
||||
plugin.logError("Error getting ban date from Bukkit files. " + uuid.toString());
|
||||
plugin.toLog(this.getClass().getName(), e);
|
||||
Log.errorMsg("Error getting ban date from Bukkit files. " + uuid.toString());
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
isBanned = false;
|
||||
}
|
||||
}
|
||||
@ -119,9 +118,8 @@ public class UserData {
|
||||
try {
|
||||
isBanned = player.isBanned();
|
||||
} catch (Exception e) {
|
||||
Plan plugin = getPlugin(Plan.class);
|
||||
plugin.logError("Error getting ban date from Bukkit files. " + uuid.toString());
|
||||
plugin.toLog(this.getClass().getName(), e);
|
||||
Log.errorMsg("Error getting ban date from Bukkit files. " + uuid.toString());
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
isBanned = false;
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.utilities.NewPlayerCreator;
|
||||
import main.java.com.djrapitops.plan.utilities.comparators.HandlingInfoTimeComparator;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
@ -129,7 +129,7 @@ public class DataCacheHandler extends LocationCache {
|
||||
public void run() {
|
||||
DataCacheHandler handler = getPlugin(Plan.class).getHandler();
|
||||
handler.saveHandlerDataToCache();
|
||||
// handler.saveCachedUserData();
|
||||
handler.saveCachedUserData();
|
||||
if (timesSaved % clearAfterXsaves == 0) {
|
||||
handler.clearCache();
|
||||
}
|
||||
@ -250,7 +250,7 @@ public class DataCacheHandler extends LocationCache {
|
||||
}
|
||||
|
||||
private void processUnprocessedHandlingInfo(List<HandlingInfo> toProcess) {
|
||||
Log.debug("PROCESS: "+toProcess.size());
|
||||
Log.debug("PROCESS: " + toProcess.size());
|
||||
for (HandlingInfo i : toProcess) {
|
||||
UserData uData = dataCache.get(i.getUuid());
|
||||
if (uData == null) {
|
||||
@ -331,8 +331,16 @@ public class DataCacheHandler extends LocationCache {
|
||||
*/
|
||||
public void clearFromCache(UUID uuid) {
|
||||
Log.debug("Clear: " + uuid);
|
||||
dataCache.remove(uuid);
|
||||
plugin.log(Phrase.CACHE_REMOVE.parse(uuid.toString()));
|
||||
if (getOfflinePlayer(uuid).isOnline()) {
|
||||
Log.debug("Online, did not clear: " + uuid);
|
||||
UserData data = dataCache.get(uuid);
|
||||
if (data != null) {
|
||||
data.setClearAfterSave(false);
|
||||
}
|
||||
} else {
|
||||
dataCache.remove(uuid);
|
||||
Log.info(Phrase.CACHE_REMOVE.parse(uuid.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -27,7 +27,7 @@ public class SessionCache {
|
||||
* @param uuid
|
||||
*/
|
||||
public void startSession(UUID uuid) {
|
||||
long now = new Date().toInstant().getEpochSecond() * (long) 1000;
|
||||
long now = new Date().getTime();
|
||||
Log.debug("Starting a session: "+uuid+" "+now);
|
||||
SessionData session = new SessionData(now);
|
||||
activeSessions.put(uuid, session);
|
||||
@ -40,7 +40,7 @@ public class SessionCache {
|
||||
public void endSession(UUID uuid) {
|
||||
SessionData currentSession = activeSessions.get(uuid);
|
||||
if (currentSession != null) {
|
||||
long now = new Date().toInstant().getEpochSecond() * (long) 1000;
|
||||
long now = new Date().getTime();
|
||||
Log.debug("Ending a session: "+uuid+" "+now);
|
||||
currentSession.endSession(now);
|
||||
}
|
||||
|
@ -91,10 +91,8 @@ class ClearConsumer implements Runnable {
|
||||
try {
|
||||
if (handler.isDataAccessed(uuid)) {
|
||||
queue.add(uuid);
|
||||
} else if (!getOfflinePlayer(uuid).isOnline()) {
|
||||
handler.clearFromCache(uuid);
|
||||
} else {
|
||||
Log.debug("Online, removed from clear queue: "+uuid);
|
||||
handler.clearFromCache(uuid);
|
||||
}
|
||||
// if online remove from clear list
|
||||
} catch (Exception ex) {
|
||||
|
@ -50,7 +50,7 @@ public class SessionsTable extends Table {
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
statement = prepareStatement("SELECT * FROM " + tableName + " WHERE UPPER(" + columnUserID + ") LIKE UPPER(?)");
|
||||
statement = prepareStatement("SELECT * FROM " + tableName + " WHERE (" + columnUserID + "=?)");
|
||||
statement.setInt(1, userId);
|
||||
set = statement.executeQuery();
|
||||
List<SessionData> sessions = new ArrayList<>();
|
||||
|
@ -28,7 +28,7 @@ public class PlayerActivityGraphCreator {
|
||||
CopyOnWriteArrayList<SessionData> s = new CopyOnWriteArrayList(sessionData);
|
||||
s.parallelStream()
|
||||
.filter(session -> (session != null))
|
||||
.filter((session) -> (session.getSessionStart() > nowMinusScale))
|
||||
.filter((session) -> (session.getSessionStart() > nowMinusScale || session.getSessionEnd() > nowMinusScale))
|
||||
.forEach((session) -> {
|
||||
sessionEnds.add(session.getSessionEnd());
|
||||
sessionStarts.add(session.getSessionStart());
|
||||
@ -36,6 +36,12 @@ public class PlayerActivityGraphCreator {
|
||||
List<Integer> playersOnline = new ArrayList<>();
|
||||
List<String> labels = new ArrayList<>();
|
||||
|
||||
for (Long start : sessionStarts) {
|
||||
if (start < nowMinusScale) {
|
||||
sessionStarts.add(nowMinusScale);
|
||||
}
|
||||
}
|
||||
|
||||
int lastPValue = 0;
|
||||
int lastSavedPValue = -1;
|
||||
long lastSaveI = 0;
|
||||
|
@ -53,7 +53,7 @@ public class WebSocketServer {
|
||||
try {
|
||||
//Setup server
|
||||
try {
|
||||
server = new ServerSocket(PORT, 1, InetAddress.getByName("0.0.0.0"));
|
||||
server = new ServerSocket(PORT, 1, InetAddress.getByName(Settings.WEBSERVER_IP.toString()));
|
||||
} catch (IOException e) {
|
||||
System.exit(1);
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
@ -24,17 +25,10 @@ import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.ui.Html;
|
||||
import main.java.com.djrapitops.plan.ui.RecentPlayersButtonsCreator;
|
||||
import main.java.com.djrapitops.plan.ui.graphs.PlayerActivityGraphCreator;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -113,7 +107,7 @@ public class Analysis {
|
||||
List<UUID> added = new ArrayList<>();
|
||||
List<UUID> uuids = fetchPlayersInDB(db);
|
||||
if (uuids.isEmpty()) {
|
||||
plugin.log(Phrase.ANALYSIS_FAIL_NO_DATA + "");
|
||||
Log.info(Phrase.ANALYSIS_FAIL_NO_DATA + "");
|
||||
return false;
|
||||
}
|
||||
uuids.stream().forEach((uuid) -> {
|
||||
@ -135,7 +129,7 @@ public class Analysis {
|
||||
});
|
||||
}
|
||||
if (added.isEmpty()) {
|
||||
plugin.log(Phrase.ANALYSIS_FAIL_NO_DATA + "");
|
||||
Log.info(Phrase.ANALYSIS_FAIL_NO_DATA + "");
|
||||
return false;
|
||||
}
|
||||
return analyzeData(rawData, uuids, analysisCache);
|
||||
@ -262,7 +256,9 @@ public class Analysis {
|
||||
analysisData.setRefreshDate(new Date().getTime());
|
||||
analysisData.setGenderData(sorted.getGenders());
|
||||
analysisCache.cache(analysisData);
|
||||
plugin.log(Phrase.ANALYSIS_COMPLETE + "");
|
||||
if (Settings.ANALYSIS_LOG_FINISHED.isTrue()) {
|
||||
Log.info(Phrase.ANALYSIS_COMPLETE + "");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -336,7 +332,7 @@ public class Analysis {
|
||||
|
||||
private void log(String msg) {
|
||||
if (Settings.ANALYSIS_LOG_TO_CONSOLE.isTrue()) {
|
||||
plugin.log(msg);
|
||||
Log.info(msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ Settings:
|
||||
GatherLocations: true
|
||||
Analysis:
|
||||
LogProgressOnConsole: false
|
||||
NotifyWhenFinished: true
|
||||
MinutesPlayedUntilConsidiredActive: 10
|
||||
Cache:
|
||||
Processing:
|
||||
@ -23,6 +24,7 @@ Settings:
|
||||
WebServer:
|
||||
Enabled: true
|
||||
Port: 8804
|
||||
InternalIP: 0.0.0.0
|
||||
ShowAlternativeServerIP: false
|
||||
AlternativeIP: your.ip.here:%port%
|
||||
Security:
|
||||
|
Loading…
Reference in New Issue
Block a user