下面列出了怎么用javax.servlet.UnavailableException的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void init() throws ServletException {
// Ensure that our ContainerServlet properties have been set
if ((wrapper == null) || (context == null))
throw new UnavailableException
(sm.getString("hostManagerServlet.noWrapper"));
// Set our properties from the initialization parameters
String value = null;
try {
value = getServletConfig().getInitParameter("debug");
debug = Integer.parseInt(value);
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
}
}
public void createServlet() throws ServletException {
if (permanentlyUnavailable) {
return;
}
try {
if (!started && servletInfo.getLoadOnStartup() != null && servletInfo.getLoadOnStartup() >= 0) {
instanceStrategy.start();
started = true;
}
} catch (UnavailableException e) {
if (e.isPermanent()) {
permanentlyUnavailable = true;
stop();
}
}
}
public void forceInit() throws ServletException {
if (!started) {
if(servletContext.getDeployment().getDeploymentState() != DeploymentManager.State.STARTED) {
throw UndertowServletMessages.MESSAGES.deploymentStopped(servletContext.getDeployment().getDeploymentInfo().getDeploymentName());
}
synchronized (this) {
if (!started) {
try {
instanceStrategy.start();
} catch (UnavailableException e) {
handleUnavailableException(e);
}
started = true;
}
}
}
}
/**
* Initialize this servlet.
*/
@Override
public void init()
throws ServletException {
super.init();
if (getServletConfig().getInitParameter("secret") != null)
secret = getServletConfig().getInitParameter("secret");
if (getServletConfig().getInitParameter("maxDepth") != null)
maxDepth = Integer.parseInt(
getServletConfig().getInitParameter("maxDepth"));
if (getServletConfig().getInitParameter("allowSpecialPaths") != null)
allowSpecialPaths = Boolean.parseBoolean(
getServletConfig().getInitParameter("allowSpecialPaths"));
// Load the MD5 helper used to calculate signatures.
try {
md5Helper = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new UnavailableException("No MD5");
}
}
/**
* Initialize this servlet.
*/
@Override
public void init() throws ServletException {
// Ensure that our ContainerServlet properties have been set
if ((wrapper == null) || (context == null))
throw new UnavailableException
(sm.getString("hostManagerServlet.noWrapper"));
// Set our properties from the initialization parameters
String value = null;
try {
value = getServletConfig().getInitParameter("debug");
debug = Integer.parseInt(value);
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
}
}
public void createServlet() throws ServletException {
if (permanentlyUnavailable) {
return;
}
try {
if (!started && servletInfo.getLoadOnStartup() != null && servletInfo.getLoadOnStartup() >= 0) {
instanceStrategy.start();
started = true;
}
} catch (UnavailableException e) {
if (e.isPermanent()) {
permanentlyUnavailable = true;
stop();
}
}
}
public void forceInit() throws ServletException {
if (!started) {
if(servletContext.getDeployment().getDeploymentState() != DeploymentManager.State.STARTED) {
throw UndertowServletMessages.MESSAGES.deploymentStopped(servletContext.getDeployment().getDeploymentInfo().getDeploymentName());
}
synchronized (this) {
if (!started) {
try {
instanceStrategy.start();
} catch (UnavailableException e) {
handleUnavailableException(e);
}
started = true;
}
}
}
}
/**
* Initialize this servlet.
*/
@Override
public void init()
throws ServletException {
super.init();
if (getServletConfig().getInitParameter("secret") != null)
secret = getServletConfig().getInitParameter("secret");
if (getServletConfig().getInitParameter("maxDepth") != null)
maxDepth = Integer.parseInt(
getServletConfig().getInitParameter("maxDepth"));
if (getServletConfig().getInitParameter("allowSpecialPaths") != null)
allowSpecialPaths = Boolean.parseBoolean(
getServletConfig().getInitParameter("allowSpecialPaths"));
// Load the MD5 helper used to calculate signatures.
try {
md5Helper = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new UnavailableException("No MD5");
}
}
/**
* Initialize this servlet.
*/
@Override
public void init() throws ServletException {
// Ensure that our ContainerServlet properties have been set
if ((wrapper == null) || (context == null))
throw new UnavailableException
(sm.getString("hostManagerServlet.noWrapper"));
// Set our properties from the initialization parameters
String value = null;
try {
value = getServletConfig().getInitParameter("debug");
debug = Integer.parseInt(value);
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
}
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
// First try the servlet context init-param.
String source = "InitParameter";
key = servletConfig.getInitParameter(APPKEY);
if (key == null || key.startsWith("${")) {
source = "System Property";
key = System.getProperty(APPKEY);
}
if (key == null || key.startsWith("${")) {
source = "Environment Variable";
key = System.getenv(APPKEY_ENV);
}
if (key == null) {
throw new UnavailableException("Places App Key not set");
}
if (key.startsWith("${")) {
throw new UnavailableException("Places App Key not expanded from " + source);
}
}
public void init() throws ServletException {
ServletContext context = getServletContext();
// read persistence flag from web.xml & get engine instance
try {
String persistOn = context.getInitParameter("EnablePersistence") ;
boolean enablePersist = "true".equalsIgnoreCase(persistOn);
_engine = (EngineGateway) context.getAttribute("engine");
if (_engine == null) {
_engine = new EngineGatewayImpl(enablePersist);
context.setAttribute("engine", _engine);
}
} catch (YPersistenceException e) {
logger.fatal("Failure to initialise runtime (persistence failure)", e);
throw new UnavailableException("Persistence failure");
}
}
@Override
public void init() throws ServletException {
super.init();
ServletConfig config = this.getServletConfig();
String prefix = config.getInitParameter("prefix");
this._prefix = prefix == null ? this._prefix : prefix;
// Adjust prefix value to account for context path
String contextPath = this.getServletContext().getContextPath();
this._prefix = this._prefix == null ? contextPath : (contextPath + this._prefix);
String proxyTo = config.getInitParameter("proxyTo");
this._proxyTo = proxyTo == null ? this._proxyTo : proxyTo;
if (this._proxyTo == null)
throw new UnavailableException("Init parameter 'proxyTo' is required.");
if (!this._prefix.startsWith("/"))
throw new UnavailableException("Init parameter 'prefix' parameter must start with a '/'.");
if (this._isDebugEnabled) {
this._log.debug(config.getServletName() + " @ " + this._prefix + " to " + this._proxyTo);
}
}
public void handleUnavailableException(UnavailableException e) {
if (e.isPermanent()) {
UndertowServletLogger.REQUEST_LOGGER.stoppingServletDueToPermanentUnavailability(getServletInfo().getName(), e);
stop();
setPermanentlyUnavailable(true);
} else {
long until = System.currentTimeMillis() + e.getUnavailableSeconds() * 1000;
unavailableUntilUpdater.set(this, until);
UndertowServletLogger.REQUEST_LOGGER.stoppingServletUntilDueToTemporaryUnavailability(getServletInfo().getName(), new Date(until), e);
}
}
@Override
public void init(ServletConfig config) throws ServletException {
if(config.getInitParameter(PERMANENT) != null) {
throw new UnavailableException("msg");
} else if(first){
first = false;
throw new UnavailableException("msg", 1);
}
}
public void handleUnavailableException(UnavailableException e) {
if (e.isPermanent()) {
UndertowServletLogger.REQUEST_LOGGER.stoppingServletDueToPermanentUnavailability(getServletInfo().getName(), e);
stop();
setPermanentlyUnavailable(true);
} else {
long until = System.currentTimeMillis() + e.getUnavailableSeconds() * 1000;
unavailableUntilUpdater.set(this, until);
UndertowServletLogger.REQUEST_LOGGER.stoppingServletUntilDueToTemporaryUnavailability(getServletInfo().getName(), new Date(until), e);
}
}
@Override
public void init() throws ServletException {
super.init();
final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
// Configure the factory to ignore comments
factory.setIgnoringComments(true);
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
throw new ServletException(e.getMessage(), e);
}
TransformerFactory transFact = TransformerFactory.newInstance( );
try {
final ServletContext context = getServletContext();
final URL xsltURL = context.getResource("/VoiceXmlPromptTemplate.xsl");
final String xsltSystemID = xsltURL.toExternalForm();
promptTemplate = transFact.newTemplates(
new StreamSource(xsltSystemID));
} catch (TransformerConfigurationException tce) {
throw new UnavailableException("Unable to compile stylesheet");
} catch (MalformedURLException mue) {
throw new UnavailableException("Unable to locate XSLT file");
}
}
public void init() throws ServletException {
ServletContext context = getServletContext();
try {
// get reference to engine
_engine = (EngineGateway) context.getAttribute("engine");
if (_engine == null) {
// turn on persistence if required
String persistOn = context.getInitParameter("EnablePersistence");
boolean persist = "true".equalsIgnoreCase(persistOn);
_engine = new EngineGatewayImpl(persist);
context.setAttribute("engine", _engine);
}
// add interface X monitoring if required
String listenerURI = context.getInitParameter("InterfaceXListener");
if (listenerURI != null) {
for (String uri : listenerURI.split(";")) {
_engine.addInterfaceXListener(uri);
}
}
}
catch (YPersistenceException e) {
logger.fatal("Failure to initialise runtime (persistence failure)", e);
throw new UnavailableException("Persistence failure");
}
}
@Override
public int compare(Space o1, Space o2) {
Integer buildingCheck;
try {
buildingCheck = checkObjects(getSpaceBuilding(o1), getSpaceBuilding(o2));
if (buildingCheck != null) {
return buildingCheck.intValue();
}
Integer campusCheck = checkObjects(getSpaceCampus(o1), getSpaceCampus(o2));
if (campusCheck != null) {
return campusCheck.intValue();
}
Integer floorCheck = checkObjects(getSpaceFloorWithIntermediary(o1), getSpaceFloorWithIntermediary(o2));
if (floorCheck != null) {
return floorCheck.intValue();
}
int compareTo = o1.getName().compareTo(o2.getName());
if (compareTo == 0) {
return o1.getExternalId().compareTo(o2.getExternalId());
}
return compareTo;
} catch (UnavailableException e1) {
return -1;
}
}
@Override public int statusCode() {
int result = ServletRuntime.get().status(response);
if (caught != null && result == 200) { // We may have a potentially bad status due to defaults
// Servlet only seems to define one exception that has a built-in code. Logic in Jetty
// defaults the status to 500 otherwise.
if (caught instanceof UnavailableException) {
return ((UnavailableException) caught).isPermanent() ? 404 : 503;
}
return 500;
}
return result;
}
/**
* Initialize this servlet.
*/
@Override
public void init() throws ServletException {
if (getServletConfig().getInitParameter("debug") != null)
debug = Integer.parseInt(getServletConfig().getInitParameter("debug"));
if (getServletConfig().getInitParameter("input") != null)
input = Integer.parseInt(getServletConfig().getInitParameter("input"));
if (getServletConfig().getInitParameter("output") != null)
output = Integer.parseInt(getServletConfig().getInitParameter("output"));
listings = Boolean.parseBoolean(getServletConfig().getInitParameter("listings"));
if (getServletConfig().getInitParameter("readonly") != null)
readOnly = Boolean.parseBoolean(getServletConfig().getInitParameter("readonly"));
compressionFormats = parseCompressionFormats(
getServletConfig().getInitParameter("precompressed"),
getServletConfig().getInitParameter("gzip"));
if (getServletConfig().getInitParameter("sendfileSize") != null)
sendfileSize =
Integer.parseInt(getServletConfig().getInitParameter("sendfileSize")) * 1024;
fileEncoding = getServletConfig().getInitParameter("fileEncoding");
if (fileEncoding == null) {
fileEncodingCharset = Charset.defaultCharset();
fileEncoding = fileEncodingCharset.name();
} else {
try {
fileEncodingCharset = B2CConverter.getCharset(fileEncoding);
} catch (UnsupportedEncodingException e) {
throw new ServletException(e);
}
}
if (getServletConfig().getInitParameter("useBomIfPresent") != null)
useBomIfPresent = Boolean.parseBoolean(
getServletConfig().getInitParameter("useBomIfPresent"));
globalXsltFile = getServletConfig().getInitParameter("globalXsltFile");
contextXsltFile = getServletConfig().getInitParameter("contextXsltFile");
localXsltFile = getServletConfig().getInitParameter("localXsltFile");
readmeFile = getServletConfig().getInitParameter("readmeFile");
if (getServletConfig().getInitParameter("useAcceptRanges") != null)
useAcceptRanges = Boolean.parseBoolean(getServletConfig().getInitParameter("useAcceptRanges"));
// Sanity check on the specified buffer sizes
if (input < 256)
input = 256;
if (output < 256)
output = 256;
if (debug > 0) {
log("DefaultServlet.init: input buffer size=" + input +
", output buffer size=" + output);
}
// Load the web resources
resources = (WebResourceRoot) getServletContext().getAttribute(
Globals.RESOURCES_ATTR);
if (resources == null) {
throw new UnavailableException(sm.getString("defaultServlet.noResources"));
}
if (getServletConfig().getInitParameter("showServerInfo") != null) {
showServerInfo = Boolean.parseBoolean(getServletConfig().getInitParameter("showServerInfo"));
}
if (getServletConfig().getInitParameter("sortListings") != null) {
sortListings = Boolean.parseBoolean(getServletConfig().getInitParameter("sortListings"));
if(sortListings) {
boolean sortDirectoriesFirst;
if (getServletConfig().getInitParameter("sortDirectoriesFirst") != null) {
sortDirectoriesFirst = Boolean.parseBoolean(getServletConfig().getInitParameter("sortDirectoriesFirst"));
} else {
sortDirectoriesFirst = false;
}
sortManager = new SortManager(sortDirectoriesFirst);
}
}
if (getServletConfig().getInitParameter("allowPartialPut") != null) {
allowPartialPut = Boolean.parseBoolean(getServletConfig().getInitParameter("allowPartialPut"));
}
}
@LogMessage(level = ERROR)
@Message(id = 15002, value = "Stopping servlet %s due to permanent unavailability")
void stoppingServletDueToPermanentUnavailability(final String servlet, @Cause UnavailableException e);
@LogMessage(level = ERROR)
@Message(id = 15003, value = "Stopping servlet %s till %s due to temporary unavailability")
void stoppingServletUntilDueToTemporaryUnavailability(String name, Date till, @Cause UnavailableException e);
@Override
public void handleRequest(final HttpServerExchange exchange) throws IOException, ServletException {
if (managedServlet.isPermanentlyUnavailable()) {
UndertowServletLogger.REQUEST_LOGGER.debugf("Returning 404 for servlet %s due to permanent unavailability", managedServlet.getServletInfo().getName());
exchange.setStatusCode(StatusCodes.NOT_FOUND);
return;
}
if (managedServlet.isTemporarilyUnavailable()) {
UndertowServletLogger.REQUEST_LOGGER.debugf("Returning 503 for servlet %s due to temporary unavailability", managedServlet.getServletInfo().getName());
exchange.setStatusCode(StatusCodes.SERVICE_UNAVAILABLE);
return;
}
final ServletRequestContext servletRequestContext = exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY);
if(!managedServlet.getServletInfo().isAsyncSupported()) {
servletRequestContext.setAsyncSupported(false);
}
ServletRequest request = servletRequestContext.getServletRequest();
ServletResponse response = servletRequestContext.getServletResponse();
InstanceHandle<? extends Servlet> servlet = null;
try {
servlet = managedServlet.getServlet();
servlet.getInstance().service(request, response);
//according to the spec we have to call AsyncContext.complete() at this point
//straight after the service method
//not super sure about this, surely it would make more sense to do this when the request has returned to the container, however the spec is quite clear wording wise
//todo: should we actually enable this? Apparently other containers do not do it
//if(!request.isAsyncStarted()) {
// AsyncContextImpl existingAsyncContext = servletRequestContext.getOriginalRequest().getAsyncContextInternal();
// if (existingAsyncContext != null) {
// existingAsyncContext.complete();
// }
//}
} catch (UnavailableException e) {
managedServlet.handleUnavailableException(e);
if (e.isPermanent()) {
exchange.setStatusCode(StatusCodes.NOT_FOUND);
} else {
exchange.setStatusCode(StatusCodes.SERVICE_UNAVAILABLE);
}
} finally {
if(servlet != null) {
servlet.release();
}
}
}
/**
* Initialize this servlet.
*/
@Override
public void init() throws ServletException {
if (getServletConfig().getInitParameter("debug") != null)
debug = Integer.parseInt(getServletConfig().getInitParameter("debug"));
if (getServletConfig().getInitParameter("input") != null)
input = Integer.parseInt(getServletConfig().getInitParameter("input"));
if (getServletConfig().getInitParameter("output") != null)
output = Integer.parseInt(getServletConfig().getInitParameter("output"));
listings = Boolean.parseBoolean(getServletConfig().getInitParameter("listings"));
if (getServletConfig().getInitParameter("readonly") != null)
readOnly = Boolean.parseBoolean(getServletConfig().getInitParameter("readonly"));
if (getServletConfig().getInitParameter("sendfileSize") != null)
sendfileSize =
Integer.parseInt(getServletConfig().getInitParameter("sendfileSize")) * 1024;
fileEncoding = getServletConfig().getInitParameter("fileEncoding");
globalXsltFile = getServletConfig().getInitParameter("globalXsltFile");
contextXsltFile = getServletConfig().getInitParameter("contextXsltFile");
localXsltFile = getServletConfig().getInitParameter("localXsltFile");
readmeFile = getServletConfig().getInitParameter("readmeFile");
if (getServletConfig().getInitParameter("useAcceptRanges") != null)
useAcceptRanges = Boolean.parseBoolean(getServletConfig().getInitParameter("useAcceptRanges"));
// Sanity check on the specified buffer sizes
if (input < 256)
input = 256;
if (output < 256)
output = 256;
if (debug > 0) {
log("DefaultServlet.init: input buffer size=" + input +
", output buffer size=" + output);
}
// Load the proxy dir context.
resources = (ProxyDirContext) getServletContext()
.getAttribute(Globals.RESOURCES_ATTR);
if (resources == null) {
try {
resources =
(ProxyDirContext) new InitialContext()
.lookup(RESOURCES_JNDI_NAME);
} catch (NamingException e) {
// Failed
throw new ServletException("No resources", e);
}
}
if (resources == null) {
throw new UnavailableException("No resources");
}
if (getServletConfig().getInitParameter("showServerInfo") != null) {
showServerInfo = Boolean.parseBoolean(getServletConfig().getInitParameter("showServerInfo"));
}
}
@LogMessage(level = ERROR)
@Message(id = 15002, value = "Stopping servlet %s due to permanent unavailability")
void stoppingServletDueToPermanentUnavailability(final String servlet, @Cause UnavailableException e);
@LogMessage(level = ERROR)
@Message(id = 15003, value = "Stopping servlet %s till %s due to temporary unavailability")
void stoppingServletUntilDueToTemporaryUnavailability(String name, Date till, @Cause UnavailableException e);
@Override
public final void stoppingServletDueToPermanentUnavailability(final String servlet, final UnavailableException e) {
super.log.logf(FQCN, ERROR, e, stoppingServletDueToPermanentUnavailability$str(), servlet);
}
@Override
public final void stoppingServletUntilDueToTemporaryUnavailability(final String name, final Date till, final UnavailableException e) {
super.log.logf(FQCN, ERROR, e, stoppingServletUntilDueToTemporaryUnavailability$str(), name, till);
}
@Override
public void handleRequest(final HttpServerExchange exchange) throws IOException, ServletException {
if (managedServlet.isPermanentlyUnavailable()) {
UndertowServletLogger.REQUEST_LOGGER.debugf("Returning 404 for servlet %s due to permanent unavailability", managedServlet.getServletInfo().getName());
exchange.setStatusCode(StatusCodes.NOT_FOUND);
return;
}
if (managedServlet.isTemporarilyUnavailable()) {
UndertowServletLogger.REQUEST_LOGGER.debugf("Returning 503 for servlet %s due to temporary unavailability", managedServlet.getServletInfo().getName());
exchange.setStatusCode(StatusCodes.SERVICE_UNAVAILABLE);
return;
}
final ServletRequestContext servletRequestContext = exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY);
if(!managedServlet.getServletInfo().isAsyncSupported()) {
servletRequestContext.setAsyncSupported(false);
}
ServletRequest request = servletRequestContext.getServletRequest();
ServletResponse response = servletRequestContext.getServletResponse();
InstanceHandle<? extends Servlet> servlet = null;
try {
servlet = managedServlet.getServlet();
servlet.getInstance().service(request, response);
//according to the spec we have to call AsyncContext.complete() at this point
//straight after the service method
//not super sure about this, surely it would make more sense to do this when the request has returned to the container, however the spec is quite clear wording wise
//todo: should we actually enable this? Apparently other containers do not do it
//if(!request.isAsyncStarted()) {
// AsyncContextImpl existingAsyncContext = servletRequestContext.getOriginalRequest().getAsyncContextInternal();
// if (existingAsyncContext != null) {
// existingAsyncContext.complete();
// }
//}
} catch (UnavailableException e) {
managedServlet.handleUnavailableException(e);
if (e.isPermanent()) {
exchange.setStatusCode(StatusCodes.NOT_FOUND);
} else {
exchange.setStatusCode(StatusCodes.SERVICE_UNAVAILABLE);
}
} finally {
if(servlet != null) {
servlet.release();
}
}
}
public void doFilter(ServletRequest _request, ServletResponse _response, FilterChain chain, boolean retry) throws IOException, ServletException {
if (!(_request instanceof HttpServletRequest)) return;
HttpServletRequest request = closeShield((HttpServletRequest)_request, retry);
HttpServletResponse response = closeShield((HttpServletResponse)_response, retry);
Scope scope = null;
Span span = null;
try {
if (cores == null || cores.isShutDown()) {
try {
init.await();
} catch (InterruptedException e) { //well, no wait then
}
final String msg = "Error processing the request. CoreContainer is either not initialized or shutting down.";
if (cores == null || cores.isShutDown()) {
log.error(msg);
throw new UnavailableException(msg);
}
}
String requestPath = ServletUtils.getPathAfterContext(request);
// No need to even create the HttpSolrCall object if this path is excluded.
if (excludePatterns != null) {
for (Pattern p : excludePatterns) {
Matcher matcher = p.matcher(requestPath);
if (matcher.lookingAt()) {
chain.doFilter(request, response);
return;
}
}
}
SpanContext parentSpan = GlobalTracer.get().extract(request);
Tracer tracer = GlobalTracer.getTracer();
Tracer.SpanBuilder spanBuilder = null;
String hostAndPort = request.getServerName() + "_" + request.getServerPort();
if (parentSpan == null) {
spanBuilder = tracer.buildSpan(request.getMethod() + ":" + hostAndPort);
} else {
spanBuilder = tracer.buildSpan(request.getMethod() + ":" + hostAndPort)
.asChildOf(parentSpan);
}
spanBuilder
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER)
.withTag(Tags.HTTP_URL.getKey(), request.getRequestURL().toString());
span = spanBuilder.start();
scope = tracer.scopeManager().activate(span);
AtomicReference<HttpServletRequest> wrappedRequest = new AtomicReference<>();
if (!authenticateRequest(request, response, wrappedRequest)) { // the response and status code have already been sent
return;
}
if (wrappedRequest.get() != null) {
request = wrappedRequest.get();
}
if (cores.getAuthenticationPlugin() != null) {
if (log.isDebugEnabled()) {
log.debug("User principal: {}", request.getUserPrincipal());
}
}
HttpSolrCall call = getHttpSolrCall(request, response, retry);
ExecutorUtil.setServerThreadFlag(Boolean.TRUE);
try {
Action result = call.call();
switch (result) {
case PASSTHROUGH:
chain.doFilter(request, response);
break;
case RETRY:
doFilter(request, response, chain, true); // RECURSION
break;
case FORWARD:
request.getRequestDispatcher(call.getPath()).forward(request, response);
break;
case ADMIN:
case PROCESS:
case REMOTEQUERY:
case RETURN:
break;
}
} finally {
call.destroy();
ExecutorUtil.setServerThreadFlag(null);
}
} finally {
if (span != null) span.finish();
if (scope != null) scope.close();
GlobalTracer.get().clearContext();
consumeInputFully(request, response);
SolrRequestInfo.reset();
SolrRequestParsers.cleanupMultipartFiles(request);
}
}