Skip to content

Commit acb1887

Browse files
committed
Make batch_throw_error not optional
Instead make it an argument to the constructor of `BatchReadOptions`
1 parent a573ffd commit acb1887

File tree

5 files changed

+16
-29
lines changed

5 files changed

+16
-29
lines changed

cpp/arcticdb/pipeline/read_options.hpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,18 @@ using ReadOptionsPerSymbol = std::variant<ReadOptions, std::vector<ReadOptions>>
100100

101101
struct BatchReadOptionsData {
102102
ReadOptionsPerSymbol read_options_per_symbol_;
103-
std::optional<bool> batch_throw_on_error_;
103+
bool batch_throw_on_error_;
104104
OutputFormat output_format_ = OutputFormat::PANDAS;
105+
106+
BatchReadOptionsData(bool batch_throw_on_error) : batch_throw_on_error_(batch_throw_on_error) {}
105107
};
106108

107109
struct BatchReadOptions {
108-
std::shared_ptr<BatchReadOptionsData> data_ = std::make_shared<BatchReadOptionsData>();
110+
std::shared_ptr<BatchReadOptionsData> data_;
111+
112+
BatchReadOptions(bool batch_throw_on_error) {
113+
data_ = std::make_shared<BatchReadOptionsData>(batch_throw_on_error);
114+
}
109115

110116
void set_read_options(const ReadOptions& read_options) { data_->read_options_per_symbol_ = read_options; }
111117

@@ -123,7 +129,7 @@ struct BatchReadOptions {
123129

124130
void set_batch_throw_on_error(bool batch_throw_on_error) { data_->batch_throw_on_error_ = batch_throw_on_error; }
125131

126-
[[nodiscard]] const std::optional<bool>& batch_throw_on_error() const { return data_->batch_throw_on_error_; }
132+
[[nodiscard]] bool batch_throw_on_error() const { return data_->batch_throw_on_error_; }
127133

128134
void set_output_format(OutputFormat output_format) { data_->output_format_ = output_format; }
129135

cpp/arcticdb/version/local_versioned_engine.cpp

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -539,12 +539,6 @@ std::vector<std::variant<DescriptorItem, DataError>> LocalVersionedEngine::batch
539539
const std::vector<StreamId>& stream_ids, const std::vector<VersionQuery>& version_queries,
540540
const BatchReadOptions& batch_read_options
541541
) {
542-
543-
internal::check<ErrorCode::E_ASSERTION_FAILURE>(
544-
batch_read_options.batch_throw_on_error().has_value(),
545-
"ReadOptions::batch_throw_on_error_ should always be set here"
546-
);
547-
548542
auto opt_index_key_futs = batch_get_versions_async(store(), version_map(), stream_ids, version_queries);
549543
std::vector<folly::Future<DescriptorItem>> descriptor_futures;
550544
for (auto&& [idx, opt_index_key_fut] : folly::enumerate(opt_index_key_futs)) {
@@ -554,7 +548,7 @@ std::vector<std::variant<DescriptorItem, DataError>> LocalVersionedEngine::batch
554548
}
555549
auto descriptors = folly::collectAll(descriptor_futures).get();
556550
TransformBatchResultsFlags flags;
557-
flags.throw_on_error_ = *batch_read_options.batch_throw_on_error();
551+
flags.throw_on_error_ = batch_read_options.batch_throw_on_error();
558552
return transform_batch_items_or_throw(std::move(descriptors), stream_ids, flags, version_queries);
559553
}
560554

@@ -1295,11 +1289,6 @@ std::vector<std::variant<ReadVersionOutput, DataError>> LocalVersionedEngine::ba
12951289
if (stream_ids.empty()) {
12961290
return {};
12971291
}
1298-
// This read option should always be set when calling batch_read
1299-
internal::check<ErrorCode::E_ASSERTION_FAILURE>(
1300-
batch_read_options.batch_throw_on_error().has_value(),
1301-
"ReadOptions::batch_throw_on_error_ should always be set here"
1302-
);
13031292
auto opt_index_key_futs = batch_get_versions_async(store(), version_map(), stream_ids, version_queries);
13041293
std::vector<folly::Future<ReadVersionOutput>> read_versions_futs;
13051294

@@ -1353,7 +1342,7 @@ std::vector<std::variant<ReadVersionOutput, DataError>> LocalVersionedEngine::ba
13531342

13541343
TransformBatchResultsFlags flags;
13551344
flags.convert_no_data_found_to_key_not_found_ = true;
1356-
flags.throw_on_error_ = *batch_read_options.batch_throw_on_error();
1345+
flags.throw_on_error_ = batch_read_options.batch_throw_on_error();
13571346
return transform_batch_items_or_throw(std::move(all_results), stream_ids, flags, version_queries);
13581347
}
13591348

