Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.0.0
-
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