ClearcutV1ShippingManager doesn't need SendRetryer
CB-141 #done
ClearcutV1ShippingManager now no longer takes SendRetryer as an
argument, now only the LegacyShippingManager takes it.
Change-Id: I539990ddd586f787b8b6854fbfc8d49c12fb3b64
diff --git a/encoder/shipping_dispatcher_test.cc b/encoder/shipping_dispatcher_test.cc
index 7f77af5..d4def22 100644
--- a/encoder/shipping_dispatcher_test.cc
+++ b/encoder/shipping_dispatcher_test.cc
@@ -42,8 +42,6 @@
// 40 bytes, the worker thread will attempt to send Envelopes that contain
// exactly 5, 40-byte Observations. (4 * 40 < 170 and 6 * 40 > 200 ).
const size_t kMinEnvelopeSendSize = 170;
-const std::chrono::seconds kInitialRpcDeadline(10);
-const std::chrono::seconds kDeadlinePerSendAttempt(60);
const std::chrono::seconds kMaxSeconds = ShippingManager::kMaxSeconds;
// Returns a ProjectContext obtained by parsing the configuration specified
@@ -86,51 +84,6 @@
SystemProfile system_profile_;
};
-struct FakeSendRetryer : public SendRetryerInterface {
- FakeSendRetryer() : SendRetryerInterface() {}
-
- grpc::Status SendToShuffler(
- std::chrono::seconds initial_rpc_deadline,
- std::chrono::seconds overerall_deadline,
- send_retryer::CancelHandle* cancel_handle,
- const EncryptedMessage& encrypted_message) override {
- // Decrypt encrypted_message. (No actual decryption is involved since
- // we used the NONE encryption scheme.)
- util::MessageDecrypter decrypter("");
- Envelope recovered_envelope;
- EXPECT_TRUE(
- decrypter.DecryptMessage(encrypted_message, &recovered_envelope));
- EXPECT_EQ(1, recovered_envelope.batch_size());
- FakeSystemData::CheckSystemProfile(recovered_envelope);
-
- std::unique_lock<std::mutex> lock(mutex);
- send_call_count++;
- observation_count +=
- recovered_envelope.batch(0).encrypted_observation_size();
- // We grab the return value before we block. This allows the test
- // thread to wait for us to block, then change the value of
- // status_to_return for the *next* send without changing it for
- // the currently blocking send.
- grpc::Status status = status_to_return;
- if (should_block) {
- is_blocking = true;
- send_is_blocking_notifier.notify_all();
- send_can_exit_notifier.wait(lock, [this] { return !should_block; });
- is_blocking = false;
- }
- return status;
- }
-
- std::mutex mutex;
- bool should_block = false;
- std::condition_variable send_can_exit_notifier;
- bool is_blocking = false;
- std::condition_variable send_is_blocking_notifier;
- grpc::Status status_to_return = grpc::Status::OK;
- int send_call_count = 0;
- int observation_count = 0;
-};
-
class FakeHTTPClient : public clearcut::HTTPClient {
public:
explicit FakeHTTPClient(std::set<uint32_t>* seen_event_codes)
@@ -162,18 +115,14 @@
class FakeShippingManager : public ShippingManager {
public:
FakeShippingManager(std::chrono::seconds schedule_interval,
- std::chrono::seconds min_interval,
- SendRetryerInterface* send_retryer)
+ std::chrono::seconds min_interval)
: ShippingManager(
ShippingManager::SizeParams(kMaxBytesPerObservation,
kMaxBytesPerEnvelope, kMaxBytesTotal,
kMinEnvelopeSendSize),
ShippingManager::ScheduleParams(schedule_interval, min_interval),
ShippingManager::EnvelopeMakerParams("", EncryptedMessage::NONE, "",
- EncryptedMessage::NONE),
- ShippingManager::SendRetryerParams(kInitialRpcDeadline,
- kDeadlinePerSendAttempt),
- send_retryer),
+ EncryptedMessage::NONE)),
envelopes_sent_(0) {}
void SendEnvelopeToBackend(
@@ -205,15 +154,12 @@
protected:
void Init(std::chrono::seconds schedule_interval,
std::chrono::seconds min_interval) {
- send_retryer_.reset(new FakeSendRetryer());
shipping_dispatcher_->Register(
ObservationMetadata::LEGACY_BACKEND,
- std::make_unique<FakeShippingManager>(schedule_interval, min_interval,
- send_retryer_.get()));
+ std::make_unique<FakeShippingManager>(schedule_interval, min_interval));
shipping_dispatcher_->Register(
ObservationMetadata::V1_BACKEND,
- std::make_unique<FakeShippingManager>(schedule_interval, min_interval,
- send_retryer_.get()));
+ std::make_unique<FakeShippingManager>(schedule_interval, min_interval));
shipping_dispatcher_->Start();
}
@@ -233,7 +179,6 @@
FakeSystemData system_data_;
std::set<uint32_t> seen_clearcut_event_codes_;
- std::unique_ptr<FakeSendRetryer> send_retryer_;
std::unique_ptr<ShippingDispatcher> shipping_dispatcher_;
std::shared_ptr<ProjectContext> project_;
Encoder encoder_;
diff --git a/encoder/shipping_manager.cc b/encoder/shipping_manager.cc
index f1d0ab6..d802e82 100644
--- a/encoder/shipping_manager.cc
+++ b/encoder/shipping_manager.cc
@@ -26,20 +26,15 @@
ShippingManager::ShippingManager(
const SizeParams& size_params, const ScheduleParams& schedule_params,
- const EnvelopeMakerParams& envelope_maker_params,
- const SendRetryerParams send_retryer_params,
- SendRetryerInterface* send_retryer)
+ const EnvelopeMakerParams& envelope_maker_params)
: size_params_(size_params),
envelope_send_threshold_size_(
size_t(0.6 * size_params.max_bytes_per_envelope_)),
total_bytes_send_threshold_(size_t(0.6 * size_params.max_bytes_total_)),
schedule_params_(schedule_params),
envelope_maker_params_(envelope_maker_params),
- send_retryer_params_(send_retryer_params),
- send_retryer_(send_retryer),
next_scheduled_send_time_(std::chrono::system_clock::now() +
schedule_params_.schedule_interval_) {
- CHECK(send_retryer);
_mutex_protected_fields_do_not_access_directly_.active_envelope_maker.reset(
new EnvelopeMaker(envelope_maker_params.analyzer_public_key_pem_,
envelope_maker_params.analyzer_scheme_,
@@ -92,7 +87,7 @@
case EnvelopeMaker::kOk:
VLOG(4) << "ShippingManager::AddObservation: OK";
// Set idle_ false because any thread that invokes WaitUntilIdle() after
- // this should wait until the Observatoin just added has been sent.
+ // this should wait until the Observation just added has been sent.
locked->fields->idle = false;
break;
@@ -371,8 +366,11 @@
const EnvelopeMakerParams& envelope_maker_params,
const SendRetryerParams send_retryer_params,
SendRetryerInterface* send_retryer)
- : ShippingManager(size_params, scheduling_params, envelope_maker_params,
- send_retryer_params, send_retryer) {}
+ : ShippingManager(size_params, scheduling_params, envelope_maker_params),
+ send_retryer_params_(send_retryer_params),
+ send_retryer_(send_retryer) {
+ CHECK(send_retryer_);
+}
void LegacyShippingManager::SendEnvelopeToBackend(
std::unique_ptr<EnvelopeMaker> envelope_to_send,
@@ -411,11 +409,8 @@
ClearcutV1ShippingManager::ClearcutV1ShippingManager(
const SizeParams& size_params, const ScheduleParams& scheduling_params,
const EnvelopeMakerParams& envelope_maker_params,
- const SendRetryerParams send_retryer_params,
- SendRetryerInterface* send_retryer,
std::unique_ptr<clearcut::ClearcutUploader> clearcut)
- : ShippingManager(size_params, scheduling_params, envelope_maker_params,
- send_retryer_params, send_retryer),
+ : ShippingManager(size_params, scheduling_params, envelope_maker_params),
clearcut_(std::move(clearcut)) {}
void ClearcutV1ShippingManager::SendEnvelopeToBackend(
diff --git a/encoder/shipping_manager.h b/encoder/shipping_manager.h
index d5dc30f..339bbfe 100644
--- a/encoder/shipping_manager.h
+++ b/encoder/shipping_manager.h
@@ -187,18 +187,9 @@
//
// envelope_maker_params: Used when the ShippingManager needs to construct
// and EnvelopeMaker.
- //
- // send_retryer_params: Used when the ShippingManager needs to invoke
- // SendRetryer::SendToShuffler().
- //
- // send_retryer: The instance of |SendRetryerInterface| encapsulated by
- // this ShippingManager. ShippingManager does not take ownership of
- // send_retryer which must outlive ShippingManager.
ShippingManager(const SizeParams& size_params,
const ScheduleParams& scheduling_params,
- const EnvelopeMakerParams& envelope_maker_params,
- const SendRetryerParams send_retryer_params,
- SendRetryerInterface* send_retryer);
+ const EnvelopeMakerParams& envelope_maker_params);
// The destructor will stop the worker thread and wait for it to stop
// before exiting.
@@ -328,11 +319,6 @@
const ScheduleParams schedule_params_;
const EnvelopeMakerParams envelope_maker_params_;
- protected:
- const SendRetryerParams send_retryer_params_;
-
- SendRetryerInterface* send_retryer_; // not owned
-
private:
// Variables accessed only by the worker thread. These are not
// protected by a mutex.
@@ -453,6 +439,12 @@
class LegacyShippingManager : public ShippingManager {
public:
+ // send_retryer_params: Used when the ShippingManager needs to invoke
+ // SendRetryer::SendToShuffler().
+ //
+ // send_retryer: The instance of |SendRetryerInterface| encapsulated by
+ // this ShippingManager. ShippingManager does not take ownership of
+ // send_retryer which must outlive ShippingManager.
LegacyShippingManager(const SizeParams& size_params,
const ScheduleParams& scheduling_params,
const EnvelopeMakerParams& envelope_maker_params,
@@ -460,6 +452,10 @@
SendRetryerInterface* send_retryer);
private:
+ const SendRetryerParams send_retryer_params_;
+
+ SendRetryerInterface* send_retryer_; // not owned
+
void SendEnvelopeToBackend(
std::unique_ptr<EnvelopeMaker> envelope_to_send,
std::deque<std::unique_ptr<EnvelopeMaker>>* envelopes_that_failed);
@@ -470,8 +466,6 @@
ClearcutV1ShippingManager(
const SizeParams& size_params, const ScheduleParams& scheduling_params,
const EnvelopeMakerParams& envelope_maker_params,
- const SendRetryerParams send_retryer_params,
- SendRetryerInterface* send_retryer,
std::unique_ptr<::clearcut::ClearcutUploader> clearcut);
private:
diff --git a/encoder/shipping_manager_test.cc b/encoder/shipping_manager_test.cc
index e3174d0..8d9a0e1 100644
--- a/encoder/shipping_manager_test.cc
+++ b/encoder/shipping_manager_test.cc
@@ -195,7 +195,6 @@
} else {
shipping_manager_.reset(new ClearcutV1ShippingManager(
size_params, schedule_params, envelope_maker_params,
- send_retryer_params, send_retryer_.get(),
std::make_unique<clearcut::ClearcutUploader>(
"https://test.com",
std::make_unique<FakeHTTPClient>(&seen_clearcut_event_codes_))));
diff --git a/tools/test_app/test_app.cc b/tools/test_app/test_app.cc
index a3fff09..a157865 100644
--- a/tools/test_app/test_app.cc
+++ b/tools/test_app/test_app.cc
@@ -577,7 +577,6 @@
ObservationMetadata::V1_BACKEND,
std::make_unique<ClearcutV1ShippingManager>(
size_params, schedule_params, envelope_maker_params,
- send_retryer_params, send_retryer_.get(),
std::make_unique<clearcut::ClearcutUploader>(
FLAGS_clearcut_endpoint,
std::make_unique<util::clearcut::CurlHTTPClient>())));