Controller crashed when we try to list route table with 1.6 million of routes

Bug #1325652 reported by Édouard Thuleau
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Juniper Openstack
Status tracked in Trunk
Trunk
Fix Committed
Medium
Tapan Karwa
OpenContrail
Fix Committed
Medium
Tapan Karwa

Bug Description

When I try to list route table through the introspect UI (bgp peer -> ShowRouteReq) [1] of a controller where the number of route is close to 1.6 million, the controller process does not answer and it starts to consume all the memory. And finally, the controller process is killed by the init system.

[1] http://127.0.0.1:8083/Snh_ShowRouteReq?routing_table=&routing_instance=&prefix=&start_routing_instance=&start_routing_table=&start_prefix=&count=&longer_match=

Pedro Marques (5-roque)
Changed in opencontrail:
assignee: nobody → Nischal Sheth (nsheth)
Nischal Sheth (nsheth)
Changed in opencontrail:
assignee: Nischal Sheth (nsheth) → Tapan Karwa (tkarwa)
tags: added: contrail-control
removed: controller
Nischal Sheth (nsheth)
Changed in opencontrail:
status: New → In Progress
importance: Undecided → Medium
Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/4280
Committed: http://github.org/Juniper/contrail-controller/commit/5a2232c33903ca57932a8c2f31c70c37564ec2db
Submitter: Zuul
Branch: master

commit 5a2232c33903ca57932a8c2f31c70c37564ec2db
Author: Tapan Karwa <email address hidden>
Date: Mon Nov 3 10:39:43 2014 -0800

Add iteration facility to show route in introspect, add 40 new tests.

This limits the total number of routes we will show in each iteration.
Currently, its the min of (user-specified, 1000). This makes sure that the
backend does not run out of memory for large routing tables and also limits the
busy-time for the daemon.

This also changes the way MergeSort is working in the introspect code. The
route comparison function in bgp code sorts using numeric values via the
CompareTo function. The introspect code was doing a string compare. The output
of the 2 is not the same. This also changes the introspect code to use the
CompareTo function.

Change-Id: I9cc45181c962c3f6845174345834f6e524553c6d
Closes-Bug: 1325652

Nischal Sheth (nsheth)
Changed in opencontrail:
status: In Progress → Fix Committed
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.