Qpid
  1. Qpid
  2. QPID-3474

Principal name appears twice (separated by semicolon) in management logs on JMX connection closing/opening events.

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 0.12
    • Fix Version/s: 0.15
    • Component/s: Java Broker
    • Labels:
      None

      Description

      The examples of log entries with principal name displayed twice and separated by semicolon are displayed below:

      2011-09-07 12:42:41,051 INFO  [RMI TCP Connection(3)-169.24.39.206] (Log4jMessageLogger.java:72) - [mng:N/A(169.24.39.206)] MNG-1007 : Open : User guest;guest
      2011-09-07 12:42:44,446 INFO  [RMI TCP Connection(3)-169.24.39.206] (Log4jMessageLogger.java:72) - [mng:N/A(169.24.39.206)] MNG-1008 : Close : User guest;guest
      

      This problem can be simply reproduced by connecting to broker with Management console and looking into log files.

      This issue occurs due to following reason:

      On logging of JMX connection Open/Close events a principal name is taken from JMX connection id.
      In current RMI server implementation the connection id has the following format

      rmi://<hostname>:<port> <principal 1>;<principal 2>...<principal n> <index>
      

      It has the list of principals taken from the subject at the moment of opening the connection.

      In current implementation of RMIPasswordAuthenticator on successful authentication an instance of JMXPrincipal is added to subject in addition to existing UsernamePrincipal which is added before in AuthenticationManager#authenticate.

      As result of this, Subject contains two entries with the same principal name.

      On creating a connection Id RMIServerImpl iterates through all principals in subject and adds them separated by ';' to connection id string.

        Activity

        Hide
        Keith Wall added a comment -

        Patch applied.

        The (subclassed) RMIServer now maintains a hash-map of connection ids to usernames and this map is passed to the notification as handback data. MBeanInvocationHandler now has responsibility to clear the map entry on receipt of close/fail events.

        Show
        Keith Wall added a comment - Patch applied. The (subclassed) RMIServer now maintains a hash-map of connection ids to usernames and this map is passed to the notification as handback data. MBeanInvocationHandler now has responsibility to clear the map entry on receipt of close/fail events.
        Hide
        Keith Wall added a comment -

        Hi Robbie, can you review this change please?

        Show
        Keith Wall added a comment - Hi Robbie, can you review this change please?
        Hide
        Robbie Gemmell added a comment -

        Looks good to me.

        Show
        Robbie Gemmell added a comment - Looks good to me.

          People

          • Assignee:
            Robbie Gemmell
            Reporter:
            Alex Rudyy
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development