Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VOQ Inband interface support. #2

Open
wants to merge 89 commits into
base: chassis-voq-pr1
Choose a base branch
from

Conversation

vganesan-nokia
Copy link
Owner

What I did
Changes support inband interface configuration support..

Why I did it

The VOQ chassis needs inband interface in the kernel for cpu to cpu communication across different asic instance and remote neighbor programming in the kernel. This PR adds support for configuring inband interface so that kernel interface can be created via sonic configuration.

How I verified it

swss vs test to verify the remote neigh programming.

Details if related

Reference: VOQ HLD: https://github.com/Azure/SONiC/blob/master/doc/voq/voq_hld.md

The changes in the PR are on top of the changes in sonic-net#1431.

}

//Sync the neighbor to add to the CHASSIS_APP_DB
voqSyncAddNeigh(alias, ip_address, inband_mac, neighbor_entry);

return true;
}

bool NeighOrch::delInbandNeighbor(string alias, IpAddress ip_address)
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add comment to explain that this API is for local inband interface.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

if (key.compare(0, INTFS_PREFIX.length(), INTFS_PREFIX) &&
key.compare(0, LAG_PREFIX.length(), LAG_PREFIX) &&
key.compare(0, MGMT_PREFIX.length(), MGMT_PREFIX))
key.compare(0, MGMT_PREFIX.length(), MGMT_PREFIX) &&
!m_portTable.get(key, temp))
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have hardcoded prefix "Inband" instead of considering all the names from PORT table.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

{
return;
}

unsigned int flags = rtnl_link_get_flags(link);
bool admin = flags & IFF_UP;
bool oper = flags & IFF_LOWER_UP;
bool oper = flags & IFF_RUNNING;
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this change from this PR. Raise separate issue on sonic-buildimage fix this as part of the Issue.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue sonic-net/sonic-buildimage#6295 raised to request to change to IFF_RUNNING and PR sonic-net#1568 has the changes

