diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java index 23ad3b9a6cbc0728423df19a7028ffb58b24baa3..78db922b2d5e126a6e4519f1f6526e6765d655c6 100755 --- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java +++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java @@ -345,11 +345,15 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO } catch (LDAPSearchException e) { + logger.debug("Could not find groups root", e); if (e.getResultCode() == ResultCode.NO_SUCH_OBJECT) { - logger.debug("Could not find groups root", e); throw new IllegalStateException("Could not find groups root"); } + else if (e.getResultCode() == ResultCode.TIME_LIMIT_EXCEEDED) + throw new TransientException("time limit exceeded", e); + + throw new IllegalStateException("unexpected failure", e); } LdapDAO.checkLdapResult(searchResult.getResultCode()); @@ -366,7 +370,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO } catch (LDAPException e1) { - logger.debug("getGroupNames Exception: " + e1, e1); + logger.debug("getGroupNames Exception: " + e1, e1); LdapDAO.checkLdapResult(e1.getResultCode()); throw new IllegalStateException("Unexpected exception: " + e1.getMatchedDN(), e1); } diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/GroupsServlet.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/GroupsServlet.java index dd62ed5cdb871629bb86aa975b1a24e7b583e492..aad716349bbf46fc0048f7d17849b41acdf517d1 100755 --- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/GroupsServlet.java +++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/GroupsServlet.java @@ -78,6 +78,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import ca.nrc.cadc.auth.AuthenticationUtil; +import ca.nrc.cadc.net.TransientException; public class GroupsServlet extends HttpServlet { diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java index cb0ec4f65ed7605c44f0731fe0246200dccaf6cb..ce1d005865214114730f0e3a13070992f8d7bc21 100755 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java @@ -110,13 +110,15 @@ import ca.nrc.cadc.net.HttpPost; import ca.nrc.cadc.net.HttpUpload; import ca.nrc.cadc.net.InputStreamWrapper; import ca.nrc.cadc.net.NetUtil; +import ca.nrc.cadc.net.event.TransferEvent; +import ca.nrc.cadc.net.event.TransferListener; /** * Client class for performing group searching and group actions * with the access control web service. */ -public class GMSClient +public class GMSClient implements TransferListener { private static final Logger log = Logger.getLogger(GMSClient.class); @@ -159,6 +161,18 @@ public class GMSClient } } + public void transferEvent(TransferEvent te) + { + if ( TransferEvent.RETRYING == te.getState() ) + log.debug("retry after request failed, reason: " + te.getError()); + } + + public String getEventHeader() + { + return null; // no custom eventID header + } + + /** * Get a list of groups. * @@ -392,8 +406,10 @@ public class GMSClient HttpPost transfer = new HttpPost(updateGroupURL, groupXML.toString(), "application/xml", true); transfer.setSSLSocketFactory(getSSLSocketFactory()); + transfer.setTransferListener(this); transfer.run(); + Throwable error = transfer.getThrowable(); if (error != null) {