Skip to content

Commit 95b1e63

Browse files
delay counters by 60 sec
Signed-off-by: Stepan Blyschak <[email protected]>
1 parent 1536dfb commit 95b1e63

File tree

5 files changed

+30
-0
lines changed

5 files changed

+30
-0
lines changed

orchagent/flexcounterorch.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ extern CoppOrch *gCoppOrch;
2727
extern FlowCounterRouteOrch *gFlowCounterRouteOrch;
2828
extern sai_object_id_t gSwitchId;
2929

30+
#define FLEX_COUNTER_DELAY_SEC 60
31+
3032
#define BUFFER_POOL_WATERMARK_KEY "BUFFER_POOL_WATERMARK"
3133
#define PORT_KEY "PORT"
3234
#define PORT_BUFFER_DROP_KEY "PORT_BUFFER_DROP"
@@ -71,6 +73,10 @@ FlexCounterOrch::FlexCounterOrch(DBConnector *db, vector<string> &tableNames):
7173
m_deviceMetadataConfigTable(db, CFG_DEVICE_METADATA_TABLE_NAME)
7274
{
7375
SWSS_LOG_ENTER();
76+
m_delayTimer = new SelectableTimer(timespec{.tv_sec = FLEX_COUNTER_DELAY_SEC, .tv_nsec = 0});
77+
auto executor = new ExecutableTimer(m_delayTimer, this, "FLEX_COUNTER_DELAY");
78+
Orch::addExecutor(executor);
79+
m_delayTimer->start();
7480
}
7581

7682
FlexCounterOrch::~FlexCounterOrch(void)
@@ -82,6 +88,11 @@ void FlexCounterOrch::doTask(Consumer &consumer)
8288
{
8389
SWSS_LOG_ENTER();
8490

91+
if (!m_delayTimerExpired)
92+
{
93+
return;
94+
}
95+
8596
VxlanTunnelOrch* vxlan_tunnel_orch = gDirectory.get<VxlanTunnelOrch*>();
8697
if (gPortsOrch && !gPortsOrch->allPortsReady())
8798
{
@@ -239,6 +250,15 @@ void FlexCounterOrch::doTask(Consumer &consumer)
239250
}
240251
}
241252

253+
void FlexCounterOrch::doTask(SelectableTimer &timer)
254+
{
255+
SWSS_LOG_ENTER();
256+
257+
SWSS_LOG_NOTICE("Processing counters");
258+
m_delayTimer->stop();
259+
m_delayTimerExpired = true;
260+
}
261+
242262
bool FlexCounterOrch::getPortCountersState() const
243263
{
244264
return m_port_counter_enabled;

orchagent/flexcounterorch.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "orch.h"
55
#include "port.h"
66
#include "producertable.h"
7+
#include "selectabletimer.h"
78
#include "table.h"
89

910
extern "C" {
@@ -40,6 +41,7 @@ class FlexCounterOrch: public Orch
4041
{
4142
public:
4243
void doTask(Consumer &consumer);
44+
void doTask(SelectableTimer &timer);
4345
FlexCounterOrch(swss::DBConnector *db, std::vector<std::string> &tableNames);
4446
virtual ~FlexCounterOrch(void);
4547
bool getPortCountersState() const;
@@ -63,9 +65,11 @@ class FlexCounterOrch: public Orch
6365
bool m_pg_watermark_enabled = false;
6466
bool m_hostif_trap_counter_enabled = false;
6567
bool m_route_flow_counter_enabled = false;
68+
bool m_delayTimerExpired = false;
6669
Table m_bufferQueueConfigTable;
6770
Table m_bufferPgConfigTable;
6871
Table m_deviceMetadataConfigTable;
72+
SelectableTimer* m_delayTimer;
6973
};
7074

7175
#endif

orchagent/p4orch/tests/fake_flexcounterorch.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ void FlexCounterOrch::doTask(Consumer &consumer)
1616
{
1717
}
1818

19+
void FlexCounterOrch::doTask(SelectableTimer &timer)
20+
{
21+
}
22+
1923
bool FlexCounterOrch::getPortCountersState() const
2024
{
2125
return true;

tests/mock_tests/flexcounter_ut.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ namespace flexcounter_test
295295
CFG_FLEX_COUNTER_TABLE_NAME
296296
};
297297
auto* flexCounterOrch = new FlexCounterOrch(m_config_db.get(), flex_counter_tables);
298+
flexCounterOrch->m_delayTimerExpired = true;
298299
gDirectory.set(flexCounterOrch);
299300

300301
vector<string> buffer_tables = { APP_BUFFER_POOL_TABLE_NAME,

tests/mock_tests/flowcounterrouteorch_ut.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ namespace flowcounterrouteorch_test
131131
CFG_FLEX_COUNTER_TABLE_NAME
132132
};
133133
auto* flexCounterOrch = new FlexCounterOrch(m_config_db.get(), flex_counter_tables);
134+
flexCounterOrch->m_delayTimerExpired = true;
134135
gDirectory.set(flexCounterOrch);
135136

136137
ASSERT_EQ(gPortsOrch, nullptr);

0 commit comments

Comments
 (0)