Class RequestManager

java.lang.Object
com.google.apphosting.runtime.RequestManager
All Implemented Interfaces:
RequestThreadManager

public class RequestManager extends Object implements RequestThreadManager
RequestManager is responsible for setting up and tearing down any state associated with each request.

At the moment, this includes:

  • Injecting an Environment implementation for the request's thread into ApiProxy.
  • Scheduling any future actions that must occur while the request is executing (e.g. deadline exceptions), and cleaning up any scheduled actions that do not occur.
It is expected that clients will use it like this:
 RequestManager.RequestToken token =
     requestManager.startRequest(...);
 try {
   ...
 } finally {
   requestManager.finishRequest(token);
 }
 
  • Method Details

    • builder

      public static RequestManager.Builder builder()
      Make a partly-initialized builder for a RequestManager.
    • setMaxOutstandingApiRpcs

      public void setMaxOutstandingApiRpcs(int maxOutstandingApiRpcs)
    • startRequest

      public RequestManager.RequestToken startRequest(AppVersion appVersion, AnyRpcServerContext rpc, com.google.apphosting.base.protos.RuntimePb.UPRequest upRequest, MutableUpResponse upResponse, ThreadGroup requestThreadGroup)
      Set up any state necessary to execute a new request using the specified parameters. The current thread should be the one that will execute the new request.
      Returns:
      a RequestToken that should be passed into finishRequest after the request completes.
    • finishRequest

      public void finishRequest(RequestManager.RequestToken requestToken)
      Tear down any state associated with the specified request, and restore the current thread's state as it was before startRequest was called.
      Throws:
      IllegalStateException - if called from the wrong thread.
    • sendDeadline

      public void sendDeadline(String securityTicket, boolean isUncatchable)
    • sendDeadline

      public void sendDeadline(RequestManager.RequestToken token, boolean isUncatchable)
    • shutdownRequests

      public void shutdownRequests(RequestManager.RequestToken token)
      Notify requests that the server is shutting down.
    • getRequestThreads

      public List<Thread> getRequestThreads(AppVersionKey appVersionKey)
      Specified by:
      getRequestThreads in interface RequestThreadManager