if (m_portTable.get(key, temp))
{
g_portSet.erase(key);
FieldValueTuple tuple("state", "ok");
vector<FieldValueTuple> vector;
vector.push_back(tuple);
FieldValueTuple op("oper_status", oper ? "up" : "down");
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rename "oper_status" attribute to "netdev_oper_status" to avoid confusion with "oper_status" in "PORT_TABLE" in app db.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

…ynchronization... (sonic-net#1431)

This PR includes implementation of System ports initialization & orchestration, Interface & Neighbor Synchronization using GLOBAL_APP_DB, Inband Interface Configuration.

HLD: sonic-net/SONiC#639
Dependency PR's
(sonic-swss-common): sonic-net/sonic-swss-common#380
(sonic-sairedis): sonic-net/sonic-sairedis#657

* [voq] Redis instance for global app db
* [voq] System port init and orchestration
* [voq] Router interface for system ports, global app db sync
* [voq] Inband interface config
* [voq] System port neighbors

Kernel programming of static neigh and full mask static route for
system neighbors is moved to nbrmgr since orchagent should not own
kernel objects to avoid complication in warmboot reconciliation
The orchagent programs only SAI object for the system neighbors
and signals the completion of SAI programming by setting mac address
in SYSTE_NEIGH table of STATE_DB. Nbrmgr subscribes to these state
entries to program kernel entries corresponding to the system neighs

* [swss]VS tests for VOQ system ports

The following tests are added as part of virtual chassis tests
- VOQ switch objects verification
- System port object syncing with chassis app db by checking presence of
system port RIFs in chassis app db in supervisor card
- Creation of system port RIF record creation in ASIC_DB
Following changes are done for the above tests:
- SYSTEM_PORT table is added in default_config.json of line cards. These
are loaded as part of config_db loading
- Core and Port index mapping file is added in line card directories.

- use dvs_database.py lib to connect to redis databases instead of using raw connection via swsscommon DBConnectors.
- call dvs apis to get access to databases for the local redis instances. 

- Default handling for speed of the system port is removed in addSystemPorts()
- Comment added to clarify types of rif-s synced to chassis app db
- vs tests: connection to chassis app dp uses chassis app db id defined
in dvs lib instead of using the id from swsscommon

Using the chassis app db id from swsscommon instead of chassis app db id from dvd lib . This is to avoid python
lgtm alert and test failure.

Co-authored-by: vedganes <[email protected]>
Co-authored-by: vganesan-nokia <[email protected]>
arlakshm and others added 20 commits January 22, 2021 09:41
What I did
Add new options to specify swss rec and sairedis rec file name.
Corresponding change in sairedis sonic-net/sonic-sairedis#747

Why I did it
This option will be used in the multi asic system. The swss and sairedis record filename will be different for each asic and will be passed from the orchagent.sh
* Enhancement and bug fixes for dynamic buffer calculation

What I did
- Remove make_pair when calling emplace_back.
- The pool size isn't recalculated when a port with headroom override but without speed or cable length configured being shutdown.
- Remove the current PG from the old referenced profile only if its name isn't empty, otherwise an entry with empty name will be inserted into m_bufferProfileLookup
- Don't try removing statically configured profiles with dynamic headroom from the APPL_DB because they were not programmed to APPL_DB.
- Setting a buffer PG to the same profile as it was causes the referenced dynamic profile unable to be removed once it isn't referenced any more

How I verified it
Run regression and vs test

Signed-off-by: Stephen Sun <[email protected]>
Fix sonic-net/sonic-buildimage#6483

An FRR behavior change from 7.2 to 7.5 makes FRR update the default route to eth0 in interface up/down events. Skipping routes to eth0 or docker0 to avoid such behavior.
)

* Fix repeating logs in case of tunnel creation fail
…et#1614)

What I did:
Use reference count for protect interface, If interface bind to ACL the reference will increase and vice versa.

Why I did it:
If interface bind to ACL and remove LAG causes the ACL rule become global rule
to match all interfaces.

How I verified it:
Run the pytest check ACL and Port test case passed.
Configure SAI_HOSTIF_VLAN_TAG_KEEP for the parent port hostif when a first subport is added and restore it to SAI_HOSTIF_VLAN_TAG_STRIP when the last subport is removed.

Signed-off-by: Vitaliy Senchyshyn <[email protected]>
Add MACsec Manager for MACsec feature.
MACsecMgr is a daemon in MACsec container, that receives the message from CONFIG DB and uses wpa_cli instructions to manage the functionality of MACsec in the specified port. The below figure is the flow chart of MACsecMgr which shows the MACsec profile management according to MACsec Profile Table and the functionality of MACsec in the specified port according to PortTable.
The main functions are defined in class MACsecMgr as follow
```
    task_process_status removeProfile(const std::string & profile_name, const TaskArgs & profile_attr);
    task_process_status loadProfile(const std::string & profile_name, const TaskArgs & profile_attr);
    task_process_status enableMACsec(const std::string & port_name, const TaskArgs & port_attr);
    task_process_status disableMACsec(const std::string & port_name, const TaskArgs & port_attr);
```

The HLD of MACsec Manager is at [MACsec HLD](https://github.com/Azure/SONiC/blob/master/doc/macsec/MACsec_hld.md#341-macsec-mgr)

Signed-off-by: Ze Gan <[email protected]>
Add MACsec orchagent for MACsec feature.
The MACsecOrch is introduced in the Orchagent to handle configuration requests. It monitors MACsec related tables in APP DB and convert those messages to SAI commands to manage the MACsec object. 
The main functions are defined in class MACsecOrch as follow
```
    task_process_status taskUpdateMACsecPort(const std::string & port_name, const TaskArgs & port_attr);
    task_process_status taskDisableMACsecPort(const std::string & port_name, const TaskArgs & port_attr);
    task_process_status taskUpdateEgressSC(const std::string & port_sci, const TaskArgs & sc_attr);
    task_process_status taskDeleteEgressSC(const std::string & port_sci, const TaskArgs & sc_attr);
    task_process_status taskUpdateIngressSC(const std::string & port_sci, const TaskArgs & sc_attr);
    task_process_status taskDeleteIngressSC(const std::string & port_sci, const TaskArgs & sc_attr);
    task_process_status taskUpdateEgressSA(const std::string & port_sci_an, const TaskArgs & sa_attr);
    task_process_status taskDeleteEgressSA(const std::string & port_sci_an, const TaskArgs & sa_attr);
    task_process_status taskUpdateIngressSA(const std::string & port_sci_an, const TaskArgs & sa_attr);
    task_process_status taskDeleteIngressSA(const std::string & port_sci_an, const TaskArgs & sa_attr);
```
 The HLD of MACsec orchagent is at [MACsec HLD](https://github.com/Azure/SONiC/blob/master/doc/macsec/MACsec_hld.md#344-macsec-orch)

Signed-off-by: Ze Gan <[email protected]>
…LAN delete (sonic-net#1618)

Modified SWSS error log to Notice log during FDB flush notification after VLAN delete

Co-authored-by: Madhan Babu <[email protected]>
Reduce loglevel to DEBUG for eth0 route update. Ref PR: sonic-net#1606
1. Fix bug about the return value of `get_value`, it should return `true` if it's OK
2. Fix bug about the type of `MACsecProfile::priority`, the original `uint8_t` will cause a `lexical_convert` failure when the priority is a integer.
3. Polish log in `get_value`.
4. Change the predefined paths for sonic-buildimage integration

Signed-off-by: Ze Gan <[email protected]>
…c-net#1615)

Program/Reprogram routes to hardware based on Mux status
Create tunnel interface (tun0) in kernel
Add/remove tunnel routes in kernel
…nic-net#1581)

* Support shared headroom pool on top of dynamic buffer calculation

 - Feature is enabled/disabled on-the-fly by configuring over-subscribe-ration and shared headroom pool size.
   If both are configured, the shared headroom pool size will take effect.
   When turn on/off the feature, all the lossless profiles and buffer pool size will be recalculated.
 - Support calculating shared headroom pool while ingress lossless pool is statically configured.
- Check accumulative headroom before toggling SHP state
  To disable SHP results in size of PG increasing.
  Hence needs to check whether accumulative headroom exceed limit
- Split the function doUpdateStaticProfileTask into two functions
  Originally it was called for static profile only and consisted of two parts:
  - One is for dynamic th updated. It will go over all the buffer profiles
    dynamically generated according to the dynamic th and update them
  - The other is for size updated. It will go over each port referencing
    the profile and check whether the accumulative headroom exceeds limit
  Now that it is also called by shared headroom pool, we split it into
  two functions to make it more clear

Signed-off-by: Stephen Sun <[email protected]>

How I verified it
Run vs test and regression test.
* Support maximum port headroom checking

- Fetch the maximum port headroom via fetching the port attribute SAI_PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE when the orchagent starts and push the data into STATE_DB
- Check the accumulative port headroom against the maximum headroom in buffer_check_headroom_<vendor>.lua

On Mellanox platform, this PR depends on PR #6566 to be merged. In that PR the required SAI attribute is supported.
On other platforms, there is no dependency.

Signed-off-by: Stephen Sun [email protected]

Why I did it
On some platforms, the SAI will notify orchagent shut down if a headroom size that causes the accumulative port headroom to exceed its limit is programmed to SAI.
To avoid that, we need to check this before programming it to SAI.

How I verified it
Run the regression test.
This file was refactored in sairedis repo to SaiAttributeList.h proper class
…net#1632)

SAI attribute SAI_SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS is not supported on many platforms, and the call to getSystemPorts() throws error.
This error is not harmful at this state, and therefore the log level is changed from ERROR to INFO.
vivekrnv and others added 3 commits March 29, 2021 14:26
- What I did
Added 200G entry into the speed-rate map. Also handled the case which programs empty string into APP-DB and thus leading to a failure of Orchagent.
Default Sampling rate for 200G is set to 20000

- Why I did it
Fix for Issue: sonic-net/sonic-buildimage#6793

- How I verified it
run sflow community test under sonic-mgmt

Co-authored-by: Vivek Reddy Karri <[email protected]>
What I did
Add SAI failure handling functions in aclorch, bufferorch, copporch, dtelorch, fdborch, fgnhgorch, intfsorch, mirrororch, natorch, policerorch, macsecorch, portsorch, qosorch, sfloworch, switchorch, tunneldecaporch, vrforch.

Why I did it
Failure notification mechanism to ensure enough notifications in the presence of SAI failures and avoid running switches with unhandled failures.
* [voq/systemlag] VOQ System lag functionality

Signed-off-by: vedganes <[email protected]>

Changes for voq system lag implementation
(1) Portsorch changes for allocating unique lag id from chassis ap pdb
and sending the id in system port aggregator id attribute while creating
lag local LAG
(2) Portsorch changes to synd local LAG and local LAG members to
chassis app db. The sync-ing includes the allocated unique system lag id
(3) Portsorch changes to process remote system lag from chassis app db
and create lag entry in local asic db with received system lag id
(4) Interface orch changes to identify local or remote interfaces
(for both port and lag)
(5) Orchdaemon changes in orchagent intialization to get hostname and
asic_name attributes from DEVICE_METATDATA. These are used for unique
system lag name derivation

* [vog/systemlag] VS test for system lag
stephenxs and others added 22 commits April 1, 2021 13:04
What I did
Bug:
The buffermgrd can keep adding suffix to the buffer pool reference if the buffer pool isn't found when it is being referenced. In most of the cases, it's caused by wrong configuration.
Cause:
In handleBufferProfileTable, the value of each field is designated by a (lvalue) reference to the object in the tuple, which means the object in the tuple will be changed if the value is changed in the function.
Fix:
Pass the value of each field by value instead of reference.

- Why I did it
Fix bug.

- How I verified it
Manually test.

Signed-off-by: Stephen Sun [email protected]
…ialization hasn't finished yet (sonic-net#1685)

Bug:
The buffer pools will be created after a short timer and then won't be
updated until the initialization has finished. This is to avoid
repeatedly updating buffer pools after BUFFER_PG and BUFFER_QUEUE have
been created for each port.
However, when the ingress_lossless_pool is created it will trigger the
buffer pools to be updated for shared headroom pool. If this happens
during intialization, it causes all the buffer pools created after
ingress_lossless_pool won't be created until the initialization has been
done.
Fix:
Don't trigger updating buffer pools when creating ingress_lossless_pool
during intialization.

Signed-off-by: Stephen Sun <[email protected]>
According the PR: SONiC#746, the sample rate should be "ifSpeed / 1e6".

Signed-off-by: Fred Yu [email protected]
This is possible workaround for cross compile issues with json.hpp symbols generated on armhf architecture.
in other pipelines, they will download swss and pytests. this is make sure the swss.deb and pytests are matched.

Signed-off-by: Guohan Lu <[email protected]>
…ble (sonic-net#1688)

What I did:

Skip DVS MACSEC test case till macsec orch code is made compatible with SAI v1.8.0

Why I did:

Without this sai-redis PR build fails because of DVS VS test. This change will resolve dead-lock between swss and sai-redis repo PR to get merged.
…c-net#1693)

* Improve coding styles

- Add one space between "//" and the comments
- Use capital letter at the beginning of sentence
- refreshPriorityGroupsForPort => refreshPgsForPort

* Fix LGTM alerts

Signed-off-by: Stephen Sun <[email protected]>
…es configuration to process (sonic-net#1695)

* fix intfmgrd reconciliation when there are no interfaces in the system

Signed-off-by: Stepan Blyschak <[email protected]>
* [vlan] Add support of VLAN host interface
* Infrastructure needed for the VNET ping tool

Signed-off-by: Volodymyr Samotiy <[email protected]>
Changes to fix system lag test failure issue reported by issues
sonic-net#1687.
Fixed time sleep after creating and deleting system lag is replaced by
DVS's wait_for_n_keys() functions

Signed-off-by: vedganes <[email protected]>
…et#1655)

Issue : CRM used counters are not getting updated for SNAT and DNAT entries

Steps to recreate:
Add a static NAT entry and verify the CRM counters

root@sonic:/home/admin# config nat feature enable
root@sonic:/home/admin# config interface ip add Ethernet9 12.12.0.1/24
root@sonic:/home/admin# config interface ip add Ethernet11 125.56.90.12/24
root@sonic:/home/admin# config nat add interface Ethernet11 -nat_zone 1
root@sonic:/home/admin# 
root@sonic:/home/admin# config nat add static basic 125.56.90.8 12.12.0.2
root@sonic:/home/admin# show nat translations 

Static NAT Entries         ..................... 2
Static NAPT Entries        ..................... 0
Dynamic NAT Entries        ..................... 0
Dynamic NAPT Entries       ..................... 0
Static Twice NAT Entries   ..................... 0
Static Twice NAPT Entries  ..................... 0
Dynamic Twice NAT Entries  ..................... 0
Dynamic Twice NAPT Entries ..................... 0
Total SNAT/SNAPT Entries   ..................... 1
Total DNAT/DNAPT Entries   ..................... 1
Total Entries              ..................... 2

Protocol    Source     Destination    Translated Source    Translated Destination
----------  ---------  -------------  -------------------  ------------------------
all         12.12.0.2  ---            125.56.90.8          ---
all         ---        125.56.90.8    ---                  12.12.0.2

root@sonic:/home/admin#

=============After polling interval of 300 seconds ========

root@sonic:/home/admin# crm show resources snat

Resource Name    Used Count   Available Count
--------------- ------------ -----------------
snat_entry                0             1024

root@sonic:/home/admin#

root@sonic:/home/admin# crm show resources dnat

Resource Name    Used Count    Available Count
--------------- ------------ -----------------
dnat_entry                0             1024

root@sonic:/home/admin#
Fix: Increment/Decrement the crm used counters for snat/dnat entries when entry is created/deleted.

Repeated the same steps to add static nat entry like above and verified the crm counters.

root@sonic:/home/admin# crm show resources dnat

Resource Name     Used Count   Available Count
--------------- ------------ -----------------
dnat_entry                1             1023

root@sonic:/home/admin# crm show resources snat

Resource Name     Used Count   Available Count
--------------- ------------ -----------------
snat_entry                1             1023

root@sonic:/home/admin#

Signed-off-by: Akhilesh Samineni [email protected]
Changes update switch statement in CrmOrch::getResAvailableCounters() to use CrmResourceType enum which guarantees the uniqueness of labels in the switch statement.
Signed-off-by: vedganes <[email protected]>

Changes are done to: (1) Setup inband interface - applicable for both
port type and vlan type (2) Add neighbors for inband interface and sync
to chassis app db (3) Postpone neighbor programming both in kernel
and in asic for remote neighbors till inband interface is operationally
up. (4) Update "oper" state in STATE DB for Inband interface
Signed-off-by: vedganes <[email protected]>

Changes done to handle procssing specific to port type inband interface
Signed-off-by: vedganes <[email protected]>

- Added tests for inband if (port type) and remote neigh programming in asic db
and kernel
- Fixed switch_id values in the system port config.
Signed-off-by: vedganes <[email protected]>

Fixed code review comments:
- Added comment to delInbandNeighbor() to indicate this is for local
inband interface
- Used hardcoded "Inband" prefix
- Reverted to net dev link up event detection using IFF_LOWER_UP flag
- Renamed "oper_status" of net dev to "netdev_oper_status" in the state
db PORT_TABLE.
Signed-off-by: vedganes <[email protected]>

Based on review comments Recyle port HLD
(sonic-net/SONiC#742) the inband port name prefix is
changed from Inband to "Ethernet-IB" similar to what we have for
Ethernet-BP (Ethernet-Backplane) in multi-asic design. Because of this
changes, we no longer need "INBAND_PREFIX" definition since Ethernet-IB
is covered in "INTFS_PREIFX"
Signed-off-by: vedganes <[email protected]>

Added vs test case for system neigh delete
Signed-off-by: vedganes <[email protected]>

Changes done to delete kernel neigh when there is failure in adding
kernel neigh for voq system neighbors if kernel entry already exists.
When there is mac change, system neighs are synced with changed mac.
With voq inband port type, static neighbor for this system neighbors
are added in kernel always with single chassis mac address. So to take
care of skpping adding neighbor we delete the kernel neighbor so that
next re-try will program the neighbor and hence the route addition will
proceed.
VOQ System neighbor delete test is piggy backed to existing system neigh
test. This test also is the cleanup for the existing system neigh test

Signed-off-by: vedganes <[email protected]>
- Changes to avoid calling function to add encap index attribute for
inband interface host neighbor. Since encap index attribute is supplied
only for the remote neighbors and since the inband interface neighbor is
local, encap index will not be added even if this function is called. So
removed calling the api addVoqEncapIndex() while constructing neighbor
add message for inband interface host.
- Changes in vs test for system neigh delete to avoid timing issue

Signed-off-by: vedganes <[email protected]>
vganesan-nokia pushed a commit that referenced this pull request Nov 30, 2021
* [cbf] Added initial CBF support (#2)

* Added CBF NHG support to NhgOrch
* Added NhgMapOrch to handle DSCP_TO_FC and EXP_TO_FC tables
* Added UT for the new NhgOrch function and NhgMapOrch

Support sonic-net/SONiC#796

Co-authored-by: Alexandru Banu <[email protected]>
vganesan-nokia pushed a commit that referenced this pull request Nov 29, 2022
Currently, ASAN sometimes reports the BufferOrch::m_buffer_type_maps and QosOrch::m_qos_maps as leaked. However, their lifetime is the lifetime of a process so they are not really 'leaked'.
This also adds a simple way to add more suppressions later if required.

Example of ASAN report:

Direct leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x7f96aa952d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
    #1 0x55ca1da9f789 in __static_initialization_and_destruction_0 /__w/2/s/orchagent/bufferorch.cpp:39
    #2 0x55ca1daa02af in _GLOBAL__sub_I_bufferorch.cpp /__w/2/s/orchagent/bufferorch.cpp:1321
    #3 0x55ca1e2a9cd4  (/usr/bin/orchagent+0xe89cd4)

Direct leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x7f96aa952d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
    #1 0x55ca1da6d2da in __static_initialization_and_destruction_0 /__w/2/s/orchagent/qosorch.cpp:80
    #2 0x55ca1da6ecf2 in _GLOBAL__sub_I_qosorch.cpp /__w/2/s/orchagent/qosorch.cpp:2000
    #3 0x55ca1e2a9cd4  (/usr/bin/orchagent+0xe89cd4)

- What I did
Added an lsan suppression config with static variable leak suppression

- Why I did it
To suppress ASAN false positives

- How I verified it
Run a test that produces the static variable leaks report and checked that report has these leaks suppressed.

Signed-off-by: Yakiv Huryk <[email protected]>
vganesan-nokia pushed a commit that referenced this pull request Jan 5, 2024
**What I did**

Fix the Mem Leak by moving the raw pointers in type_maps to use smart pointers

**Why I did it**

```
Indirect leak of 83776 byte(s) in 476 object(s) allocated from:
    #0 0x7f0a2a414647 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
    #1 0x5555590cc923 in __gnu_cxx::new_allocator, std::allocator > const, referenced_object> > >::allocate(unsigned long, void const*) /usr/include/c++/10/ext/new_allocator.h:115
    #2 0x5555590cc923 in std::allocator_traits, std::allocator > const, referenced_object> > > >::allocate(std::allocator, std::allocator > const, referenced_object> > >&, unsigned long) /usr/include/c++/10/bits/alloc_traits.h:460
    #3 0x5555590cc923 in std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, referenced_object>, std::_Select1st, std::allocator > const, referenced_object> >, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >::_M_get_node() /usr/include/c++/10/bits/stl_tree.h:584
    #4 0x5555590cc923 in std::_Rb_tree_node, std::allocator > const, referenced_object> >* std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, referenced_object>, std::_Select1st, std::allocator > const, referenced_object> >, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >::_M_create_node, std::allocator > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&) /usr/include/c++/10/bits/stl_tree.h:634
    sonic-net#5 0x5555590cc923 in std::_Rb_tree_iterator, std::allocator > const, referenced_object> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, referenced_object>, std::_Select1st, std::allocator > const, referenced_object> >, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, referenced_object> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&) /usr/include/c++/10/bits/stl_tree.h:2461
    sonic-net#6 0x5555590e8757 in std::map, std::allocator >, referenced_object, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >::operator[](std::__cxx11::basic_string, std::allocator > const&) /usr/include/c++/10/bits/stl_map.h:501
    sonic-net#7 0x5555590d48b0 in Orch::setObjectReference(std::map, std::allocator >, std::map, std::allocator >, referenced_object, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >*, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, referenced_object, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >*> > >&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&) orchagent/orch.cpp:450
    sonic-net#8 0x5555594ff66b in QosOrch::handleQueueTable(Consumer&, std::tuple, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::__cxx11::basic_string, std::allocator > >, std::allocator, std::allocator >, std::__cxx11::basic_string, std::allocator > > > > >&) orchagent/qosorch.cpp:1763
    sonic-net#9 0x5555594edbd6 in QosOrch::doTask(Consumer&) orchagent/qosorch.cpp:2179
    sonic-net#10 0x5555590c8743 in Consumer::drain() orchagent/orch.cpp:241
    sonic-net#11 0x5555590c8743 in Consumer::drain() orchagent/orch.cpp:238
    sonic-net#12 0x5555590c8743 in Consumer::execute() orchagent/orch.cpp:235
    sonic-net#13 0x555559090dad in OrchDaemon::start() orchagent/orchdaemon.cpp:755
    sonic-net#14 0x555558e9be25 in main orchagent/main.cpp:766
    sonic-net#15 0x7f0a299b6d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.