From 42d5c2c20484309acd1f8a4dafb2a6c279f3fa5d Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Thu, 30 Jun 2022 22:47:12 +0200
Subject: [PATCH] MAINT: clean up imports

---
 .../download_request_handler.h                |  8 +--
 .../register_file_upload_handler.h            | 14 ++---
 .../upload_request_handler.h                  |  8 +--
 include/caosdb/transaction_handler.h          | 14 ++---
 include/caosdb/unary_rpc_handler.h            | 10 ++--
 .../download_request_handler.cpp              | 32 +++++------
 .../register_file_upload_handler.cpp          |  4 +-
 .../upload_request_handler.cpp                | 30 +++++-----
 src/caosdb/transaction.cpp                    | 57 +++++++++----------
 src/caosdb/transaction_handler.cpp            |  2 -
 src/caosdb/unary_rpc_handler.cpp              | 12 ++--
 11 files changed, 90 insertions(+), 101 deletions(-)

diff --git a/include/caosdb/file_transmission/download_request_handler.h b/include/caosdb/file_transmission/download_request_handler.h
index 965db64..9c82b23 100644
--- a/include/caosdb/file_transmission/download_request_handler.h
+++ b/include/caosdb/file_transmission/download_request_handler.h
@@ -55,10 +55,10 @@
 #include "caosdb/file_transmission/file_writer.h" // for FileWriter
 #include "caosdb/handler_interface.h"             // for HandlerTag, Handl...
 #include <cstdint>                                // for uint64_t
