Uploaded image for project: 'Qpid Dispatch'
  1. Qpid Dispatch
  2. DISPATCH-935

Configuring the dispatch with lots of addresses and autolinks cause a long startup time

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 1.0.0
    • Backlog
    • None
    • None

    Description

      I made a simple script to generate a router config with a lot of addresses:

      #!/bin/bash
      cat<<EOF > router.conf
      router {
        mode: standalone
        id: Router.A
        defaultDistribution: balanced
      }
      
      listener {
        name: main
        host: 127.0.0.1
        port: 5672
        authenticatePeer: no
      }
      
      EOF
      
      for i in `seq 1 5000`
      do
      echo "address {" >> router.conf
      echo " prefix: addr$i" >> router.conf
      echo " waypoint: true" >> router.conf
      echo "}" >> router.conf
      echo "" >> router.conf
      
       echo "autoLink {" >> router.conf
       echo " addr: addr$i" >> router.conf
       echo " name: linkIn$i" >> router.conf
       echo " dir: in" >> router.conf
       echo "}" >> router.conf
       echo "" >> router.conf
      
       echo "autoLink {" >> router.conf
       echo " addr: addr$i" >> router.conf
       echo " name: linkOut$i" >> router.conf
       echo " dir: out" >> router.conf
       echo "}" >> router.conf
       echo "" >> router.conf
      done
      

       

      Although configuring 5000  addresses statically might not be a normal use case, it seems to cause the router to spend "forever" reading config and initializing.

       

      Doing a pstack reveals a lot of time spent in reading config:

      #0 0x00007fd2ef8cdbf9 in lookdict_string () from /lib64/libpython2.7.so.1.0
      2018-03-01 13:23:21.379050 +0100 ROUTER_CORE (info) Router Core thread exited │#1 0x00007fd2ef968a26 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
      │#2 0x00007fd2ef969df9 in PyEval_EvalFrameEx ()

       

      And

      #0 0x00007fd2ef8cdbf9 in lookdict_string () from /lib64/libpython2.7.so.1.0 #1 0x00007fd2ef968a26 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0 #2 0x00007fd2ef969df9 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0 #3 0x00007fd2ef969df9 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0

       

      And

      #0 0x00007ff5cbd0184e in PyObject_RichCompare () from /lib64/libpython2.7.so.1.0 #1 0x00007ff5cbd017ef in PyObject_RichCompareBool () from /lib64/libpython2.7.so.1.0 #2 0x00007ff5cbd13784 in tuplecontains () from /lib64/libpython2.7.so.1.0 #3 0x00007ff5cbd99cba in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0 #4 0x00007ff5cbd98df9 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0 #5 0x00007ff5cbd98df9 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            lulf Ulf Lilleengen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: