Trying to fix issue with the service.
This commit is contained in:
@@ -66,26 +66,30 @@ public class LongPollingSystem {
|
||||
@Override
|
||||
public void run() {
|
||||
while (true) {
|
||||
Set<ResourceWaitingRequest> resourcesCopy;
|
||||
synchronized (_waitingActions) {
|
||||
resourcesCopy = new HashSet<ResourceWaitingRequest>(_waitingActions);
|
||||
}
|
||||
|
||||
long now = System.currentTimeMillis();
|
||||
Iterator<ResourceWaitingRequest> iterator = resourcesCopy.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
ResourceWaitingRequest waitingRequest = iterator.next();
|
||||
if (waitingRequest.getLongPollingResource().wasProcessed())
|
||||
_waitingActions.remove(waitingRequest);
|
||||
else {
|
||||
if (waitingRequest.getStart() + _pollingLength < now) {
|
||||
waitingRequest.getLongPollableResource().deregisterRequest(waitingRequest);
|
||||
try {
|
||||
Set<ResourceWaitingRequest> resourcesCopy;
|
||||
synchronized (_waitingActions) {
|
||||
resourcesCopy = new HashSet<ResourceWaitingRequest>(_waitingActions);
|
||||
}
|
||||
|
||||
long now = System.currentTimeMillis();
|
||||
Iterator<ResourceWaitingRequest> iterator = resourcesCopy.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
ResourceWaitingRequest waitingRequest = iterator.next();
|
||||
if (waitingRequest.getLongPollingResource().wasProcessed())
|
||||
_waitingActions.remove(waitingRequest);
|
||||
execute(waitingRequest.getLongPollingResource());
|
||||
} else {
|
||||
waitingRequest.getLongPollableResource().requestWaitingNotification();
|
||||
else {
|
||||
if (waitingRequest.getStart() + _pollingLength < now) {
|
||||
waitingRequest.getLongPollableResource().deregisterRequest(waitingRequest);
|
||||
_waitingActions.remove(waitingRequest);
|
||||
execute(waitingRequest.getLongPollingResource());
|
||||
} else {
|
||||
waitingRequest.getLongPollableResource().requestWaitingNotification();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception exp) {
|
||||
_log.error("Failure while processing polling requests", exp);
|
||||
}
|
||||
|
||||
pause();
|
||||
|
||||
@@ -6,10 +6,10 @@ import com.gempukku.polling.WaitingRequest;
|
||||
|
||||
public class DraftCommunicationChannel implements LongPollableResource {
|
||||
private int _channelNumber;
|
||||
private long _lastAccessed;
|
||||
|
||||
private String _cardChoiceOnClient;
|
||||
private volatile boolean _changed;
|
||||
private volatile long _lastAccessed;
|
||||
private volatile WaitingRequest _waitingRequest;
|
||||
|
||||
public DraftCommunicationChannel(int channelNumber) {
|
||||
@@ -43,7 +43,7 @@ public class DraftCommunicationChannel implements LongPollableResource {
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void requestWaitingNotification() {
|
||||
public void requestWaitingNotification() {
|
||||
updateLastAccess();
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.List;
|
||||
|
||||
public class ChatCommunicationChannel implements ChatRoomListener, LongPollableResource {
|
||||
private List<ChatMessage> _messages = new LinkedList<ChatMessage>();
|
||||
private long _lastConsumed = System.currentTimeMillis();
|
||||
private volatile long _lastConsumed = System.currentTimeMillis();
|
||||
private volatile WaitingRequest _waitingRequest;
|
||||
|
||||
@Override
|
||||
@@ -28,7 +28,7 @@ public class ChatCommunicationChannel implements ChatRoomListener, LongPollableR
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void requestWaitingNotification() {
|
||||
public void requestWaitingNotification() {
|
||||
updateLastAccess();
|
||||
}
|
||||
|
||||
@@ -53,11 +53,11 @@ public class ChatCommunicationChannel implements ChatRoomListener, LongPollableR
|
||||
return _messages.size() > 0;
|
||||
}
|
||||
|
||||
private synchronized void updateLastAccess() {
|
||||
private void updateLastAccess() {
|
||||
_lastConsumed = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
public synchronized long getLastAccessed() {
|
||||
public long getLastAccessed() {
|
||||
return _lastConsumed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,13 +10,13 @@ import java.util.*;
|
||||
|
||||
public class HallCommunicationChannel implements LongPollableResource {
|
||||
private int _channelNumber;
|
||||
private long _lastConsumed;
|
||||
private String _lastMotd;
|
||||
private Map<String, Map<String, String>> _tournamentQueuePropsOnClient = new LinkedHashMap<String, Map<String, String>>();
|
||||
private Map<String, Map<String, String>> _tournamentPropsOnClient = new LinkedHashMap<String, Map<String, String>>();
|
||||
private Map<String, Map<String, String>> _tablePropsOnClient = new LinkedHashMap<String, Map<String, String>>();
|
||||
private Set<String> _playedGames = new HashSet<String>();
|
||||
private volatile boolean _changed;
|
||||
private volatile long _lastConsumed;
|
||||
private volatile WaitingRequest _waitingRequest;
|
||||
|
||||
public HallCommunicationChannel(int channelNumber) {
|
||||
@@ -38,7 +38,7 @@ public class HallCommunicationChannel implements LongPollableResource {
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void requestWaitingNotification() {
|
||||
public void requestWaitingNotification() {
|
||||
updateLastAccess();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user