Skip to content

Commit 256ec9b

Browse files
committed
keep handler watch state properly updated
1 parent 1222a2d commit 256ec9b

File tree

3 files changed

+26
-15
lines changed

3 files changed

+26
-15
lines changed

userspace/libsinsp/k8s_handler.cpp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ void k8s_handler::make_http()
7777
m_http->set_json_end("}\n");
7878
m_http->add_json_filter(m_filter);
7979
m_http->add_json_filter(ERROR_FILTER);
80+
m_req_sent = false;
8081
connect();
8182
}
8283
}
@@ -206,7 +207,7 @@ void k8s_handler::process_events()
206207

207208
void k8s_handler::check_state()
208209
{
209-
if(m_collector && m_state_built && m_watch)
210+
if(m_collector && m_state_built && m_watch && !m_watching)
210211
{
211212
// done with initial state handling, switch to events
212213
m_collector->remove(m_http);
@@ -228,10 +229,10 @@ void k8s_handler::check_state()
228229
{
229230
throw sinsp_exception("k8s_handler (" + m_id + "), invalid URL path: " + m_path);
230231
}
231-
m_req_sent = false;
232232
}
233233
m_filter = m_event_filter;
234234
make_http();
235+
m_watching = true;
235236
}
236237
}
237238

@@ -261,31 +262,36 @@ void k8s_handler::collect_data()
261262
check_enabled();
262263
if(!m_req_sent)
263264
{
264-
g_logger.log("k8s_handler (" + m_id + ") collect_data(), connected to " + uri(m_url).to_string(false) + ", requesting data ...",
265-
sinsp_logger::SEV_DEBUG);
265+
g_logger.log("k8s_handler (" + m_id + ") collect_data(), connected to " + uri(m_url).to_string(false) + ", requesting data "
266+
"from " + m_path + "...", sinsp_logger::SEV_DEBUG);
266267
send_data_request();
267268
}
268269
if(m_collector->subscription_count())
269270
{
270-
g_logger.log("k8s_handler (" + m_id + ") collect_data(), connected to " + uri(m_url).to_string(false) + ", getting data ...",
271-
sinsp_logger::SEV_DEBUG);
271+
g_logger.log("k8s_handler (" + m_id + ") collect_data(), connected to " + uri(m_url).to_string(false) + ", getting data "
272+
"from " + m_path + "...", sinsp_logger::SEV_DEBUG);
272273
m_collector->get_data();
273-
g_logger.log("k8s_handler (" + m_id + ") collect_data(), " + std::to_string(m_events.size()) + " events from " + uri(m_url).to_string(false),
274-
sinsp_logger::SEV_DEBUG);
274+
g_logger.log("k8s_handler (" + m_id + ") collect_data(), " + std::to_string(m_events.size()) +
275+
" events from " + uri(m_url).to_string(false) + m_path, sinsp_logger::SEV_DEBUG);
275276
if(m_events.size())
276277
{
277-
g_logger.log("k8s_handler (" + m_id + ") collect_data(), data from " + uri(m_url).to_string(false) +
278-
"event count=" + std::to_string(m_events.size()),
278+
g_logger.log("k8s_handler (" + m_id + ") collect_data(), data from " + uri(m_url).to_string(false) + m_path +
279+
", event count=" + std::to_string(m_events.size()),
279280
sinsp_logger::SEV_DEBUG);
280281
process_events();
281282
check_state();
282283
}
283284
else
284285
{
285-
g_logger.log("k8s_handler (" + m_id + ") collect_data(), no data from " + uri(m_url).to_string(false),
286+
g_logger.log("k8s_handler (" + m_id + ") collect_data(), no data from " + uri(m_url).to_string(false) + m_path,
286287
sinsp_logger::SEV_DEBUG);
287288
}
288289
}
290+
else
291+
{
292+
g_logger.log("k8s_handler (" + m_id + ") collect_data(), no subscriptions to " + uri(m_url).to_string(false) + m_path,
293+
sinsp_logger::SEV_DEBUG);
294+
}
289295
return;
290296
}
291297
else

userspace/libsinsp/k8s_handler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ class k8s_handler
140140
// this flag indicates whether handler should continue to watch after receiving
141141
// the initial state
142142
bool m_watch;
143+
bool m_watching = false; // indication of being in watch mode
143144

144145
// flag indicating whether to connect to K8s API server (no connection needed when
145146
// replaying capture)

userspace/libsinsp/socket_handler.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -644,9 +644,13 @@ class socket_data_handler
644644

645645
void extract_data(std::string& data)
646646
{
647-
//g_logger.log(data,sinsp_logger::SEV_DEBUG);
648-
g_logger.log(m_id + ' ' + m_url.to_string(false) + ":\n\n" + data + "\n\n", sinsp_logger::SEV_TRACE);
649-
if(data.empty()) { return; }
647+
if(data.empty())
648+
{
649+
g_logger.log(m_id + ' ' + m_url.to_string(false) + m_path + ": no data received, giving up extraction ...",
650+
sinsp_logger::SEV_TRACE);
651+
return;
652+
}
653+
g_logger.log(m_id + ' ' + m_url.to_string(false) + m_path + ":\n\n" + data + "\n\n", sinsp_logger::SEV_TRACE);
650654
if(!detect_chunked_transfer(data))
651655
{
652656
g_logger.log("Socket handler (" + m_id + ") " + m_url.to_string(false) + ": "
@@ -1089,7 +1093,7 @@ class socket_data_handler
10891093
}
10901094

10911095
g_logger.log("Socket handler (" + m_id + "): Connected: socket=" + std::to_string(m_socket) +
1092-
", collecting data from " + m_url.to_string(false), sinsp_logger::SEV_DEBUG);
1096+
", collecting data from " + m_url.to_string(false) + m_path, sinsp_logger::SEV_DEBUG);
10931097

10941098
if(m_url.is_secure() && m_ssl && m_ssl->verify_peer())
10951099
{

0 commit comments

Comments
 (0)