[Date Prev][Date Next] [Chronological] [Thread] [Top]

Connection Pool Problems



We've been running into a semi-recurring problem with connection pool corruption in the UnboundID stuff under Fortress.  An example of the stack dump is below.  It looks like there's some stuff you can do with UnboundID that might help in providing a graceful recovery rather than us bouncing the app (which is the only fix we have now).  Before I dig too deep I was wondering if you had seen this behavior and might already have a resolution.  I'm willing to put some time into fixing this if it's something new.

Thanks

The code:

 public FortressUser getFortressUserByUserName(String userName) {
    FortressUser userIn = new FortressUser();
    userIn.setUserId(userName);
    FortressUser userOut = null;
    LOGGER.info("Retrieving user with userId: " + userName);
   
    // Get the user
    ReviewMgr reviewMgr;
    try {
      reviewMgr = ReviewMgrFactory.createInstance("");
      userOut = new FortressUser(reviewMgr.readUser(userIn));  //Line that's blowing up
    } catch (SecurityException e) {
      LOGGER.error("The ReviewMgr could retrieve the requested user");
    }

    // Output the user's data to the log
    if(userOut != null) {
      LOGGER.info(userOut.toString());
    } else {
      LOGGER.info("userOut is null");
    }

    return userOut;
  }

The stack trace:

2014-02-20 10:53:09,850 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/fps-web].[FacesServlet]] (ajp-/0.0.0.0:8009-506) JBWEB000236: Servlet.service() for servlet FacesServlet threw exception: LDAPSDKUsageException(message='A null object was provided where a non-null object is required (non-null index 0).  Thread stack trace:  getStackTrace(Thread.java:1568) / ensureNotNull(Validator.java:119) / connect(LDAPConnection.java:716) / connect(LDAPConnection.java:681) / connect(LDAPConnection.java:459) / reconnect(LDAPConnection.java:626) / checkConnection(PoolMgr.java:592) / getConnection(PoolMgr.java:260) / getAdminConnection(UnboundIdDataProvider.java:1192) / getUser(UserDAO.java:747) / read(UserP.java:194) / readUser(ReviewMgrImpl.java:263) / getFortressUserByUserName(FortressServiceEjb.java:172) / getRoles(FpsScimProvider.java:595) / findUsers(FpsScimProvider.java:274) / findPerson(PersonController.java:1079) / loadAuthPerson(PersonController.java:947) / loadAuthPerson(PersonController$Proxy$_$$_WeldClientProxy.java) / invoke(null) / invoke(DelegatingMethodAccessorImpl.java:43) / invoke(Method.java:606) / invokeMethod(BeanELResolver.java:735) / invoke(BeanELResolver.java:467) / invoke(CompositeELResolver.java:246) / getValue(AstValue.java:156) / getValue(ValueExpressionImpl.java:189) / getValue(WeldValueExpression.java:50) / writeText(ELText.java:227) / writeText(ELText.java:150) / write(TextInstruction.java:85) / encodeBegin(UIInstructions.java:82) / encodeAll(UILeaf.java:183) / encodeAll(UIComponent.java:1782) / encodeAll(UIComponent.java:1782) / renderView(FaceletViewHandlingStrategy.java:439) / renderView(MultiViewHandler.java:124) / renderView(ViewHandlerWrapper.java:286) / execute(RenderResponsePhase.java:120) / doPhase(Phase.java:101) / render(LifecycleImpl.java:139) / service(FacesServlet.java:594) / internalDoFilter(ApplicationFilterChain.java:295) / doFilter(ApplicationFilterChain.java:214) / invoke(StandardWrapperValve.java:230) / invoke(StandardContextValve.java:149) / event(JBossWebContext.java:91) / invoke(JBossWebContext.java:72) / invoke(SecurityContextAssociationValve.java:169) / invoke(StandardHostValve.java:145) / invoke(ErrorReportValve.java:97) / invoke(StandardEngineValve.java:102) / service(CoyoteAdapter.java:336) / process(AjpProcessor.java:488) / process(AjpProtocol.java:420) / run(JIoEndpoint.java:920) / run(Thread.java:724)')
    at com.unboundid.util.Validator.ensureNotNull(Validator.java:119) [unboundid-ldapsdk-2.3.3.jar:2.3.3]
    at com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:716) [unboundid-ldapsdk-2.3.3.jar:2.3.3]
    at com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:681) [unboundid-ldapsdk-2.3.3.jar:2.3.3]
    at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.connect(LDAPConnection.java:459) [unboundid-ldapsdk-2.3.3.jar:2.3.3]
    at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.reconnect(LDAPConnection.java:626) [unboundid-ldapsdk-2.3.3.jar:2.3.3]
    at us.jts.fortress.ldap.PoolMgr.checkConnection(PoolMgr.java:592) [fortress-1.0-RC33.jar:]
    at us.jts.fortress.ldap.PoolMgr.getConnection(PoolMgr.java:260) [fortress-1.0-RC33.jar:]
    at us.jts.fortress.ldap.UnboundIdDataProvider.getAdminConnection(UnboundIdDataProvider.java:1192) [fortress-1.0-RC33.jar:]
    at us.jts.fortress.rbac.dao.unboundid.UserDAO.getUser(UserDAO.java:747) [fortress-1.0-RC33.jar:]
    at us.jts.fortress.rbac.UserP.read(UserP.java:194) [fortress-1.0-RC33.jar:]
    at us.jts.fortress.rbac.ReviewMgrImpl.readUser(ReviewMgrImpl.java:263) [fortress-1.0-RC33.jar:]
    at edu.psu.javaee.applications.fpsscim.ejbs.FortressServiceEjb.getFortressUserByUserName(FortressServiceEjb.java:172) [classes:]
    at edu.psu.javaee.applications.fpsscim.FpsScimProvider.getRoles(FpsScimProvider.java:595) [classes:]
-- 
Shawn Eion Smith
Software Engineering Manager/Research Engineer
Software Engineering Solutions
Applied Information Technology
Penn State University
shawn.eion.smith@psu.edu
814-867-3208