From 467186eec4ffee2ca9d4d5c61b225e8cc2373585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=BE=E8=81=AA?= Date: Thu, 30 Nov 2023 19:08:38 +0800 Subject: [PATCH] fix bug of websocket lock blocking --- runtime/websocket/bin/websocket-server-2pass.cpp | 7 ++++++- runtime/websocket/bin/websocket-server.cpp | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/runtime/websocket/bin/websocket-server-2pass.cpp b/runtime/websocket/bin/websocket-server-2pass.cpp index 156becce7..5cfd4619a 100644 --- a/runtime/websocket/bin/websocket-server-2pass.cpp +++ b/runtime/websocket/bin/websocket-server-2pass.cpp @@ -98,8 +98,8 @@ void WebSocketServer::do_decoder( std::string wav_format, FUNASR_HANDLE& tpass_online_handle) { // lock for each connection - scoped_lock guard(thread_lock); if(!tpass_online_handle){ + scoped_lock guard(thread_lock); LOG(INFO) << "tpass_online_handle is free, return"; msg["access_num"]=(int)msg["access_num"]-1; return; @@ -128,10 +128,12 @@ void WebSocketServer::do_decoder( hotwords_embedding, itn); } else { + scoped_lock guard(thread_lock); msg["access_num"]=(int)msg["access_num"]-1; return; } } catch (std::exception const& e) { + scoped_lock guard(thread_lock); LOG(ERROR) << e.what(); msg["access_num"]=(int)msg["access_num"]-1; return; @@ -162,10 +164,12 @@ void WebSocketServer::do_decoder( wav_format, (ASR_TYPE)asr_mode_, hotwords_embedding, itn); } else { + scoped_lock guard(thread_lock); msg["access_num"]=(int)msg["access_num"]-1; return; } } catch (std::exception const& e) { + scoped_lock guard(thread_lock); LOG(ERROR) << e.what(); msg["access_num"]=(int)msg["access_num"]-1; return; @@ -209,6 +213,7 @@ void WebSocketServer::do_decoder( } catch (std::exception const& e) { std::cerr << "Error: " << e.what() << std::endl; } + scoped_lock guard(thread_lock); msg["access_num"]=(int)msg["access_num"]-1; } diff --git a/runtime/websocket/bin/websocket-server.cpp b/runtime/websocket/bin/websocket-server.cpp index 8ee9b161c..99b150f89 100644 --- a/runtime/websocket/bin/websocket-server.cpp +++ b/runtime/websocket/bin/websocket-server.cpp @@ -68,7 +68,6 @@ void WebSocketServer::do_decoder(const std::vector& buffer, int audio_fs, std::string wav_format, FUNASR_DEC_HANDLE& decoder_handle) { - scoped_lock guard(thread_lock); try { int num_samples = buffer.size(); // the size of the buf @@ -130,6 +129,7 @@ void WebSocketServer::do_decoder(const std::vector& buffer, } catch (std::exception const& e) { std::cerr << "Error: " << e.what() << std::endl; } + scoped_lock guard(thread_lock); msg["access_num"]=(int)msg["access_num"]-1; }