From 80346d44da90e9f0661f3d320397944ce6fb6b3a Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 10 Aug 2014 10:56:35 +0200 Subject: [PATCH] Changes to logging and NPE checks. --- .../main/java/mage/server/MageServerImpl.java | 73 ++++++++++++++----- .../src/main/java/mage/server/Session.java | 12 +-- .../main/java/mage/server/SessionManager.java | 3 +- 3 files changed, 61 insertions(+), 27 deletions(-) diff --git a/Mage.Server/src/main/java/mage/server/MageServerImpl.java b/Mage.Server/src/main/java/mage/server/MageServerImpl.java index 70035a0191e..b6ad41af964 100644 --- a/Mage.Server/src/main/java/mage/server/MageServerImpl.java +++ b/Mage.Server/src/main/java/mage/server/MageServerImpl.java @@ -636,8 +636,13 @@ public class MageServerImpl implements MageServer { return executeWithResult("sendCardPick", sessionId, new ActionWithNullNegativeResult() { @Override public DraftPickView execute() { - UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); - return DraftManager.getInstance().sendCardPick(draftId, userId, cardPick); + Session session = SessionManager.getInstance().getSession(sessionId); + if (session != null) { + return DraftManager.getInstance().sendCardPick(draftId, session.getUserId(), cardPick); + } else{ + logger.error("Session not found sessionId: "+ sessionId + " draftId:" + draftId); + } + return null; } }); } @@ -658,8 +663,12 @@ public class MageServerImpl implements MageServer { execute("concedeGame", sessionId, new Action() { @Override public void execute() { - UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); - GameManager.getInstance().concedeGame(gameId, userId); + Session session = SessionManager.getInstance().getSession(sessionId); + if (session != null) { + GameManager.getInstance().concedeGame(gameId, session.getUserId()); + } else{ + logger.error("Session not found sessionId: "+ sessionId + " gameId:" +gameId); + } } }); } @@ -669,8 +678,12 @@ public class MageServerImpl implements MageServer { execute("quitMatch", sessionId, new Action() { @Override public void execute() { - UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); - GameManager.getInstance().quitMatch(gameId, userId); + Session session = SessionManager.getInstance().getSession(sessionId); + if (session != null) { + GameManager.getInstance().quitMatch(gameId, session.getUserId()); + } else{ + logger.error("Session not found sessionId: "+ sessionId + " gameId:" +gameId); + } } }); } @@ -680,8 +693,12 @@ public class MageServerImpl implements MageServer { execute("quitTournament", sessionId, new Action() { @Override public void execute() { - UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); - TournamentManager.getInstance().quit(tournamentId, userId); + Session session = SessionManager.getInstance().getSession(sessionId); + if (session != null) { + TournamentManager.getInstance().quit(tournamentId, session.getUserId()); + }else{ + logger.error("Session not found sessionId: "+ sessionId + " tournamentId:" + tournamentId); + } } }); } @@ -691,12 +708,16 @@ public class MageServerImpl implements MageServer { execute("quitDraft", sessionId, new Action() { @Override public void execute() { + Session session = SessionManager.getInstance().getSession(sessionId); + if (session == null) { + logger.error("Session not found sessionId: "+ sessionId + " draftId:" + draftId); + return; + } UUID tableId = DraftManager.getInstance().getControllerByDraftId(draftId).getTableId(); - UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); Table table = TableManager.getInstance().getTable(tableId); if (table.isTournament()) { UUID tournamentId = table.getTournament().getId(); - TournamentManager.getInstance().quit(tournamentId, userId); + TournamentManager.getInstance().quit(tournamentId, session.getUserId()); } } }); @@ -707,8 +728,12 @@ public class MageServerImpl implements MageServer { execute("undo", sessionId, new Action() { @Override public void execute() { - UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); - GameManager.getInstance().undo(gameId, userId); + Session session = SessionManager.getInstance().getSession(sessionId); + if (session == null) { + logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId); + return; + } + GameManager.getInstance().undo(gameId, session.getUserId()); } }); } @@ -718,8 +743,12 @@ public class MageServerImpl implements MageServer { execute("passPriorityUntilNextYourTurn", sessionId, new Action() { @Override public void execute() { - UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); - GameManager.getInstance().passPriorityUntilNextYourTurn(gameId, userId); + Session session = SessionManager.getInstance().getSession(sessionId); + if (session == null) { + logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId); + return; + } + GameManager.getInstance().passPriorityUntilNextYourTurn(gameId, session.getUserId()); } }); } @@ -729,8 +758,12 @@ public class MageServerImpl implements MageServer { execute("passTurnPriority", sessionId, new Action() { @Override public void execute() { - UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); - GameManager.getInstance().passTurnPriority(gameId, userId); + Session session = SessionManager.getInstance().getSession(sessionId); + if (session == null) { + logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId); + return; + } + GameManager.getInstance().passTurnPriority(gameId, session.getUserId()); } }); } @@ -740,8 +773,12 @@ public class MageServerImpl implements MageServer { execute("restorePriority", sessionId, new Action() { @Override public void execute() { - UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); - GameManager.getInstance().restorePriority(gameId, userId); + Session session = SessionManager.getInstance().getSession(sessionId); + if (session == null) { + logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId); + return; + } + GameManager.getInstance().restorePriority(gameId, session.getUserId()); } }); } diff --git a/Mage.Server/src/main/java/mage/server/Session.java b/Mage.Server/src/main/java/mage/server/Session.java index 0cdc740ea0b..9c057fd772a 100644 --- a/Mage.Server/src/main/java/mage/server/Session.java +++ b/Mage.Server/src/main/java/mage/server/Session.java @@ -195,20 +195,16 @@ public class Session { public void userLostConnection() { User user = UserManager.getInstance().getUser(userId); if (user == null) { - logger.error("Session.userLostConnection user for session not found sessionId: " + sessionId + " userId: " +userId); + logger.error("User for session not found sessionId: " + sessionId + " userId: " +userId); + // can happen if user from same host sign in multiple time with multiple clients, after he disconnects with one client return; } if (user.getSessionId().isEmpty()) { - logger.debug("Session.userLostConnection user was already disconnected sessionId: " + sessionId + " userId: " +userId); + logger.debug("User was already disconnected sessionId: " + sessionId + " userId: " +userId); return; } if (logger.isInfoEnabled()) { - StringBuilder sb = new StringBuilder("user "); - if (user == null) { - sb.append("[user not found]"); - } else { - sb.append(user.getName()); - } + StringBuilder sb = new StringBuilder(user.getName()); sb.append(" lost connection - userId: ").append(userId); sb.append(" sessionId: ").append(sessionId); logger.info(sb); diff --git a/Mage.Server/src/main/java/mage/server/SessionManager.java b/Mage.Server/src/main/java/mage/server/SessionManager.java index 03a519fee2b..f75e75a0cc6 100644 --- a/Mage.Server/src/main/java/mage/server/SessionManager.java +++ b/Mage.Server/src/main/java/mage/server/SessionManager.java @@ -57,7 +57,8 @@ public class SessionManager { } Session session = sessions.get(sessionId); if (session != null && session.getUserId() != null && UserManager.getInstance().getUser(session.getUserId()) == null) { - logger.error("User for session " + sessionId + " with userId " + session.getUserId() + " is missing. Session removed. Cause for this still unclear."); + logger.error("User for session " + sessionId + " with userId " + session.getUserId() + " is missing. Session removed."); + // can happen if user from same host signs in multiple time with multiple clients, after he disconnects with one client disconnect(sessionId, DisconnectReason.LostConnection); return null; }