-#include <grpcpp/impl/codegen/async_stream.h>     // for ClientAsyncReader
-#include <grpcpp/impl/codegen/client_context.h>   // for ClientContext
-#include <grpcpp/impl/codegen/completion_queue.h> // for CompletionQueue
-#include <grpcpp/impl/codegen/status.h>           // for Status
+#include <grpcpp/client_context.h>                // for ClientContext
+#include <grpcpp/completion_queue.h>              // for CompletionQueue
+#include <grpcpp/support/async_stream.h>          // for ClientAsyncReader
+#include <grpcpp/support/status.h>                // for Status
 #include <memory>                                 // for unique_ptr
 
 namespace caosdb::transaction {
diff --git a/include/caosdb/file_transmission/register_file_upload_handler.h b/include/caosdb/file_transmission/register_file_upload_handler.h
index 37df2db..37cc6cf 100644
--- a/include/caosdb/file_transmission/register_file_upload_handler.h
+++ b/include/caosdb/file_transmission/register_file_upload_handler.h
@@ -49,13 +49,13 @@
 #ifndef CAOSDB_FILE_TRANSMISSION_REGISTER_FILE_UPLOAD_H
 #define CAOSDB_FILE_TRANSMISSION_REGISTER_FILE_UPLOAD_H
 
-#include "caosdb/entity/v1/main.grpc.pb.h" // for FileTransmissionS...
-#include "caosdb/entity/v1/main.pb.h"      // for FileDownloadResponse
-#include "caosdb/handler_interface.h"      // for HandlerTag, Handl...
-#include "caosdb/unary_rpc_handler.h"
-#include <grpcpp/impl/codegen/async_unary_call.h> // for ClientAsyncRespons...
-#include <grpcpp/impl/codegen/completion_queue.h> // for CompletionQueue
-#include <memory>                                 // for unique_ptr
+#include "caosdb/entity/v1/main.grpc.pb.h"   // for FileTransmissionS...
+#include "caosdb/entity/v1/main.pb.h"        // for FileDownloadResponse
+#include "caosdb/handler_interface.h"        // for HandlerTag, Handl...
+#include "caosdb/unary_rpc_handler.h"        // for  UnaryRpcHandler
+#include <grpcpp/completion_queue.h>         // for CompletionQueue
+#include <grpcpp/support/async_unary_call.h> // for ClientAsyncResponseReader
+#include <memory>                            // for unique_ptr
 
 namespace caosdb::transaction {
 
diff --git a/include/caosdb/file_transmission/upload_request_handler.h b/include/caosdb/file_transmission/upload_request_handler.h
index 099e39e..f9d6aab 100644
--- a/include/caosdb/file_transmission/upload_request_handler.h
+++ b/include/caosdb/file_transmission/upload_request_handler.h
@@ -55,10 +55,10 @@
 #include "caosdb/file_transmission/file_reader.h" // for FileReader
 #include "caosdb/handler_interface.h"             // for HandlerTag, Handl...
 #include <cstdint>                                // for uint64_t
-#include <grpcpp/impl/codegen/async_stream.h>     // for ClientAsyncWriter
-#include <grpcpp/impl/codegen/client_context.h>   // for ClientContext
-#include <grpcpp/impl/codegen/completion_queue.h> // for CompletionQueue
-#include <grpcpp/impl/codegen/status.h>           // for Status
+#include <grpcpp/client_context.h>                // for ClientContext
+#include <grpcpp/completion_queue.h>              // for CompletionQueue
+#include <grpcpp/support/async_stream.h>          // for ClientAsyncReader
+#include <grpcpp/support/status.h>                // for Status
 #include <memory>                                 // for unique_ptr
 
 namespace caosdb::transaction {
diff --git a/include/caosdb/transaction_handler.h b/include/caosdb/transaction_handler.h
index 6fa386b..3f9fc81 100644
--- a/include/caosdb/transaction_handler.h
+++ b/include/caosdb/transaction_handler.h
@@ -1,11 +1,11 @@
 #pragma once
-#include "caosdb/entity/v1/main.grpc.pb.h"        // for FileTransmissionS...
-#include "caosdb/entity/v1/main.pb.h"             // for FileDownloadResponse
-#include "caosdb/handler_interface.h"             // for HandlerTag
-#include "caosdb/unary_rpc_handler.h"             // for HandlerTag, Handl...
-#include <grpcpp/impl/codegen/async_unary_call.h> // for ClientAsyncRespons...
-#include <grpcpp/impl/codegen/completion_queue.h> // for CompletionQueue
-#include <memory>                                 // for unique_ptr
+#include "caosdb/entity/v1/main.grpc.pb.h"   // for FileTransmissionS...
+#include "caosdb/entity/v1/main.pb.h"        // for FileDownloadResponse
+#include "caosdb/handler_interface.h"        // for HandlerTag
+#include "caosdb/unary_rpc_handler.h"        // for HandlerTag, Handl...
+#include <grpcpp/completion_queue.h>         // for CompletionQueue
+#include <grpcpp/support/async_unary_call.h> // for ClientAsyncResponseReader
+#include <memory>                            // for unique_ptr
 
 namespace caosdb::transaction {
 
diff --git a/include/caosdb/unary_rpc_handler.h b/include/caosdb/unary_rpc_handler.h
index a505a87..06b9457 100644
--- a/include/caosdb/unary_rpc_handler.h
+++ b/include/caosdb/unary_rpc_handler.h
@@ -49,11 +49,11 @@
 #ifndef CAOSDB_UNARY_RPC_HANDLER_H
 #define CAOSDB_UNARY_RPC_HANDLER_H
 
-#include "caosdb/handler_interface.h"             // for HandlerTag, Handl...
-#include "caosdb/transaction_status.h"            // for TransactionStatus
-#include <grpcpp/impl/codegen/client_context.h>   // for ClientContext
-#include <grpcpp/impl/codegen/completion_queue.h> // for CompletionQueue
-#include <grpcpp/impl/codegen/status.h>           // for Status
+#include "caosdb/handler_interface.h"  // for HandlerTag, Handl...
+#include "caosdb/transaction_status.h" // for TransactionStatus
+#include <grpcpp/client_context.h>     // for ClientContext
+#include <grpcpp/completion_queue.h>   // for CompletionQueue
+#include <grpcpp/support/status.h>     // for Status
 
 namespace caosdb::transaction {
 
diff --git a/src/caosdb/file_transmission/download_request_handler.cpp b/src/caosdb/file_transmission/download_request_handler.cpp
index e079d28..821ed79 100644
--- a/src/caosdb/file_transmission/download_request_handler.cpp
+++ b/src/caosdb/file_transmission/download_request_handler.cpp
@@ -47,23 +47,23 @@
  * > DEALINGS IN THE SOFTWARE.
  */
 #include "caosdb/file_transmission/download_request_handler.h"
-#include "caosdb/logging.h"            // for CAOSDB_LOG_TRACE
-#include "caosdb/protobuf_helper.h"    // for get_arena
-#include "caosdb/status_code.h"        // for GENERIC_RPC_E...
-#include "caosdb/transaction_status.h" // for TransactionStatus
-#include <exception>                   // IWYU pragma: keep
+#include "caosdb/logging.h"                  // for CAOSDB_LOG_TRACE
+#include "caosdb/protobuf_helper.h"          // for get_arena
+#include "caosdb/status_code.h"              // for GENERIC_RPC_E...
+#include "caosdb/transaction_status.h"       // for TransactionStatus
+#include <exception>                         // IWYU pragma: keep
+#include <filesystem>                        // for operator<<, path
+#include <google/protobuf/arena.h>           // for Arena
+#include <grpcpp/client_context.h>           // for ClientContext
+#include <grpcpp/completion_queue.h>         // for CompletionQueue
+#include <grpcpp/support/async_stream.h>     // for ClientAsyncReader
+#include <grpcpp/support/status.h>           // for Status
+#include <grpcpp/support/status_code_enum.h> // for OK
+#include <stdexcept>                         // for runtime_error
+#include <string>                            // for string, opera...
+#include <utility>                           // for move
 // IWYU pragma: no_include <bits/exception.h>
-#include <filesystem>                             // for operator<<, path
-#include <google/protobuf/arena.h>                // for Arena
-#include <grpcpp/impl/codegen/async_stream.h>     // for ClientAsyncRe...
-#include <grpcpp/impl/codegen/client_context.h>   // for ClientContext
-#include <grpcpp/impl/codegen/completion_queue.h> // for CompletionQueue
-#include <grpcpp/impl/codegen/status.h>           // for Status
-#include <grpcpp/impl/codegen/status_code_enum.h> // for OK, UNAUTHENT...
-#include <stdexcept>                              // for runtime_error
-#include <string>                                 // for string, opera...
-#include <utility>                                // for move
-
+//
 namespace caosdb::transaction {
 using caosdb::StatusCode;
 using caosdb::utility::get_arena;
diff --git a/src/caosdb/file_transmission/register_file_upload_handler.cpp b/src/caosdb/file_transmission/register_file_upload_handler.cpp
index 9460d18..3a47715 100644
--- a/src/caosdb/file_transmission/register_file_upload_handler.cpp
+++ b/src/caosdb/file_transmission/register_file_upload_handler.cpp
@@ -47,9 +47,7 @@
  * > DEALINGS IN THE SOFTWARE.
  */
 #include "caosdb/file_transmission/register_file_upload_handler.h"
-#include "caosdb/logging.h"                       // for CAOSDB_LOG_TRACE
-#include <grpcpp/impl/codegen/async_unary_call.h> // for ClientAsyncRes...
-#include <grpcpp/impl/codegen/completion_queue.h> // for CompletionQueue
+#include "caosdb/logging.h" // for CAOSDB_LOG_TRACE
 
 namespace caosdb::transaction {
 
diff --git a/src/caosdb/file_transmission/upload_request_handler.cpp b/src/caosdb/file_transmission/upload_request_handler.cpp
index e4fb985..32bb813 100644
--- a/src/caosdb/file_transmission/upload_request_handler.cpp
+++ b/src/caosdb/file_transmission/upload_request_handler.cpp
@@ -47,24 +47,20 @@
  * > DEALINGS IN THE SOFTWARE.
  */
 #include "caosdb/file_transmission/upload_request_handler.h"
-#include "caosdb/logging.h"            // for CAOSDB_LOG_ERROR
-#include "caosdb/protobuf_helper.h"    // for get_arena
-#include "caosdb/status_code.h"        // for GENERIC_RPC_E...
-#include "caosdb/transaction_status.h" // for TransactionStatus
-#include <algorithm>                   // for min
-#include <cstdint>                     // for uint64_t
-#include <exception>                   // IWYU pragma: keep
+#include "caosdb/logging.h"                  // for CAOSDB_LOG_ERROR
+#include "caosdb/protobuf_helper.h"          // for get_arena
+#include "caosdb/status_code.h"              // for GENERIC_RPC_E...
+#include "caosdb/transaction_status.h"       // for TransactionStatus
+#include <algorithm>                         // for min
+#include <cstdint>                           // for uint64_t
+#include <exception>                         // IWYU pragma: keep
+#include <filesystem>                        // for operator<<, path
+#include <google/protobuf/arena.h>           // for Arena
+#include <grpcpp/impl/codegen/call_op_set.h> // for WriteOptions
+#include <grpcpp/support/status_code_enum.h> // for OK
+#include <string>                            // for basic_string
+#include <utility>                           // for move
 // IWYU pragma: no_include <bits/exception.h>
-#include <filesystem>                             // for operator<<, path
-#include <google/protobuf/arena.h>                // for Arena
-#include <grpcpp/impl/codegen/async_stream.h>     // for ClientAsyncWr...
-#include <grpcpp/impl/codegen/call_op_set.h>      // for WriteOptions
-#include <grpcpp/impl/codegen/client_context.h>   // for ClientContext
-#include <grpcpp/impl/codegen/completion_queue.h> // for CompletionQueue
-#include <grpcpp/impl/codegen/status.h>           // for Status
-#include <grpcpp/impl/codegen/status_code_enum.h> // for OK, UNAUTHENT...
-#include <string>                                 // for basic_string
-#include <utility>                                // for move
 
 namespace caosdb::transaction {
 using caosdb::StatusCode;
diff --git a/src/caosdb/transaction.cpp b/src/caosdb/transaction.cpp
index 8d1897f..c75fdeb 100644
--- a/src/caosdb/transaction.cpp
+++ b/src/caosdb/transaction.cpp
@@ -28,7 +28,6 @@
 #include "caosdb/status_code.h"                                    // for StatusCode
 #include "caosdb/transaction_handler.h"                            // for EntityTransactionHandler
 #include <algorithm>                                               // for max
-#include <chrono>                                                  // for chrono_literals
 #include <exception>                                               // IWYU pragma: keep
 #include <filesystem>                                              // for operator<<, path
 #include <future>                                                  // for async, future
@@ -38,7 +37,6 @@
 #include <memory>                                                  // for unique_ptr
 #include <random>                                                  // for mt19937, rand...
 #include <system_error>                                            // for std::system_error
-#include <thread>                                                  // for sleep
 #include <utility>                                                 // for move, pair
 // IWYU pragma: no_include <bits/exception.h>
 // IWYU pragma: no_include <cxxabi.h>
@@ -423,14 +421,17 @@ auto Transaction::WaitForIt() const noexcept -> TransactionStatus {
   return this->status;
 }
 
-// NOLINTNEXTLINE
 auto Transaction::ProcessCalls() -> TransactionStatus {
-  CAOSDB_LOG_TRACE_ENTER_AND_LEAVE(logger_name, "Transaction::ProcessCalls()")
-  if (this->status.GetCode() != StatusCode::EXECUTING) {
-    CAOSDB_LOG_ERROR(logger_name)
-      << "Transaction::ProcessCalls() was called, TransactionStatus was: "
-      << std::to_string(this->status.GetCode()) << " - " << this->status.GetDescription();
-    return status;
+  CAOSDB_LOG_TRACE_ENTER_AND_LEAVE(logger_name, "Transaction::ProcessCalls()") {
+    TRANSACTION_SYNCRONIZED_BLOCK
+    if (this->status.GetCode() != StatusCode::EXECUTING) {
+      CAOSDB_LOG_ERROR(logger_name)
+        << "Transaction::ProcessCalls() was called, TransactionStatus was: "
+        << std::to_string(this->status.GetCode()) << " - " << this->status.GetDescription();
+      return status;
+    }
+
+    handler_->Start();
   }
 
   gpr_timespec deadline;
@@ -439,7 +440,6 @@ auto Transaction::ProcessCalls() -> TransactionStatus {
   deadline.clock_type = gpr_clock_type::GPR_TIMESPAN;
 
   TransactionStatus result = TransactionStatus::EXECUTING();
-  handler_->Start();
 
   void *tag = nullptr;
   bool ok = false;
@@ -486,29 +486,28 @@ Transaction::~Transaction() {
 void Transaction::Cancel() {
   CAOSDB_LOG_TRACE_ENTER_AND_LEAVE(logger_name, "Transaction::Cancel()")
 
-  TRANSACTION_SYNCRONIZED_BLOCK
-
-  if (this->status.GetCode() > 0) {
-    // Prevent canceling before the queue even started.
-    // Temporary fix for a bug in GRPC.
-    // Fix is in the making:
-    // https://github.com/grpc/grpc/pull/30004
-    using namespace std::chrono_literals;
-    std::this_thread::sleep_for(5ms);
+  if (this->status.GetCode() == StatusCode::CANCELLED) {
+    return;
   }
 
-  this->status = TransactionStatus::CANCELLED();
-  if (handler_ != nullptr) {
-    handler_->Cancel();
-  }
+  {
 
-  completion_queue.Shutdown();
+    TRANSACTION_SYNCRONIZED_BLOCK
 
-  // drain the queue
-  void *ignoredTag = nullptr;
-  bool ok = false;
-  while (completion_queue.Next(&ignoredTag, &ok)) {
-    ;
+    if (handler_ != nullptr) {
+      handler_->Cancel();
+    }
+
+    this->status = TransactionStatus::CANCELLED();
+
+    completion_queue.Shutdown();
+
+    // drain the queue
+    void *ignoredTag = nullptr;
+    bool ok = false;
+    while (completion_queue.Next(&ignoredTag, &ok)) {
+      ;
+    }
   }
 
   if (transaction_future.valid()) {
diff --git a/src/caosdb/transaction_handler.cpp b/src/caosdb/transaction_handler.cpp
index cbcbf76..ef4897d 100644
--- a/src/caosdb/transaction_handler.cpp
+++ b/src/caosdb/transaction_handler.cpp
@@ -2,8 +2,6 @@
 #include "caosdb/logging.h" // for CAOSDB_LOG_TRACE
 #include <exception>        // IWYU pragma: keep
 // IWYU pragma: no_include <bits/exception.h>
-#include <grpcpp/impl/codegen/async_unary_call.h> // for ClientAsyncRes...
-#include <grpcpp/impl/codegen/completion_queue.h> // for CompletionQueue
 
 namespace caosdb::transaction {
 
diff --git a/src/caosdb/unary_rpc_handler.cpp b/src/caosdb/unary_rpc_handler.cpp
index 6770cae..06afc12 100644
--- a/src/caosdb/unary_rpc_handler.cpp
+++ b/src/caosdb/unary_rpc_handler.cpp
@@ -47,14 +47,12 @@
  * > DEALINGS IN THE SOFTWARE.
  */
 #include "caosdb/unary_rpc_handler.h"
-#include "caosdb/logging.h"     // for CAOSDB_LOG_TRACE
-#include "caosdb/status_code.h" // for GENERIC_RPC_E...
+#include "caosdb/logging.h"                  // for CAOSDB_LOG_TRACE
+#include "caosdb/status_code.h"              // for GENERIC_RPC_E...
+#include <exception>                         // IWYU pragma: keep
+#include <grpcpp/support/status_code_enum.h> // for OK
+#include <string>                            // for string, opera...
 // IWYU pragma: no_include <bits/exception.h>
-#include <exception>                              // IWYU pragma: keep
-#include <grpcpp/impl/codegen/client_context.h>   // for ClientContext
-#include <grpcpp/impl/codegen/status.h>           // for Status
-#include <grpcpp/impl/codegen/status_code_enum.h> // for OK, UNAUTHENT...
-#include <string>                                 // for string, opera...
 
 namespace caosdb::transaction {
 
-- 
GitLab