X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frest%2FAbstractEndpointAsync.java;fp=src%2Fjalview%2Frest%2FAbstractEndpointAsync.java;h=bfd7be4ae37773325802ae2be51753a92e1b4582;hb=50668ec2086983585ec0c78438532db49ebeb5a0;hp=fe10d1dbff8bafe11dd786fc80f8a159bf6bff5b;hpb=f647912de6ba5d76fc01317dbf388e220f4d5e0f;p=jalview.git diff --git a/src/jalview/rest/AbstractEndpointAsync.java b/src/jalview/rest/AbstractEndpointAsync.java index fe10d1d..bfd7be4 100644 --- a/src/jalview/rest/AbstractEndpointAsync.java +++ b/src/jalview/rest/AbstractEndpointAsync.java @@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jalview.bin.Console; +import jalview.gui.AlignFrame; import jalview.rest.RestHandler.Status; public abstract class AbstractEndpointAsync extends AbstractEndpoint @@ -32,6 +33,20 @@ public abstract class AbstractEndpointAsync extends AbstractEndpoint private Status tempStatus = null; + protected void removeFromCaches(HttpServletRequest request) + { + removeFromCaches(getId(request)); + } + + protected void removeFromCaches(String id) + { + CompletableFuture cf = cfMap.get(id); + if (cf == null || cf.isDone()) + cfMap.remove(id); + AlignFrame.removeFromAlignFrameCache(id); + API.getStatusMap().remove(getId()); + } + protected void setCompletableFuture(CompletableFuture cf) { this.cf = cf; @@ -104,8 +119,26 @@ public abstract class AbstractEndpointAsync extends AbstractEndpoint // subclass method initialise(request, response); + Console.debug("**** STATUS=" + getStatus()); if (checkStatus(request, response, Status.STARTED)) { + /* + // double check alignframe + Console.debug("**** STATUS2=" + getStatus()); + if (getStatus().compareTo(Status.IN_PROGRESS) > 0 + && getAlignFrameUsingId(request) == null) + { + Console.debug("**** STATUS3=" + getStatus()); + // delete key from cache + Console.debug("Cannot find cached AlignFrame for '" + getId() + + "', deleting key from cache"); + removeFromCaches(getId()); + this.changeStatus(null); + this.setCompletableFuture(null); + } + else + { + */ String alreadyFinishedString = null; if (getStatus() == Status.FINISHED) { @@ -113,6 +146,9 @@ public abstract class AbstractEndpointAsync extends AbstractEndpoint } returnStatus(request, response, alreadyFinishedString); return; + /* + } + */ } if (getCompletableFuture() == null)