@@ -1905,6 +1905,69 @@ MilvusClientV2Impl::Flush(const FlushRequest& request) {
19051905 nullptr , pre , &MilvusConnection::Flush, wait_for_status, nullptr );
19061906}
19071907
1908+ Status
1909+ MilvusClientV2Impl::FlushAll (const FlushAllRequest& request, FlushAllResponse& response) {
1910+ auto pre = [&request](proto::milvus::FlushAllRequest& rpc_request) {
1911+ rpc_request.set_db_name (request.DatabaseName ());
1912+ return Status::OK ();
1913+ };
1914+
1915+ ProgressMonitor progress_monitor = ProgressMonitor::Forever ();
1916+ if (request.WaitFlushedMs () > 0 ) {
1917+ progress_monitor = ProgressMonitor{static_cast <uint32_t >(request.WaitFlushedMs () + 999 ) / 1000 };
1918+ }
1919+
1920+ auto wait_for_status = [this , &request, &progress_monitor](const proto::milvus::FlushAllResponse& rpc_response) {
1921+ GetFlushAllStateRequest state_request = GetFlushAllStateRequest ()
1922+ .WithDatabaseName (request.DatabaseName ())
1923+ .WithFlushAllTs (rpc_response.flush_all_ts ());
1924+ return ConnectionHandler::WaitForStatus (
1925+ [this , &state_request](Progress& p) -> Status {
1926+ p.total_ = 1 ;
1927+ GetFlushAllStateResponse state_response;
1928+ auto status = getFlushAllState (state_request, state_response);
1929+ if (!status.IsOk ()) {
1930+ return status;
1931+ }
1932+ p.finished_ = state_response.Flushed () ? 1 : 0 ;
1933+ return Status::OK ();
1934+ },
1935+ progress_monitor);
1936+ };
1937+
1938+ auto post = [&response](const proto::milvus::FlushAllResponse& rpc_response) {
1939+ response.SetFlushAllTs (rpc_response.flush_all_ts ());
1940+ return Status::OK ();
1941+ };
1942+
1943+ return connection_.Invoke <proto::milvus::FlushAllRequest, proto::milvus::FlushAllResponse>(
1944+ nullptr , pre , &MilvusConnection::FlushAll, wait_for_status, post );
1945+ }
1946+
1947+ Status
1948+ MilvusClientV2Impl::GetFlushAllState (const GetFlushAllStateRequest& request, GetFlushAllStateResponse& response) {
1949+ return getFlushAllState (request, response);
1950+ }
1951+
1952+ Status
1953+ MilvusClientV2Impl::getFlushAllState (const GetFlushAllStateRequest& request, GetFlushAllStateResponse& response,
1954+ uint64_t rpc_timeout_ms) {
1955+ auto pre = [&request](proto::milvus::GetFlushAllStateRequest& rpc_request) {
1956+ rpc_request.set_db_name (request.DatabaseName ());
1957+ rpc_request.set_flush_all_ts (request.FlushAllTs ());
1958+ return Status::OK ();
1959+ };
1960+
1961+ auto post = [&response](const proto::milvus::GetFlushAllStateResponse& rpc_response) {
1962+ response.SetFlushed (rpc_response.flushed ());
1963+ return Status::OK ();
1964+ };
1965+
1966+ return connection_
1967+ .InvokeWithRpcTimeout <proto::milvus::GetFlushAllStateRequest, proto::milvus::GetFlushAllStateResponse>(
1968+ rpc_timeout_ms, pre , &MilvusConnection::GetFlushAllState, post );
1969+ }
1970+
19081971Status
19091972MilvusClientV2Impl::ListPersistentSegments (const ListPersistentSegmentsRequest& request,
19101973 ListPersistentSegmentsResponse& response) {
0 commit comments