The request object has been recycled and is no longer associated with this facade

Dear All,

i am receiving below error during the certification, what might be issue on this and please help me here to fix this issue.

java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
	at org.apache.catalina.connector.RequestFacade.checkFacade(RequestFacade.java:856)
	at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:645)
	at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:167)
	at javax.faces.context.ExternalContextWrapper.getSession(ExternalContextWrapper.java:438)
	at sailpoint.web.util.WebUtil.localizeMessage(WebUtil.java:2264)
	at sailpoint.web.util.WebUtil.localizeMessage(WebUtil.java:2300)
	at sailpoint.web.util.WebUtil.localizeMessage(WebUtil.java:2283)
	at sailpoint.web.identity.IdentityProxy.get(IdentityProxy.java:328)
	at sailpoint.service.IdentityDetailsService.getIdentityAttributesDTO(IdentityDetailsService.java:96)
	at sailpoint.service.certification.CertificationEntityService.addIdentityAttributes(CertificationEntityService.java:216)
	at sailpoint.service.certification.CertificationEntityService.getCertificationEntityDTO(CertificationEntityService.java:75)
	at sailpoint.rest.ui.certifications.CertificationEntityResource.getCertificationEntity(CertificationEntityResource.java:60)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:475)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:397)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234)
	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at sailpoint.web.SailPointResponseFilter.doFilter(SailPointResponseFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at sailpoint.rest.jaxrs.MethodOverrideFilter.doFilter(MethodOverrideFilter.java:90)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at sailpoint.rest.RestCsrfValidationFilter.doFilter(RestCsrfValidationFilter.java:71)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at sailpoint.rest.AuthenticationFilter.doFilter(AuthenticationFilter.java:109)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at sailpoint.web.SailPointContextRequestFilter.doFilter(SailPointContextRequestFilter.java:61)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at sailpoint.web.SailPointPollingRequestFilter.doFilter(SailPointPollingRequestFilter.java:151)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at sailpoint.web.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:63)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:656)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1826)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.lang.Thread.run(Unknown Source)

                

thanks,
Charan

hi @charankoona

Based on the error this exception is not a certification data issue itself, but a web/request lifecycle problem.

If your using any customization code or Rule.

I would first disable custom certification rules and retest

Hi have configured the Exclusion rule in the UAR please have a look if i am missing anything here

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Level;
import sailpoint.object.*;

Logger log = LogManager.getLogger(“cbq.custom.managerCert.ExclusionRule”);
//myLogger.info(“Entering CBQ Application Role Exclusion Rule”);
//log.setLevel(Level.ERROR);

List filters = new ArrayList();

List val = new ArrayList();

List egmList = new ArrayList();
egmList.add(“afadli”);

List excludeApps = new ArrayList();

Identity manager = entity.getManager();
String managerName = “”;
if(manager != null) {

managerName = manager.getName();

}

if(egmList.contains(managerName)) {

itemsToExclude.addAll(items);  

}else{

List links = entity.getLinks();


List disabledApps = new ArrayList();

boolean flag = false;
for(Link link: links) {
  if(link.isDisabled()) {
    disabledApps.add(link.getApplicationName().toString());
  }
  if(excludeApps != null && !excludeApps.isEmpty() && excludeApps.contains(link.getApplicationName().toString())) {
    String appname = link.getApplicationName().toString();

    disabledApps.add(appname.substring(2,appname.length()));
  }
}
List itRolesList = new ArrayList();
List list = new ArrayList();
Custom birthRightRoles = context.getObjectByName(Custom.class,"CBQ_BirthRightRoles");
List bRoles = birthRightRoles.get("birthrightroles");
Iterator iter = items.iterator();
List iTRoles = new ArrayList();





while (iter.hasNext()) {
  list.add((sailpoint.object.Certifiable)iter.next());
}
String explanation;

for(sailpoint.object.Certifiable item : list)
{
  //log.info("inside first for");
  if(item.getType().equalsIgnoreCase("it"))
  {
    if(iTRoles.contains(item.getName())){
      itemsToExclude.add(item); 
      explanation = "removing birthright roles from the certifications";
    }
    //log.info("inside if****");
    String itRole = item.getName();
    Bundle bundle = context.getObjectByName(Bundle.class,itRole);
    itRolesList.add(bundle.getName());
    //log.info("bundles:" +itRolesList);
    explanation="Certifying";
  }
  else if(item.getType().equalsIgnoreCase("business"))
  {
    if(bRoles.contains(item.getName())){
      itemsToExclude.add(item); 
      explanation = "removing birthright roles from the certifications";
    }
  }
  else
  {
    //log.info("inside else");
    itemsToExclude.add(item);
    explanation="Not Certifying";
  }
  if(!itemsToExclude.contains(item)){
    String itemAppName = item.getName().split("-")[0].toLowerCase();
    for(String disapp : disabledApps){
      if(disapp.toLowerCase().contains(itemAppName)){
        itemsToExclude.add(item);

      }
    }
  }
}

}

items.removeAll(itemsToExclude);
return explanation;

looks like without custom rule also it is giving errors as same

The request object has been recycled and is no longer associated with this facade

Few findings from your rule:

  1. Modifying items
  • items.removeAll(itemsToExclude) can break certification processing.
  • In exclusion rules, only populate itemsToExclude.

2. Wrong boolean operator
& // should be &&

3. Unused / broken logic

  • iTRoles is never populated but is checked
  • filters, val, flag are unused
  • Bundle bundle can be null → possible NPE

If the same error occurs even without the custom exclusion rule, then this confirms the issue is not rule-related.

What this indicates:

  • This is a product / request lifecycle issue, not custom logic

  • Commonly seen when certifications are loaded via REST, and IIQ tries to call
    WebUtil.localizeMessage() after the request is already completed

  • Happens in some IIQ 8.x versions during certification entity rendering

I would also check:

  1. IIQ version + patch level (known defects in early 8.2 / 8.3)

    This points me to a core IIQ bug or patching issue, not rule misconfiguration.

I don’t see any error in the rule, i am getting error even without rule setup.

we are using 8.3 version; have you faced this error any time before ?

@charankoona I think i had seen this issue long back, not sure about the resolution though.. At that time it happened for a bulky identity having more than 100+ links. It could be that some process is trying to load the identity and it was failiing to load it completely resulting in a partial or corrupted data and more over as data got corrupted during load, some time it was also messing up the actual identity. So we had to delete the identity object and let it auto create via aggregations.

Hi @neel193 ,

thanks for the update, this issue is coming during Certification, we don’t have 100+ links in one identity.

please let me know if you find any related information or resolution.

thanks

@charankoona Not necessarily it is because of links, some times there could be other data load issues. Try enabling logs and see if it is showing the last identity processed, possibly that identity could be the culprit. If not identity, it should show few more more details before printing the error that may help.

Could you please confirm the IIQ and Java versions you are using? Also, has there been any recent upgrade?

this is resolved by adding below line in the tomcat server

-Dorg.apache.catalina.connector.RECYCLE_FACADES=false

thanks everyone

Please Update this from your webserver -Dorg.apache.catalina.connector.RECYCLE_FACADES=false