@@ -2085,11 +2074,6 @@ std::vector<std::variant<std::pair<VariantKey, std::optional<google::protobuf::A
20852074
const std::vector<StreamId>& stream_ids, const std::vector<VersionQuery>& version_queries,
20862075
const BatchReadOptions& batch_read_options
20872076
) {
2088-
// This read option should always be set when calling batch_read_metadata
2089-
internal::check<ErrorCode::E_ASSERTION_FAILURE>(
2090-
batch_read_options.batch_throw_on_error().has_value(),
2091-
"ReadOptions::batch_throw_on_error_ should always be set here"
2092-
);
20932077
auto opt_index_key_futs = batch_get_versions_async(store(), version_map(), stream_ids, version_queries);
20942078
std::vector<folly::Future<std::pair<VariantKey, std::optional<google::protobuf::Any>>>> metadata_futures;
20952079
for (auto&& [idx, opt_index_key_fut] : folly::enumerate(opt_index_key_futs)) {
@@ -2102,7 +2086,7 @@ std::vector<std::variant<std::pair<VariantKey, std::optional<google::protobuf::A
21022086
// For legacy reason read_metadata_batch is not throwing if the symbol is missing
21032087
TransformBatchResultsFlags flags;
21042088
flags.throw_on_missing_symbol_ = false;
2105-
flags.throw_on_error_ = *batch_read_options.batch_throw_on_error();
2089+
flags.throw_on_error_ = batch_read_options.batch_throw_on_error();
21062090
return transform_batch_items_or_throw(std::move(metadatas), stream_ids, flags, version_queries);
21072091
}
21082092

cpp/arcticdb/version/python_bindings.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ void register_bindings(py::module& version, py::exception<arcticdb::ArcticExcept
261261
.def_property_readonly("output_format", &ReadOptions::output_format);
262262

263263
py::class_<BatchReadOptions>(version, "PythonVersionStoreBatchReadOptions")
264-
.def(py::init())
264+
.def(py::init([](bool batch_throw_on_error) { return BatchReadOptions(batch_throw_on_error); }))
265265
.def("set_read_options", &BatchReadOptions::set_read_options)
266266
.def("set_read_options_per_symbol", &BatchReadOptions::set_read_options_per_symbol)
267267
.def("set_output_format", &BatchReadOptions::set_output_format)

cpp/arcticdb/version/test/test_version_store.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,8 +522,7 @@ TEST_F(VersionStoreTest, StressBatchReadUncompressed) {
522522
}
523523

524524
std::vector<std::shared_ptr<ReadQuery>> read_queries;
525-
BatchReadOptions batch_read_options;
526-
batch_read_options.set_batch_throw_on_error(true);
525+
BatchReadOptions batch_read_options(true);
527526
batch_read_options.set_output_format(OutputFormat::NATIVE);
528527
register_native_handler_data_factory();
529528
auto handler_data = TypeHandlerRegistry::instance()->get_handler_data(batch_read_options.output_format());

python/arcticdb/version_store/_store.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2188,9 +2188,8 @@ def _get_batch_read_options(
21882188
**kwargs,
21892189
)
21902190
)
2191-
batch_read_options = _PythonVersionStoreBatchReadOptions()
2191+
batch_read_options = _PythonVersionStoreBatchReadOptions(batch_throw_on_error)
21922192
batch_read_options.set_read_options_per_symbol(read_options_per_symbol)
2193-
batch_read_options.set_batch_throw_on_error(batch_throw_on_error)
21942193
# output_format is also a batch level setting, because we currently don't support mixed output formats
21952194
batch_read_options.set_output_format(
21962195
output_format_to_internal(
@@ -3653,8 +3652,7 @@ def _batch_read_descriptor(self, symbols, as_ofs, throw_on_error, date_range_ns_
36533652
for as_of in as_ofs_lists:
36543653
version_queries.append(self._get_version_query(as_of))
36553654

3656-
batch_read_options = _PythonVersionStoreBatchReadOptions()
3657-
batch_read_options.set_batch_throw_on_error(throw_on_error)
3655+
batch_read_options = _PythonVersionStoreBatchReadOptions(throw_on_error)
36583656
descriptions_or_errors = self.version_store.batch_read_descriptor(symbols, version_queries, batch_read_options)
36593657
args_list = list(zip(descriptions_or_errors, symbols, version_queries, as_ofs_lists))
36603658
description_results = []

0 commit comments

Comments
 (0)