From b3c68d8de983ab818ea7b811fc9cc727c134e205 Mon Sep 17 00:00:00 2001 From: Hui Xiao Date: Mon, 18 Apr 2022 14:16:35 -0700 Subject: [PATCH 001/226] Conditionally declare and define variable that is unused in LITE mode (#9854) Summary: Context: As mentioned in https://github.com/facebook/rocksdb/issues/9701, we have the following in LITE=1 make static_lib for v7.0.2 ``` CC file/sequence_file_reader.o CC file/sst_file_manager_impl.o CC file/writable_file_writer.o In file included from file/writable_file_writer.cc:10: ./file/writable_file_writer.h:163:15: error: private field 'temperature_' is not used [-Werror,-Wunused-private-field] Temperature temperature_; ^ 1 error generated. make: *** [file/writable_file_writer.o] Error 1 ``` as titled Pull Request resolved: https://github.com/facebook/rocksdb/pull/9854 Test Plan: - Local `LITE=1 make static_lib` reveals the same error and error is gone after this fix - CI Reviewed By: ajkr, jay-zhuang Differential Revision: D35706585 Pulled By: hx235 fbshipit-source-id: 7743310298231ad6866304ffa2225c8abdc91d9a --- file/writable_file_writer.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/file/writable_file_writer.h b/file/writable_file_writer.h index bfc7563888..f9f6e5bd07 100644 --- a/file/writable_file_writer.h +++ b/file/writable_file_writer.h @@ -160,7 +160,9 @@ class WritableFileWriter { bool perform_data_verification_; uint32_t buffered_data_crc32c_checksum_; bool buffered_data_with_checksum_; +#ifndef ROCKSDB_LITE Temperature temperature_; +#endif // ROCKSDB_LITE public: WritableFileWriter( @@ -191,8 +193,10 @@ class WritableFileWriter { checksum_finalized_(false), perform_data_verification_(perform_data_verification), buffered_data_crc32c_checksum_(0), - buffered_data_with_checksum_(buffered_data_with_checksum), - temperature_(options.temperature) { + buffered_data_with_checksum_(buffered_data_with_checksum) { +#ifndef ROCKSDB_LITE + temperature_ = options.temperature; +#endif // ROCKSDB_LITE assert(!use_direct_io() || max_buffer_size_ > 0); TEST_SYNC_POINT_CALLBACK("WritableFileWriter::WritableFileWriter:0", reinterpret_cast(max_buffer_size_)); From 65a3e21af49004c58cace5d188b69bb64b17d566 Mon Sep 17 00:00:00 2001 From: Peter Dillinger Date: Tue, 19 Apr 2022 16:44:05 -0700 Subject: [PATCH 002/226] Release note for #9546 (#9872) Summary: We don't really have a mechanism for internal-only release notes, so adding this to the standard release notes. For picking into 7.2 release. Pull Request resolved: https://github.com/facebook/rocksdb/pull/9872 Test Plan: release note only Reviewed By: jay-zhuang Differential Revision: D35761307 Pulled By: pdillinger fbshipit-source-id: 5d1932767fff48456323df948604dbb956ac27b2 --- HISTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/HISTORY.md b/HISTORY.md index 06cbc6307e..653b2b04e2 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -22,6 +22,7 @@ * Added a dedicated integer DB property `rocksdb.live-blob-file-garbage-size` that exposes the total amount of garbage in the blob files in the current version. * RocksDB does internal auto prefetching if it notices sequential reads. It starts with readahead size `initial_auto_readahead_size` which now can be configured through BlockBasedTableOptions. * Add a merge operator that allows users to register specific aggregation function so that they can does aggregation using different aggregation types for different keys. See comments in include/rocksdb/utilities/agg_merge.h for actual usage. The feature is experimental and the format is subject to change and we won't provide a migration tool. +* Meta-internal / Experimental: Improve CPU performance by replacing many uses of std::unordered_map with folly::F14FastMap when RocksDB is compiled together with Folly. ### Behavior changes * Disallow usage of commit-time-write-batch for write-prepared/write-unprepared transactions if TransactionOptions::use_only_the_last_commit_time_batch_for_recovery is false to prevent two (or more) uncommitted versions of the same key in the database. Otherwise, bottommost compaction may violate the internal key uniqueness invariant of SSTs if the sequence numbers of both internal keys are zeroed out (#9794). From 14fb86d1badc444310d7ef6c3407732332106659 Mon Sep 17 00:00:00 2001 From: Bo Wang Date: Tue, 19 Apr 2022 18:24:58 -0700 Subject: [PATCH 003/226] Add release note for #9747 (#9874) Summary: Add release note for CompressedSecondaryCache and the update of SecondaryCache::Lookup(). Pull Request resolved: https://github.com/facebook/rocksdb/pull/9874 Reviewed By: jay-zhuang Differential Revision: D35765973 Pulled By: gitbw95 fbshipit-source-id: 98232508c4f2047216def9c11a038cfb98709690 --- HISTORY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/HISTORY.md b/HISTORY.md index 653b2b04e2..84389759b9 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -23,6 +23,7 @@ * RocksDB does internal auto prefetching if it notices sequential reads. It starts with readahead size `initial_auto_readahead_size` which now can be configured through BlockBasedTableOptions. * Add a merge operator that allows users to register specific aggregation function so that they can does aggregation using different aggregation types for different keys. See comments in include/rocksdb/utilities/agg_merge.h for actual usage. The feature is experimental and the format is subject to change and we won't provide a migration tool. * Meta-internal / Experimental: Improve CPU performance by replacing many uses of std::unordered_map with folly::F14FastMap when RocksDB is compiled together with Folly. +* Experimental: Add CompressedSecondaryCache, a concrete implementation of rocksdb::SecondaryCache, that integrates with compression libraries (e.g. LZ4) to hold compressed blocks. ### Behavior changes * Disallow usage of commit-time-write-batch for write-prepared/write-unprepared transactions if TransactionOptions::use_only_the_last_commit_time_batch_for_recovery is false to prevent two (or more) uncommitted versions of the same key in the database. Otherwise, bottommost compaction may violate the internal key uniqueness invariant of SSTs if the sequence numbers of both internal keys are zeroed out (#9794). @@ -31,6 +32,7 @@ ### Public API changes * Exposed APIs to examine results of block cache stats collections in a structured way. In particular, users of `GetMapProperty()` with property `kBlockCacheEntryStats` can now use the functions in `BlockCacheEntryStatsMapKeys` to find stats in the map. * Add `fail_if_not_bottommost_level` to IngestExternalFileOptions so that ingestion will fail if the file(s) cannot be ingested to the bottommost level. +* Add output parameter `is_in_sec_cache` to `SecondaryCache::Lookup()`. It is to indicate whether the handle is possibly erased from the secondary cache after the Lookup. ## 7.1.0 (03/23/2022) ### New Features From 1ef888f9b8ae4261f01b53a0b34fc07bba4aa044 Mon Sep 17 00:00:00 2001 From: Hui Xiao Date: Tue, 19 Apr 2022 19:02:00 -0700 Subject: [PATCH 004/226] Fix issue of opening too many files in BlockBasedTableReaderCapMemoryTest.CapMemoryUsageUnderCacheCapacity (#9869) Summary: **Context:** Unit test for https://github.com/facebook/rocksdb/pull/9748 keeps opening new files to see whether the new feature is able to correctly constrain the opening based on block cache capacity. However, the unit test has two places written inefficiently that can lead to opening too many new files relative to underlying operating system/file system constraint, even before hitting the block cache capacity: (1) [opened_table_reader_num < 2 * max_table_reader_num](https://github.com/facebook/rocksdb/pull/9748/files?show-viewed-files=true&file-filters%5B%5D=#diff-ec9f5353e317df71093094734ba29193b94a998f0f9c9af924e4c99692195eeaR438), which can leads to 1200 + open files because of (2) below (2) NewLRUCache(6 * CacheReservationManagerImpl::GetDummyEntrySize()) in [here](https://github.com/facebook/rocksdb/pull/9748/files?show-viewed-files=true&file-filters%5B%5D=#diff-ec9f5353e317df71093094734ba29193b94a998f0f9c9af924e4c99692195eeaR364) Therefore we see CI failures like this on machine with a strict open file limit ~1000 (see the "table_1021" naming in following error msg) https://app.circleci.com/pipelines/github/facebook/rocksdb/12886/workflows/75524682-3fa4-41ee-9a61-81827b51d99b/jobs/345270 ``` fs_->NewWritableFile(path, foptions, &file, nullptr) IO error: While open a file for appending: /dev/shm/rocksdb.Jedwt/run-block_based_table_reader_test-CapMemoryUsageUnderCacheCapacity-BlockBasedTableReaderCapMemoryTest.CapMemoryUsageUnderCacheCapacity-0/block_based_table_reader_test_1668910_829492452552920927/**table_1021**: Too many open files ``` **Summary:** - Revised the test more efficiently on the above 2 places, including using 1.1 instead 2 in the threshold and lowering down the block cache capacity a bit - Renamed some variables for clarity Pull Request resolved: https://github.com/facebook/rocksdb/pull/9869 Test Plan: - Manual inspection of max opened table reader in all test case, which is around ~389 - Circle CI to see if error is gone Reviewed By: ajkr Differential Revision: D35752655 Pulled By: hx235 fbshipit-source-id: 8a0953d39d561babfa4257b8ed8550bb21b04839 --- .../block_based_table_reader_test.cc | 73 +++++++++++-------- 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/table/block_based/block_based_table_reader_test.cc b/table/block_based/block_based_table_reader_test.cc index d7a3105a3d..0c7fc37332 100644 --- a/table/block_based/block_based_table_reader_test.cc +++ b/table/block_based/block_based_table_reader_test.cc @@ -5,6 +5,7 @@ #include "table/block_based/block_based_table_reader.h" +#include #include #include @@ -330,9 +331,9 @@ class BlockBasedTableReaderCapMemoryTest CacheEntryRole::kBlockBasedTableReader>:: GetDummyEntrySize() == 0 && - cache_capacity > 2 * CacheReservationManagerImpl< - CacheEntryRole::kBlockBasedTableReader>:: - GetDummyEntrySize()); + cache_capacity >= 2 * CacheReservationManagerImpl< + CacheEntryRole::kBlockBasedTableReader>:: + GetDummyEntrySize()); // We need to subtract 1 for max_num_dummy_entry to account for dummy // entries' overhead, assumed the overhead is no greater than 1 dummy entry @@ -347,11 +348,11 @@ class BlockBasedTableReaderCapMemoryTest max_num_dummy_entry * CacheReservationManagerImpl< CacheEntryRole::kBlockBasedTableReader>::GetDummyEntrySize(); - std::size_t max_table_reader_num = static_cast( + std::size_t max_table_reader_num_capped = static_cast( std::floor(1.0 * cache_capacity_rounded_to_dummy_entry_multiples / approx_table_reader_mem)); - return max_table_reader_num; + return max_table_reader_num_capped; } void SetUp() override { @@ -361,7 +362,7 @@ class BlockBasedTableReaderCapMemoryTest compression_type_ = CompressionType::kNoCompression; table_reader_res_only_cache_.reset(new BlockBasedTableReaderResOnlyCache( - NewLRUCache(6 * CacheReservationManagerImpl< + NewLRUCache(4 * CacheReservationManagerImpl< CacheEntryRole::kBlockBasedTableReader>:: GetDummyEntrySize(), 0 /* num_shard_bits */, true /* strict_capacity_limit */))); @@ -420,22 +421,44 @@ class BlockBasedTableReaderCapMemoryTest }; INSTANTIATE_TEST_CASE_P(CapMemoryUsageUnderCacheCapacity, - BlockBasedTableReaderCapMemoryTest, ::testing::Bool()); + BlockBasedTableReaderCapMemoryTest, + ::testing::Values(true, false)); TEST_P(BlockBasedTableReaderCapMemoryTest, CapMemoryUsageUnderCacheCapacity) { - const std::size_t max_table_reader_num = BlockBasedTableReaderCapMemoryTest:: - CalculateMaxTableReaderNumBeforeCacheFull( - table_reader_res_only_cache_->GetCapacity(), - approx_table_reader_mem_); + const std::size_t max_table_reader_num_capped = + BlockBasedTableReaderCapMemoryTest:: + CalculateMaxTableReaderNumBeforeCacheFull( + table_reader_res_only_cache_->GetCapacity(), + approx_table_reader_mem_); + + // Acceptable estimtation errors coming from + // 1. overstimate max_table_reader_num_capped due to # dummy entries is high + // and results in metadata charge overhead greater than 1 dummy entry size + // (violating our assumption in calculating max_table_reader_num_capped) + // 2. overestimate/underestimate max_table_reader_num_capped due to the gap + // between ApproximateTableReaderMem() and actual table reader mem + std::size_t max_table_reader_num_capped_upper_bound = + (std::size_t)(max_table_reader_num_capped * 1.01); + std::size_t max_table_reader_num_capped_lower_bound = + (std::size_t)(max_table_reader_num_capped * 0.99); + std::size_t max_table_reader_num_uncapped = + (std::size_t)(max_table_reader_num_capped * 1.1); + ASSERT_GT(max_table_reader_num_uncapped, + max_table_reader_num_capped_upper_bound) + << "We need `max_table_reader_num_uncapped` > " + "`max_table_reader_num_capped_upper_bound` to differentiate cases " + "between " + "reserve_table_reader_memory_ == false and == true)"; Status s = Status::OK(); std::size_t opened_table_reader_num = 0; std::string table_name; std::vector> tables; - // Keep creating BlockBasedTableReader till hiting the memory limit based on - // cache capacity and creation fails or reaching a big number of table readers - while (s.ok() && opened_table_reader_num < 2 * max_table_reader_num) { + // cache capacity and creation fails (when reserve_table_reader_memory_ == + // true) or reaching a specfied big number of table readers (when + // reserve_table_reader_memory_ == false) + while (s.ok() && opened_table_reader_num < max_table_reader_num_uncapped) { table_name = "table_" + std::to_string(opened_table_reader_num); CreateTable(table_name, compression_type_, kv_); tables.push_back(std::unique_ptr()); @@ -449,23 +472,14 @@ TEST_P(BlockBasedTableReaderCapMemoryTest, CapMemoryUsageUnderCacheCapacity) { } if (reserve_table_reader_memory_) { - EXPECT_TRUE(s.IsMemoryLimit() && - opened_table_reader_num < 2 * max_table_reader_num) - << "s: " << s.ToString() << " opened_table_reader_num: " - << std::to_string(opened_table_reader_num); + EXPECT_TRUE(s.IsMemoryLimit()) << "s: " << s.ToString(); EXPECT_TRUE(s.ToString().find("memory limit based on cache capacity") != std::string::npos); - // Acceptable estimtation errors coming from - // 1. overstimate max_table_reader_num due to # dummy entries is high and - // results in metadata charge overhead greater than 1 dummy entry size - // (violating our assumption in calculating max_table_reader_nums) - // 2. overestimate/underestimate max_table_reader_num due to the gap between - // ApproximateTableReaderMem() and actual table reader mem - EXPECT_GE(opened_table_reader_num, max_table_reader_num * 0.99); - EXPECT_LE(opened_table_reader_num, max_table_reader_num * 1.01); + EXPECT_GE(opened_table_reader_num, max_table_reader_num_capped_lower_bound); + EXPECT_LE(opened_table_reader_num, max_table_reader_num_capped_upper_bound); - std::size_t updated_max_table_reader_num = + std::size_t updated_max_table_reader_num_capped = BlockBasedTableReaderCapMemoryTest:: CalculateMaxTableReaderNumBeforeCacheFull( table_reader_res_only_cache_->GetCapacity() / 2, @@ -473,7 +487,7 @@ TEST_P(BlockBasedTableReaderCapMemoryTest, CapMemoryUsageUnderCacheCapacity) { // Keep deleting BlockBasedTableReader to lower down memory usage from the // memory limit to make the next creation succeeds - while (opened_table_reader_num >= updated_max_table_reader_num) { + while (opened_table_reader_num >= updated_max_table_reader_num_capped) { tables.pop_back(); --opened_table_reader_num; } @@ -489,7 +503,8 @@ TEST_P(BlockBasedTableReaderCapMemoryTest, CapMemoryUsageUnderCacheCapacity) { tables.clear(); EXPECT_EQ(table_reader_res_only_cache_->GetPinnedUsage(), 0); } else { - EXPECT_TRUE(s.ok() && opened_table_reader_num == 2 * max_table_reader_num) + EXPECT_TRUE(s.ok() && + opened_table_reader_num == max_table_reader_num_uncapped) << "s: " << s.ToString() << " opened_table_reader_num: " << std::to_string(opened_table_reader_num); EXPECT_EQ(table_reader_res_only_cache_->GetPinnedUsage(), 0); From 5898845c87834959bf067329ac07b328e25ed9b2 Mon Sep 17 00:00:00 2001 From: Akanksha Mahajan Date: Mon, 25 Apr 2022 14:20:03 -0700 Subject: [PATCH 005/226] Add experimental new FS API AbortIO to cancel read request (#9901) Summary: Add experimental new API AbortIO in FileSystem to abort the read requests submitted asynchronously through ReadAsync API. Pull Request resolved: https://github.com/facebook/rocksdb/pull/9901 Test Plan: Existing tests Reviewed By: anand1976 Differential Revision: D35885591 Pulled By: akankshamahajan15 fbshipit-source-id: df3944e6e9e6e487af1fa688376b4abb6837fb02 --- HISTORY.md | 5 +++++ env/fs_posix.cc | 7 +++++++ file/file_prefetch_buffer.h | 3 ++- include/rocksdb/file_system.h | 15 +++++++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 84389759b9..07d290f3c8 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,4 +1,9 @@ # Rocksdb Change Log +## Unreleased + +### Bug Fixes +* RocksDB calls FileSystem::Poll API during FilePrefetchBuffer destruction which impacts performance as it waits for read requets completion which is not needed anymore. Calling FileSystem::AbortIO to abort those requests instead fixes that performance issue. + ## 7.2.0 (04/15/2022) ### Bug Fixes * Fixed bug which caused rocksdb failure in the situation when rocksdb was accessible using UNC path diff --git a/env/fs_posix.cc b/env/fs_posix.cc index 17095e92cb..629ebe5b8e 100644 --- a/env/fs_posix.cc +++ b/env/fs_posix.cc @@ -1118,6 +1118,13 @@ class PosixFileSystem : public FileSystem { #endif } + // TODO akanksha: Look into flags and see how to provide support for AbortIO + // in posix for IOUring requests. Currently it calls Poll to wait for requests + // to complete the request. + virtual IOStatus AbortIO(std::vector& io_handles) override { + return Poll(io_handles, io_handles.size()); + } + #if defined(ROCKSDB_IOURING_PRESENT) // io_uring instance std::unique_ptr thread_local_io_urings_; diff --git a/file/file_prefetch_buffer.h b/file/file_prefetch_buffer.h index 78ed3153c7..b56ef86142 100644 --- a/file/file_prefetch_buffer.h +++ b/file/file_prefetch_buffer.h @@ -92,7 +92,8 @@ class FilePrefetchBuffer { if (async_read_in_progress_ && fs_ != nullptr) { std::vector handles; handles.emplace_back(io_handle_); - fs_->Poll(handles, 1).PermitUncheckedError(); + Status s = fs_->AbortIO(handles); + assert(s.ok()); } // Release io_handle_. if (io_handle_ != nullptr && del_fn_ != nullptr) { diff --git a/include/rocksdb/file_system.h b/include/rocksdb/file_system.h index c856f6c656..9eca00aaca 100644 --- a/include/rocksdb/file_system.h +++ b/include/rocksdb/file_system.h @@ -668,6 +668,17 @@ class FileSystem : public Customizable { return IOStatus::OK(); } + // EXPERIMENTAL + // Abort the read IO requests submitted asynchronously. Underlying FS is + // required to support AbortIO API. AbortIO implementation should ensure that + // the all the read requests related to io_handles should be aborted and + // it shouldn't call the callback for these io_handles. + // + // Default implementation is to return IOStatus::OK. + virtual IOStatus AbortIO(std::vector& /*io_handles*/) { + return IOStatus::OK(); + } + // If you're adding methods here, remember to add them to EnvWrapper too. private: @@ -1500,6 +1511,10 @@ class FileSystemWrapper : public FileSystem { return target_->Poll(io_handles, min_completions); } + virtual IOStatus AbortIO(std::vector& io_handles) override { + return target_->AbortIO(io_handles); + } + protected: std::shared_ptr target_; }; From 34681a1a2ad0c666eacfe090b2d334d4d557cd03 Mon Sep 17 00:00:00 2001 From: Akanksha Mahajan Date: Mon, 25 Apr 2022 21:58:22 -0700 Subject: [PATCH 006/226] Add stats related to async prefetching (#9845) Summary: Add stats PREFETCHED_BYTES_DISCARDED and POLL_WAIT_MICROS. PREFETCHED_BYTES_DISCARDED records number of prefetched bytes discarded by FilePrefetchBuffer. POLL_WAIT_MICROS records the time taken by underling file_system Poll API. Pull Request resolved: https://github.com/facebook/rocksdb/pull/9845 Test Plan: Update existing tests Reviewed By: anand1976 Differential Revision: D35909694 Pulled By: akankshamahajan15 fbshipit-source-id: e009ef940bb9ed72c9446f5529095caabb8a1e36 --- file/file_prefetch_buffer.cc | 1 + file/file_prefetch_buffer.h | 23 +++++++++++++++++--- file/prefetch_test.cc | 5 +++++ include/rocksdb/statistics.h | 5 +++++ java/rocksjni/portal.h | 8 +++++++ monitoring/statistics.cc | 3 +++ table/block_based/block_based_table_reader.h | 3 ++- 7 files changed, 44 insertions(+), 4 deletions(-) diff --git a/file/file_prefetch_buffer.cc b/file/file_prefetch_buffer.cc index 6d98f3b534..ec92758fe4 100644 --- a/file/file_prefetch_buffer.cc +++ b/file/file_prefetch_buffer.cc @@ -229,6 +229,7 @@ Status FilePrefetchBuffer::PrefetchAsync(const IOOptions& opts, // second buffer. std::vector handles; handles.emplace_back(io_handle_); + StopWatch sw(clock_, stats_, POLL_WAIT_MICROS); fs_->Poll(handles, 1).PermitUncheckedError(); } diff --git a/file/file_prefetch_buffer.h b/file/file_prefetch_buffer.h index b56ef86142..94d09bba43 100644 --- a/file/file_prefetch_buffer.h +++ b/file/file_prefetch_buffer.h @@ -14,6 +14,7 @@ #include #include "file/readahead_file_info.h" +#include "monitoring/statistics.h" #include "port/port.h" #include "rocksdb/env.h" #include "rocksdb/file_system.h" @@ -64,7 +65,8 @@ class FilePrefetchBuffer { FilePrefetchBuffer(size_t readahead_size = 0, size_t max_readahead_size = 0, bool enable = true, bool track_min_offset = false, bool implicit_auto_readahead = false, - bool async_io = false, FileSystem* fs = nullptr) + bool async_io = false, FileSystem* fs = nullptr, + SystemClock* clock = nullptr, Statistics* stats = nullptr) : curr_(0), readahead_size_(readahead_size), initial_auto_readahead_size_(readahead_size), @@ -80,7 +82,9 @@ class FilePrefetchBuffer { del_fn_(nullptr), async_read_in_progress_(false), async_io_(async_io), - fs_(fs) { + fs_(fs), + clock_(clock), + stats_(stats) { // If async_io_ is enabled, data is asynchronously filled in second buffer // while curr_ is being consumed. If data is overlapping in two buffers, // data is copied to third buffer to return continuous buffer. @@ -88,13 +92,24 @@ class FilePrefetchBuffer { } ~FilePrefetchBuffer() { - // Wait for any pending async job before destroying the class object. + // Abort any pending async read request before destroying the class object. if (async_read_in_progress_ && fs_ != nullptr) { std::vector handles; handles.emplace_back(io_handle_); Status s = fs_->AbortIO(handles); assert(s.ok()); } + + // Prefetch buffer bytes discarded. + uint64_t bytes_discarded = 0; + if (bufs_[curr_].buffer_.CurrentSize() != 0) { + bytes_discarded = bufs_[curr_].buffer_.CurrentSize(); + } + if (bufs_[curr_ ^ 1].buffer_.CurrentSize() != 0) { + bytes_discarded += bufs_[curr_ ^ 1].buffer_.CurrentSize(); + } + RecordInHistogram(stats_, PREFETCHED_BYTES_DISCARDED, bytes_discarded); + // Release io_handle_. if (io_handle_ != nullptr && del_fn_ != nullptr) { del_fn_(io_handle_); @@ -273,5 +288,7 @@ class FilePrefetchBuffer { bool async_read_in_progress_; bool async_io_; FileSystem* fs_; + SystemClock* clock_; + Statistics* stats_; }; } // namespace ROCKSDB_NAMESPACE diff --git a/file/prefetch_test.cc b/file/prefetch_test.cc index 20e569568d..c6287961cf 100644 --- a/file/prefetch_test.cc +++ b/file/prefetch_test.cc @@ -1288,6 +1288,10 @@ TEST_P(PrefetchTestWithPosix, ReadAsyncWithPosixFS) { { HistogramData async_read_bytes; options.statistics->histogramData(ASYNC_READ_BYTES, &async_read_bytes); + HistogramData prefetched_bytes_discarded; + options.statistics->histogramData(PREFETCHED_BYTES_DISCARDED, + &prefetched_bytes_discarded); + // Not all platforms support iouring. In that case, ReadAsync in posix // won't submit async requests. if (read_async_called) { @@ -1295,6 +1299,7 @@ TEST_P(PrefetchTestWithPosix, ReadAsyncWithPosixFS) { } else { ASSERT_EQ(async_read_bytes.count, 0); } + ASSERT_GT(prefetched_bytes_discarded.count, 0); } } diff --git a/include/rocksdb/statistics.h b/include/rocksdb/statistics.h index dcd3fc3339..9bc7ab196d 100644 --- a/include/rocksdb/statistics.h +++ b/include/rocksdb/statistics.h @@ -536,7 +536,12 @@ enum Histograms : uint32_t { // Error handler statistics ERROR_HANDLER_AUTORESUME_RETRY_COUNT, + // Stats related to asynchronous read requests. ASYNC_READ_BYTES, + POLL_WAIT_MICROS, + + // Number of prefetched bytes discarded by RocksDB. + PREFETCHED_BYTES_DISCARDED, HISTOGRAM_ENUM_MAX, }; diff --git a/java/rocksjni/portal.h b/java/rocksjni/portal.h index a94b39065b..4d0d55c124 100644 --- a/java/rocksjni/portal.h +++ b/java/rocksjni/portal.h @@ -5589,6 +5589,10 @@ class HistogramTypeJni { return 0x32; case ROCKSDB_NAMESPACE::Histograms::ASYNC_READ_BYTES: return 0x33; + case ROCKSDB_NAMESPACE::Histograms::POLL_WAIT_MICROS: + return 0x34; + case ROCKSDB_NAMESPACE::Histograms::PREFETCHED_BYTES_DISCARDED: + return 0x35; case ROCKSDB_NAMESPACE::Histograms::HISTOGRAM_ENUM_MAX: // 0x1F for backwards compatibility on current minor version. return 0x1F; @@ -5708,6 +5712,10 @@ class HistogramTypeJni { ERROR_HANDLER_AUTORESUME_RETRY_COUNT; case 0x33: return ROCKSDB_NAMESPACE::Histograms::ASYNC_READ_BYTES; + case 0x34: + return ROCKSDB_NAMESPACE::Histograms::POLL_WAIT_MICROS; + case 0x35: + return ROCKSDB_NAMESPACE::Histograms::PREFETCHED_BYTES_DISCARDED; case 0x1F: // 0x1F for backwards compatibility on current minor version. return ROCKSDB_NAMESPACE::Histograms::HISTOGRAM_ENUM_MAX; diff --git a/monitoring/statistics.cc b/monitoring/statistics.cc index 566feb1893..388acaf4d9 100644 --- a/monitoring/statistics.cc +++ b/monitoring/statistics.cc @@ -284,6 +284,9 @@ const std::vector> HistogramsNameMap = { {ERROR_HANDLER_AUTORESUME_RETRY_COUNT, "rocksdb.error.handler.autoresume.retry.count"}, {ASYNC_READ_BYTES, "rocksdb.async.read.bytes"}, + {POLL_WAIT_MICROS, "rocksdb.poll.wait.micros"}, + {PREFETCHED_BYTES_DISCARDED, "rocksdb.prefetched.bytes.discarded"}, + }; std::shared_ptr CreateDBStatistics() { diff --git a/table/block_based/block_based_table_reader.h b/table/block_based/block_based_table_reader.h index 0671fc09f1..c9c656c3e0 100644 --- a/table/block_based/block_based_table_reader.h +++ b/table/block_based/block_based_table_reader.h @@ -666,7 +666,8 @@ struct BlockBasedTable::Rep { fpb->reset(new FilePrefetchBuffer( readahead_size, max_readahead_size, !ioptions.allow_mmap_reads /* enable */, false /* track_min_offset */, - implicit_auto_readahead, async_io, ioptions.fs.get())); + implicit_auto_readahead, async_io, ioptions.fs.get(), ioptions.clock, + ioptions.stats)); } void CreateFilePrefetchBufferIfNotExists( From 3620e694048808a2d4b96cd387b6651a2963b731 Mon Sep 17 00:00:00 2001 From: Andrew Kryczka Date: Tue, 26 Apr 2022 14:46:53 -0700 Subject: [PATCH 007/226] Revert open logic changes in #9634 (#9906) Summary: Left HISTORY.md and unit tests. Added a new unit test to repro the corruption scenario that this PR fixes, and HISTORY.md line for that. Pull Request resolved: https://github.com/facebook/rocksdb/pull/9906 Reviewed By: riversand963 Differential Revision: D35940093 Pulled By: ajkr fbshipit-source-id: 9816f99e1ce405ba36f316beb4f6378c37c8c86b --- HISTORY.md | 1 + db/corruption_test.cc | 62 +++++ db/db_impl/db_impl.h | 69 +----- db/db_impl/db_impl_files.cc | 36 ++- db/db_impl/db_impl_open.cc | 229 ++++++------------ db/db_impl/db_impl_secondary.cc | 3 +- db/db_impl/db_impl_secondary.h | 4 +- .../test/java/org/rocksdb/RocksDBTest.java | 2 +- monitoring/stats_history_test.cc | 10 +- 9 files changed, 176 insertions(+), 240 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 07d290f3c8..a988e32f98 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,6 +2,7 @@ ## Unreleased ### Bug Fixes +* Fixed a bug where RocksDB could corrupt DBs with `avoid_flush_during_recovery == true` by removing valid WALs, leading to `Status::Corruption` with message like "SST file is ahead of WALs" when attempting to reopen. * RocksDB calls FileSystem::Poll API during FilePrefetchBuffer destruction which impacts performance as it waits for read requets completion which is not needed anymore. Calling FileSystem::AbortIO to abort those requests instead fixes that performance issue. ## 7.2.0 (04/15/2022) diff --git a/db/corruption_test.cc b/db/corruption_test.cc index 7cd5ad7e23..c480ce51a9 100644 --- a/db/corruption_test.cc +++ b/db/corruption_test.cc @@ -337,6 +337,68 @@ TEST_F(CorruptionTest, Recovery) { Check(36, 36); } +TEST_F(CorruptionTest, PostPITRCorruptionWALsRetained) { + // Repro for bug where WALs following the point-in-time recovery were not + // retained leading to the next recovery failing. + CloseDb(); + + options_.wal_recovery_mode = WALRecoveryMode::kPointInTimeRecovery; + + const std::string test_cf_name = "test_cf"; + std::vector cf_descs; + cf_descs.emplace_back(kDefaultColumnFamilyName, ColumnFamilyOptions()); + cf_descs.emplace_back(test_cf_name, ColumnFamilyOptions()); + + uint64_t log_num; + { + options_.create_missing_column_families = true; + std::vector cfhs; + ASSERT_OK(DB::Open(options_, dbname_, cf_descs, &cfhs, &db_)); + + ASSERT_OK(db_->Put(WriteOptions(), cfhs[0], "k", "v")); + ASSERT_OK(db_->Put(WriteOptions(), cfhs[1], "k", "v")); + ASSERT_OK(db_->Put(WriteOptions(), cfhs[0], "k2", "v2")); + std::vector file_nums; + GetSortedWalFiles(file_nums); + log_num = file_nums.back(); + for (auto* cfh : cfhs) { + delete cfh; + } + CloseDb(); + } + + CorruptFileWithTruncation(FileType::kWalFile, log_num, + /*bytes_to_truncate=*/1); + + { + // Recover "k" -> "v" for both CFs. "k2" -> "v2" is lost due to truncation. + options_.avoid_flush_during_recovery = true; + std::vector cfhs; + ASSERT_OK(DB::Open(options_, dbname_, cf_descs, &cfhs, &db_)); + // Flush one but not both CFs and write some data so there's a seqno gap + // between the PITR corruption and the next DB session's first WAL. + ASSERT_OK(db_->Put(WriteOptions(), cfhs[1], "k2", "v2")); + ASSERT_OK(db_->Flush(FlushOptions(), cfhs[1])); + + for (auto* cfh : cfhs) { + delete cfh; + } + CloseDb(); + } + + // With the bug, this DB open would remove the WALs following the PITR + // corruption. Then, the next recovery would fail. + for (int i = 0; i < 2; ++i) { + std::vector cfhs; + ASSERT_OK(DB::Open(options_, dbname_, cf_descs, &cfhs, &db_)); + + for (auto* cfh : cfhs) { + delete cfh; + } + CloseDb(); + } +} + TEST_F(CorruptionTest, RecoverWriteError) { env_->writable_file_error_ = true; Status s = TryReopen(); diff --git a/db/db_impl/db_impl.h b/db/db_impl/db_impl.h index 77987ab418..97e3d1b8a9 100644 --- a/db/db_impl/db_impl.h +++ b/db/db_impl/db_impl.h @@ -1240,43 +1240,6 @@ class DBImpl : public DB { std::atomic shutting_down_; - // RecoveryContext struct stores the context about version edits along - // with corresponding column_family_data and column_family_options. - class RecoveryContext { - public: - ~RecoveryContext() { - for (auto& edit_list : edit_lists_) { - for (auto* edit : edit_list) { - delete edit; - } - edit_list.clear(); - } - cfds_.clear(); - mutable_cf_opts_.clear(); - edit_lists_.clear(); - files_to_delete_.clear(); - } - - void UpdateVersionEdits(ColumnFamilyData* cfd, const VersionEdit& edit) { - if (map_.find(cfd->GetID()) == map_.end()) { - uint32_t size = static_cast(map_.size()); - map_.emplace(cfd->GetID(), size); - cfds_.emplace_back(cfd); - mutable_cf_opts_.emplace_back(cfd->GetLatestMutableCFOptions()); - edit_lists_.emplace_back(autovector()); - } - uint32_t i = map_[cfd->GetID()]; - edit_lists_[i].emplace_back(new VersionEdit(edit)); - } - - std::unordered_map map_; // cf_id to index; - autovector cfds_; - autovector mutable_cf_opts_; - autovector> edit_lists_; - // files_to_delete_ contains sst files - std::set files_to_delete_; - }; - // Except in DB::Open(), WriteOptionsFile can only be called when: // Persist options to options file. // If need_mutex_lock = false, the method will lock DB mutex. @@ -1393,19 +1356,16 @@ class DBImpl : public DB { // be made to the descriptor are added to *edit. // recovered_seq is set to less than kMaxSequenceNumber if the log's tail is // skipped. - // recovery_ctx stores the context about version edits and all those - // edits are persisted to new Manifest after successfully syncing the new WAL. virtual Status Recover( const std::vector& column_families, bool read_only = false, bool error_if_wal_file_exists = false, bool error_if_data_exists_in_wals = false, - uint64_t* recovered_seq = nullptr, - RecoveryContext* recovery_ctx = nullptr); + uint64_t* recovered_seq = nullptr); virtual bool OwnTablesAndLogs() const { return true; } // Set DB identity file, and write DB ID to manifest if necessary. - Status SetDBId(bool read_only, RecoveryContext* recovery_ctx); + Status SetDBId(bool read_only); // REQUIRES: db mutex held when calling this function, but the db mutex can // be released and re-acquired. Db mutex will be held when the function @@ -1414,15 +1374,12 @@ class DBImpl : public DB { // not referenced in the MANIFEST (e.g. // 1. It's best effort recovery; // 2. The VersionEdits referencing the SST files are appended to - // RecoveryContext, DB crashes when syncing the MANIFEST, the VersionEdits are + // MANIFEST, DB crashes when syncing the MANIFEST, the VersionEdits are // still not synced to MANIFEST during recovery.) - // It stores the SST files to be deleted in RecoveryContext. In the + // We delete these SST files. In the // meantime, we find out the largest file number present in the paths, and // bump up the version set's next_file_number_ to be 1 + largest_file_number. - // recovery_ctx stores the context about version edits and files to be - // deleted. All those edits are persisted to new Manifest after successfully - // syncing the new WAL. - Status DeleteUnreferencedSstFiles(RecoveryContext* recovery_ctx); + Status DeleteUnreferencedSstFiles(); // SetDbSessionId() should be called in the constuctor DBImpl() // to ensure that db_session_id_ gets updated every time the DB is opened @@ -1432,11 +1389,6 @@ class DBImpl : public DB { Status FailIfTsSizesMismatch(const ColumnFamilyHandle* column_family, const Slice& ts) const; - // recovery_ctx stores the context about version edits and - // LogAndApplyForRecovery persist all those edits to new Manifest after - // successfully syncing new WAL. - Status LogAndApplyForRecovery(const RecoveryContext& recovery_ctx); - private: friend class DB; friend class ErrorHandler; @@ -1691,10 +1643,9 @@ class DBImpl : public DB { // REQUIRES: log_numbers are sorted in ascending order // corrupted_log_found is set to true if we recover from a corrupted log file. - Status RecoverLogFiles(std::vector& log_numbers, + Status RecoverLogFiles(const std::vector& log_numbers, SequenceNumber* next_sequence, bool read_only, - bool* corrupted_log_found, - RecoveryContext* recovery_ctx); + bool* corrupted_log_found); // The following two methods are used to flush a memtable to // storage. The first one is used at database RecoveryTime (when the @@ -1704,12 +1655,6 @@ class DBImpl : public DB { Status WriteLevel0TableForRecovery(int job_id, ColumnFamilyData* cfd, MemTable* mem, VersionEdit* edit); - // Move all the WAL files starting from corrupted WAL found to - // max_wal_number to avoid column family inconsistency error on recovery. It - // also removes the deleted file from the vector wal_numbers. - void MoveCorruptedWalFiles(std::vector& wal_numbers, - uint64_t corrupted_wal_number); - // Get the size of a log file and, if truncate is true, truncate the // log file to its actual size, thereby freeing preallocated space. // Return success even if truncate fails diff --git a/db/db_impl/db_impl_files.cc b/db/db_impl/db_impl_files.cc index 0d3a3bea73..1790ed836f 100644 --- a/db/db_impl/db_impl_files.cc +++ b/db/db_impl/db_impl_files.cc @@ -863,7 +863,7 @@ uint64_t PrecomputeMinLogNumberToKeep2PC( return min_log_number_to_keep; } -Status DBImpl::SetDBId(bool read_only, RecoveryContext* recovery_ctx) { +Status DBImpl::SetDBId(bool read_only) { Status s; // Happens when immutable_db_options_.write_dbid_to_manifest is set to true // the very first time. @@ -890,14 +890,14 @@ Status DBImpl::SetDBId(bool read_only, RecoveryContext* recovery_ctx) { } s = GetDbIdentityFromIdentityFile(&db_id_); if (immutable_db_options_.write_dbid_to_manifest && s.ok()) { - assert(!read_only); - assert(recovery_ctx != nullptr); - assert(versions_->GetColumnFamilySet() != nullptr); VersionEdit edit; edit.SetDBId(db_id_); + Options options; + MutableCFOptions mutable_cf_options(options); versions_->db_id_ = db_id_; - recovery_ctx->UpdateVersionEdits( - versions_->GetColumnFamilySet()->GetDefault(), edit); + s = versions_->LogAndApply(versions_->GetColumnFamilySet()->GetDefault(), + mutable_cf_options, &edit, &mutex_, nullptr, + /* new_descriptor_log */ false); } } else if (!read_only) { s = SetIdentityFile(env_, dbname_, db_id_); @@ -905,7 +905,7 @@ Status DBImpl::SetDBId(bool read_only, RecoveryContext* recovery_ctx) { return s; } -Status DBImpl::DeleteUnreferencedSstFiles(RecoveryContext* recovery_ctx) { +Status DBImpl::DeleteUnreferencedSstFiles() { mutex_.AssertHeld(); std::vector paths; paths.push_back(NormalizePath(dbname_ + std::string(1, kFilePathSeparator))); @@ -925,6 +925,7 @@ Status DBImpl::DeleteUnreferencedSstFiles(RecoveryContext* recovery_ctx) { uint64_t next_file_number = versions_->current_next_file_number(); uint64_t largest_file_number = next_file_number; + std::set files_to_delete; Status s; for (const auto& path : paths) { std::vector files; @@ -942,9 +943,8 @@ Status DBImpl::DeleteUnreferencedSstFiles(RecoveryContext* recovery_ctx) { const std::string normalized_fpath = path + fname; largest_file_number = std::max(largest_file_number, number); if (type == kTableFile && number >= next_file_number && - recovery_ctx->files_to_delete_.find(normalized_fpath) == - recovery_ctx->files_to_delete_.end()) { - recovery_ctx->files_to_delete_.insert(normalized_fpath); + files_to_delete.find(normalized_fpath) == files_to_delete.end()) { + files_to_delete.insert(normalized_fpath); } } } @@ -961,7 +961,21 @@ Status DBImpl::DeleteUnreferencedSstFiles(RecoveryContext* recovery_ctx) { assert(versions_->GetColumnFamilySet()); ColumnFamilyData* default_cfd = versions_->GetColumnFamilySet()->GetDefault(); assert(default_cfd); - recovery_ctx->UpdateVersionEdits(default_cfd, edit); + s = versions_->LogAndApply( + default_cfd, *default_cfd->GetLatestMutableCFOptions(), &edit, &mutex_, + directories_.GetDbDir(), /*new_descriptor_log*/ false); + if (!s.ok()) { + return s; + } + + mutex_.Unlock(); + for (const auto& fname : files_to_delete) { + s = env_->DeleteFile(fname); + if (!s.ok()) { + break; + } + } + mutex_.Lock(); return s; } diff --git a/db/db_impl/db_impl_open.cc b/db/db_impl/db_impl_open.cc index 37b567baf4..0377a7a5c3 100644 --- a/db/db_impl/db_impl_open.cc +++ b/db/db_impl/db_impl_open.cc @@ -399,7 +399,7 @@ IOStatus Directories::SetDirectories(FileSystem* fs, const std::string& dbname, Status DBImpl::Recover( const std::vector& column_families, bool read_only, bool error_if_wal_file_exists, bool error_if_data_exists_in_wals, - uint64_t* recovered_seq, RecoveryContext* recovery_ctx) { + uint64_t* recovered_seq) { mutex_.AssertHeld(); bool is_new_db = false; @@ -518,10 +518,9 @@ Status DBImpl::Recover( if (!s.ok()) { return s; } - - s = SetDBId(read_only, recovery_ctx); + s = SetDBId(read_only); if (s.ok() && !read_only) { - s = DeleteUnreferencedSstFiles(recovery_ctx); + s = DeleteUnreferencedSstFiles(); } if (immutable_db_options_.paranoid_checks && s.ok()) { @@ -536,6 +535,10 @@ Status DBImpl::Recover( } } } + // DB mutex is already held + if (s.ok() && immutable_db_options_.persist_stats_to_disk) { + s = InitPersistStatsColumnFamily(); + } std::vector files_in_wal_dir; if (s.ok()) { @@ -605,10 +608,7 @@ Status DBImpl::Recover( WalNumber max_wal_number = versions_->GetWalSet().GetWals().rbegin()->first; edit.DeleteWalsBefore(max_wal_number + 1); - assert(recovery_ctx != nullptr); - assert(versions_->GetColumnFamilySet() != nullptr); - recovery_ctx->UpdateVersionEdits( - versions_->GetColumnFamilySet()->GetDefault(), edit); + s = versions_->LogAndApplyToDefaultColumnFamily(&edit, &mutex_); } if (!s.ok()) { return s; @@ -644,8 +644,8 @@ Status DBImpl::Recover( std::sort(wals.begin(), wals.end()); bool corrupted_wal_found = false; - s = RecoverLogFiles(wals, &next_sequence, read_only, &corrupted_wal_found, - recovery_ctx); + s = RecoverLogFiles(wals, &next_sequence, read_only, + &corrupted_wal_found); if (corrupted_wal_found && recovered_seq != nullptr) { *recovered_seq = next_sequence; } @@ -805,30 +805,10 @@ Status DBImpl::InitPersistStatsColumnFamily() { return s; } -Status DBImpl::LogAndApplyForRecovery(const RecoveryContext& recovery_ctx) { - mutex_.AssertHeld(); - assert(versions_->descriptor_log_ == nullptr); - Status s = versions_->LogAndApply( - recovery_ctx.cfds_, recovery_ctx.mutable_cf_opts_, - recovery_ctx.edit_lists_, &mutex_, directories_.GetDbDir()); - if (s.ok() && !(recovery_ctx.files_to_delete_.empty())) { - mutex_.Unlock(); - for (const auto& fname : recovery_ctx.files_to_delete_) { - s = env_->DeleteFile(fname); - if (!s.ok()) { - break; - } - } - mutex_.Lock(); - } - return s; -} - // REQUIRES: wal_numbers are sorted in ascending order -Status DBImpl::RecoverLogFiles(std::vector& wal_numbers, +Status DBImpl::RecoverLogFiles(const std::vector& wal_numbers, SequenceNumber* next_sequence, bool read_only, - bool* corrupted_wal_found, - RecoveryContext* recovery_ctx) { + bool* corrupted_wal_found) { struct LogReporter : public log::Reader::Reporter { Env* env; Logger* info_log; @@ -853,7 +833,6 @@ Status DBImpl::RecoverLogFiles(std::vector& wal_numbers, edit.SetColumnFamily(cfd->GetID()); version_edits.insert({cfd->GetID(), edit}); } - int job_id = next_job_id_.fetch_add(1); { auto stream = event_logger_.Log(); @@ -1277,7 +1256,6 @@ Status DBImpl::RecoverLogFiles(std::vector& wal_numbers, edit->SetLogNumber(max_wal_number + 1); } } - if (status.ok()) { // we must mark the next log number as used, even though it's // not actually used. that is because VersionSet assumes @@ -1285,40 +1263,42 @@ Status DBImpl::RecoverLogFiles(std::vector& wal_numbers, // log number versions_->MarkFileNumberUsed(max_wal_number + 1); - if (corrupted_wal_found != nullptr && *corrupted_wal_found == true && - immutable_db_options_.wal_recovery_mode == - WALRecoveryMode::kPointInTimeRecovery) { - MoveCorruptedWalFiles(wal_numbers, corrupted_wal_number); - } - - assert(recovery_ctx != nullptr); + autovector cfds; + autovector cf_opts; + autovector> edit_lists; for (auto* cfd : *versions_->GetColumnFamilySet()) { + cfds.push_back(cfd); + cf_opts.push_back(cfd->GetLatestMutableCFOptions()); auto iter = version_edits.find(cfd->GetID()); assert(iter != version_edits.end()); - recovery_ctx->UpdateVersionEdits(cfd, iter->second); + edit_lists.push_back({&iter->second}); } + std::unique_ptr wal_deletion; if (flushed) { - VersionEdit wal_deletion; + wal_deletion = std::make_unique(); if (immutable_db_options_.track_and_verify_wals_in_manifest) { - wal_deletion.DeleteWalsBefore(max_wal_number + 1); + wal_deletion->DeleteWalsBefore(max_wal_number + 1); } if (!allow_2pc()) { // In non-2pc mode, flushing the memtables of the column families // means we can advance min_log_number_to_keep. - wal_deletion.SetMinLogNumberToKeep(max_wal_number + 1); + wal_deletion->SetMinLogNumberToKeep(max_wal_number + 1); } - assert(versions_->GetColumnFamilySet() != nullptr); - recovery_ctx->UpdateVersionEdits( - versions_->GetColumnFamilySet()->GetDefault(), wal_deletion); + edit_lists.back().push_back(wal_deletion.get()); } + + // write MANIFEST with update + status = versions_->LogAndApply(cfds, cf_opts, edit_lists, &mutex_, + directories_.GetDbDir(), + /*new_descriptor_log=*/true); } } if (status.ok()) { if (data_seen && !flushed) { status = RestoreAliveLogFiles(wal_numbers); - } else if (!wal_numbers.empty()) { + } else { // If there's no data in the WAL, or we flushed all the data, still // truncate the log file. If the process goes into a crash loop before // the file is deleted, the preallocated space will never get freed. @@ -1334,48 +1314,6 @@ Status DBImpl::RecoverLogFiles(std::vector& wal_numbers, return status; } -void DBImpl::MoveCorruptedWalFiles(std::vector& wal_numbers, - uint64_t corrupted_wal_number) { - size_t num_wals = wal_numbers.size(); - // Find the first corrupted wal. - auto iter = std::lower_bound(wal_numbers.begin(), wal_numbers.end(), - corrupted_wal_number); - auto corrupt_start_iter = iter; - - // Increment iter to move WAL files from first corrupted_wal_number + 1. - iter++; - - std::string archival_path = - ArchivalDirectory(immutable_db_options_.GetWalDir()); - Status create_status = env_->CreateDirIfMissing(archival_path); - - // create_status is only checked when it needs to move the corrupted WAL files - // to archive folder. - create_status.PermitUncheckedError(); - - // Truncate the last WAL to reclaim the pre allocated space before - // moving it. - GetLogSizeAndMaybeTruncate(wal_numbers.back(), /*truncate=*/true, nullptr) - .PermitUncheckedError(); - - // Move all the WAL files from corrupted_wal_number + 1 to last WAL - // (max_wal_number) to avoid column family inconsistency error to archival - // directory. If its unable to create archive dir, it will delete the - // corrupted WAL files. - // We are moving all but first corrupted WAL file to a different folder. - while (iter != wal_numbers.end()) { - LogFileNumberSize log(*iter); - std::string fname = LogFileName(immutable_db_options_.GetWalDir(), *iter); -#ifndef ROCKSDB_LITE - if (create_status.ok()) { - wal_manager_.ArchiveWALFile(fname, *iter); - } -#endif - iter++; - } - wal_numbers.erase(corrupt_start_iter + 1, wal_numbers.begin() + num_wals); -} - Status DBImpl::GetLogSizeAndMaybeTruncate(uint64_t wal_number, bool truncate, LogFileNumberSize* log_ptr) { LogFileNumberSize log(wal_number); @@ -1438,8 +1376,7 @@ Status DBImpl::RestoreAliveLogFiles(const std::vector& wal_numbers) { // log has such preallocated space, so we only truncate for the last log. LogFileNumberSize log; s = GetLogSizeAndMaybeTruncate( - wal_number, - /*truncate=*/(wal_number == wal_numbers.back()), &log); + wal_number, /*truncate=*/(wal_number == wal_numbers.back()), &log); if (!s.ok()) { break; } @@ -1800,13 +1737,9 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, impl->wal_in_db_path_ = impl->immutable_db_options_.IsWalDirSameAsDBPath(); impl->mutex_.Lock(); - - RecoveryContext recovery_ctx; - // Handles create_if_missing, error_if_exists uint64_t recovered_seq(kMaxSequenceNumber); - s = impl->Recover(column_families, false, false, false, &recovered_seq, - &recovery_ctx); + s = impl->Recover(column_families, false, false, false, &recovered_seq); if (s.ok()) { uint64_t new_log_number = impl->versions_->NewFileNumber(); log::Writer* new_log = nullptr; @@ -1823,6 +1756,40 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, } if (s.ok()) { + // set column family handles + for (auto cf : column_families) { + auto cfd = + impl->versions_->GetColumnFamilySet()->GetColumnFamily(cf.name); + if (cfd != nullptr) { + handles->push_back( + new ColumnFamilyHandleImpl(cfd, impl, &impl->mutex_)); + impl->NewThreadStatusCfInfo(cfd); + } else { + if (db_options.create_missing_column_families) { + // missing column family, create it + ColumnFamilyHandle* handle; + impl->mutex_.Unlock(); + s = impl->CreateColumnFamily(cf.options, cf.name, &handle); + impl->mutex_.Lock(); + if (s.ok()) { + handles->push_back(handle); + } else { + break; + } + } else { + s = Status::InvalidArgument("Column family not found", cf.name); + break; + } + } + } + } + if (s.ok()) { + SuperVersionContext sv_context(/* create_superversion */ true); + for (auto cfd : *impl->versions_->GetColumnFamilySet()) { + impl->InstallSuperVersionAndScheduleWork( + cfd, &sv_context, *cfd->GetLatestMutableCFOptions()); + } + sv_context.Clean(); if (impl->two_write_queues_) { impl->log_write_mutex_.Lock(); } @@ -1835,15 +1802,14 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, } if (s.ok()) { // In WritePrepared there could be gap in sequence numbers. This breaks - // the trick we use in kPointInTimeRecovery which assumes the first seq - // in the log right after the corrupted log is one larger than the last - // seq we read from the wals. To let this trick keep working, we add a - // dummy entry with the expected sequence to the first log right after - // recovery. In non-WritePrepared case also the new log after recovery - // could be empty, and thus missing the consecutive seq hint to - // distinguish middle-log corruption to - // corrupted-log-remained-after-recovery. This case also will be - // addressed by a dummy write. + // the trick we use in kPointInTimeRecovery which assumes the first seq in + // the log right after the corrupted log is one larger than the last seq + // we read from the wals. To let this trick keep working, we add a dummy + // entry with the expected sequence to the first log right after recovery. + // In non-WritePrepared case also the new log after recovery could be + // empty, and thus missing the consecutive seq hint to distinguish + // middle-log corruption to corrupted-log-remained-after-recovery. This + // case also will be addressed by a dummy write. if (recovered_seq != kMaxSequenceNumber) { WriteBatch empty_batch; WriteBatchInternal::SetSequence(&empty_batch, recovered_seq); @@ -1862,52 +1828,6 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, } } } - if (s.ok()) { - s = impl->LogAndApplyForRecovery(recovery_ctx); - } - - if (s.ok() && impl->immutable_db_options_.persist_stats_to_disk) { - impl->mutex_.AssertHeld(); - s = impl->InitPersistStatsColumnFamily(); - } - - if (s.ok()) { - // set column family handles - for (auto cf : column_families) { - auto cfd = - impl->versions_->GetColumnFamilySet()->GetColumnFamily(cf.name); - if (cfd != nullptr) { - handles->push_back( - new ColumnFamilyHandleImpl(cfd, impl, &impl->mutex_)); - impl->NewThreadStatusCfInfo(cfd); - } else { - if (db_options.create_missing_column_families) { - // missing column family, create it - ColumnFamilyHandle* handle; - impl->mutex_.Unlock(); - s = impl->CreateColumnFamily(cf.options, cf.name, &handle); - impl->mutex_.Lock(); - if (s.ok()) { - handles->push_back(handle); - } else { - break; - } - } else { - s = Status::InvalidArgument("Column family not found", cf.name); - break; - } - } - } - } - - if (s.ok()) { - SuperVersionContext sv_context(/* create_superversion */ true); - for (auto cfd : *impl->versions_->GetColumnFamilySet()) { - impl->InstallSuperVersionAndScheduleWork( - cfd, &sv_context, *cfd->GetLatestMutableCFOptions()); - } - sv_context.Clean(); - } if (s.ok() && impl->immutable_db_options_.persist_stats_to_disk) { // try to read format version s = impl->PersistentStatsProcessFormatVersion(); @@ -1933,8 +1853,7 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, if (cfd->ioptions()->merge_operator != nullptr && !cfd->mem()->IsMergeOperatorSupported()) { s = Status::InvalidArgument( - "The memtable of column family %s does not support merge " - "operator " + "The memtable of column family %s does not support merge operator " "its options.merge_operator is non-null", cfd->GetName().c_str()); } diff --git a/db/db_impl/db_impl_secondary.cc b/db/db_impl/db_impl_secondary.cc index d1a8709dac..1e3c9f2ac5 100644 --- a/db/db_impl/db_impl_secondary.cc +++ b/db/db_impl/db_impl_secondary.cc @@ -33,8 +33,7 @@ DBImplSecondary::~DBImplSecondary() {} Status DBImplSecondary::Recover( const std::vector& column_families, bool /*readonly*/, bool /*error_if_wal_file_exists*/, - bool /*error_if_data_exists_in_wals*/, uint64_t*, - RecoveryContext* /*recovery_ctx*/) { + bool /*error_if_data_exists_in_wals*/, uint64_t*) { mutex_.AssertHeld(); JobContext job_context(0); diff --git a/db/db_impl/db_impl_secondary.h b/db/db_impl/db_impl_secondary.h index fcc86cc879..d3a7940b5b 100644 --- a/db/db_impl/db_impl_secondary.h +++ b/db/db_impl/db_impl_secondary.h @@ -81,8 +81,8 @@ class DBImplSecondary : public DBImpl { // and log_readers_ to facilitate future operations. Status Recover(const std::vector& column_families, bool read_only, bool error_if_wal_file_exists, - bool error_if_data_exists_in_wals, uint64_t* = nullptr, - RecoveryContext* recovery_ctx = nullptr) override; + bool error_if_data_exists_in_wals, + uint64_t* = nullptr) override; // Implementations of the DB interface using DB::Get; diff --git a/java/src/test/java/org/rocksdb/RocksDBTest.java b/java/src/test/java/org/rocksdb/RocksDBTest.java index 422bed40c6..4193bcb445 100644 --- a/java/src/test/java/org/rocksdb/RocksDBTest.java +++ b/java/src/test/java/org/rocksdb/RocksDBTest.java @@ -1428,7 +1428,7 @@ public void getLiveFiles() throws RocksDBException { assertThat(livefiles.manifestFileSize).isEqualTo(59); assertThat(livefiles.files.size()).isEqualTo(3); assertThat(livefiles.files.get(0)).isEqualTo("/CURRENT"); - assertThat(livefiles.files.get(1)).isEqualTo("/MANIFEST-000005"); + assertThat(livefiles.files.get(1)).isEqualTo("/MANIFEST-000004"); assertThat(livefiles.files.get(2)).isEqualTo("/OPTIONS-000007"); } } diff --git a/monitoring/stats_history_test.cc b/monitoring/stats_history_test.cc index 1fe5503cbe..59e7be3d96 100644 --- a/monitoring/stats_history_test.cc +++ b/monitoring/stats_history_test.cc @@ -604,14 +604,10 @@ TEST_F(StatsHistoryTest, ForceManualFlushStatsCF) { dbfull()->TEST_WaitForStatsDumpRun( [&] { mock_clock_->MockSleepForSeconds(kPeriodSec); }); // writing to all three cf, flush default cf - // LogNumbers: default: 16, stats: 10, pikachu: 5 - // Since in recovery process, cfd_stats column is created after WAL is - // created, synced and MANIFEST is persisted, its log number which depends on - // logfile_number_ will be different. Since "pikachu" is never flushed, thus - // its log_number should be the smallest of the three. + // LogNumbers: default: 14, stats: 4, pikachu: 4 ASSERT_OK(Flush()); - ASSERT_LT(cfd_test->GetLogNumber(), cfd_stats->GetLogNumber()); - ASSERT_LT(cfd_test->GetLogNumber(), cfd_default->GetLogNumber()); + ASSERT_EQ(cfd_stats->GetLogNumber(), cfd_test->GetLogNumber()); + ASSERT_LT(cfd_stats->GetLogNumber(), cfd_default->GetLogNumber()); ASSERT_OK(Put("foo1", "v1")); ASSERT_OK(Put("bar1", "v1")); From f38f5570d54a9a5a42a7efb6322ac137242d9b04 Mon Sep 17 00:00:00 2001 From: akankshamahajan Date: Tue, 26 Apr 2022 15:28:06 -0700 Subject: [PATCH 008/226] Update version.h and HISTORY.md for 7.2.1 --- HISTORY.md | 3 +-- include/rocksdb/version.h | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index a988e32f98..c7948371e7 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,5 @@ # Rocksdb Change Log -## Unreleased - +## 7.2.1 (04/26/2022) ### Bug Fixes * Fixed a bug where RocksDB could corrupt DBs with `avoid_flush_during_recovery == true` by removing valid WALs, leading to `Status::Corruption` with message like "SST file is ahead of WALs" when attempting to reopen. * RocksDB calls FileSystem::Poll API during FilePrefetchBuffer destruction which impacts performance as it waits for read requets completion which is not needed anymore. Calling FileSystem::AbortIO to abort those requests instead fixes that performance issue. diff --git a/include/rocksdb/version.h b/include/rocksdb/version.h index a6954fb10f..58d03cc1b5 100644 --- a/include/rocksdb/version.h +++ b/include/rocksdb/version.h @@ -13,7 +13,7 @@ // minor or major version number planned for release. #define ROCKSDB_MAJOR 7 #define ROCKSDB_MINOR 2 -#define ROCKSDB_PATCH 0 +#define ROCKSDB_PATCH 1 // Do not use these. We made the mistake of declaring macros starting with // double underscore. Now we have to live with our choice. We'll deprecate these From 710592283fc946c24b5c0844274a84f73fdec5d1 Mon Sep 17 00:00:00 2001 From: Akanksha Mahajan <43301668+akankshamahajan15@users.noreply.github.com> Date: Wed, 27 Apr 2022 22:33:29 -0700 Subject: [PATCH 009/226] Fix bug in async_io path which reads incorrect length (#9916) Summary: In FilePrefetchBuffer, in case data is overlapping between two buffers and more data is required to read and copy that to third buffer, incorrect length was updated resulting in ``` Iterator diverged from control iterator which has value 00000000000310C3000000000000012B0000000000000274 total_order_seek: 1 auto_prefix_mode: 0 S 000000000002C37F000000000000012B000000000000001C NNNPPPPPNN; total_order_seek: 1 auto_prefix_mode: 0 S 000000000002F10B00000000000000BF78787878787878 NNNPNNNNPN; total_order_seek: 1 auto_prefix_mode: 0 S 00000000000310C3000000000000012B000000000000026B iterator is not valid Control CF default db_stress: db_stress_tool/db_stress_test_base.cc:1388: void rocksdb::StressTest::VerifyIterator(rocksdb::ThreadState*, rocksdb::ColumnFamilyHandle*, const rocksdb::ReadOptions&, rocksdb::Iterator*, rocksdb::Iterator*, rocksdb::StressTest::LastIterateOp, const rocksdb::Slice&, const string&, bool*): Assertion `false' failed. Aborted (core dumped) ``` Pull Request resolved: https://github.com/facebook/rocksdb/pull/9916 Test Plan: ``` - CircleCI jobs - Ran db_stress with OPTIONS file which caught the bug ./db_stress --acquire_snapshot_one_in=10000 --adaptive_readahead=0 --async_io=1 --avoid_flush_during_recovery=0 --avoid_unnecessary_blocking_io=1 --backup_max_size=104857600 --backup_one_in=0 --batch_protection_bytes_per_key=0 --block_size=16384 --bloom_bits=42.26248932628998 --bottommost_compression_type=disable --cache_index_and_filter_blocks=0 --cache_size=8388608 --checkpoint_one_in=0 --checksum_type=kxxHash --clear_column_family_one_in=0 --compact_files_one_in=1000000 --compact_range_one_in=1000000 --compaction_ttl=0 --compression_max_dict_buffer_bytes=1073741823 --compression_max_dict_bytes=16384 --compression_parallel_threads=1 --compression_type=zstd --compression_zstd_max_train_bytes=65536 --continuous_verification_interval=0 --db=/dev/shm/rocksdb/ --db_write_buffer_size=134217728 --delpercent=5 --delrangepercent=0 --destroy_db_initially=0 --detect_filter_construct_corruption=0 --disable_wal=0 --enable_blob_files=0 --enable_compaction_filter=0 --enable_pipelined_write=0 --fail_if_options_file_error=0 --file_checksum_impl=none --flush_one_in=1000000 --format_version=4 --get_current_wal_file_one_in=0 --get_live_files_one_in=1000000 --get_property_one_in=1000000 --get_sorted_wal_files_one_in=0 --index_block_restart_interval=12 --index_type=2 --ingest_external_file_one_in=0 --iterpercent=10 --key_len_percent_dist=1,30,69 --level_compaction_dynamic_level_bytes=True --long_running_snapshots=0 --mark_for_compaction_one_file_in=0 --max_background_compactions=20 --max_bytes_for_level_base=10485760 --max_key=25000000 --max_key_len=3 --max_manifest_file_size=1073741824 --max_write_batch_group_size_bytes=1048576 --max_write_buffer_number=3 --max_write_buffer_size_to_maintain=8388608 --memtable_prefix_bloom_size_ratio=0.001 --memtable_whole_key_filtering=1 --memtablerep=skip_list --mmap_read=0 --mock_direct_io=False --nooverwritepercent=1 --open_files=100 --open_metadata_write_fault_one_in=0 --open_read_fault_one_in=0 --open_write_fault_one_in=16 --ops_per_thread=100000000 --optimize_filters_for_memory=0 --paranoid_file_checks=1 --partition_filters=0 --partition_pinning=1 --pause_background_one_in=1000000 --periodic_compaction_seconds=0 --prefix_size=-1 --prefixpercent=0 --prepopulate_block_cache=0 --progress_reports=0 --read_fault_one_in=0 --read_only=0 --readpercent=50 --recycle_log_file_num=1 --reopen=0 --reserve_table_reader_memory=0 --ribbon_starting_level=999 --secondary_cache_fault_one_in=0 --secondary_catch_up_one_in=0 --set_options_one_in=10000 --snapshot_hold_ops=100000 --sst_file_manager_bytes_per_sec=104857600 --sst_file_manager_bytes_per_truncate=0 --subcompactions=2 --sync=0 --sync_fault_injection=False --target_file_size_base=2097152 --target_file_size_multiplier=2 --test_batches_snapshots=0 --test_cf_consistency=0 --top_level_index_pinning=3 --unpartitioned_pinning=3 --use_blob_db=0 --use_block_based_filter=0 --use_clock_cache=0 --use_direct_io_for_flush_and_compaction=1 --use_direct_reads=0 --use_full_merge_v1=0 --use_merge=0 --use_multiget=0 --use_txn=0 --user_timestamp_size=0 --value_size_mult=32 --verify_checksum=1 --verify_checksum_one_in=1000000 --verify_db_one_in=100000 --wal_compression=zstd --write_buffer_size=4194304 --write_dbid_to_manifest=0 --writepercent=35 --options_file=/home/akankshamahajan/OPTIONS.orig -column_families=1 db_bench with async_io enabled to make sure db_bench completes successfully without any failure. - ./db_bench -use_existing_db=true -db=/tmp/prefix_scan_prefetch_main -benchmarks="seekrandom" -key_size=32 -value_size=512 -num=5000000 -use_direct_reads=true -seek_nexts=327680 -duration=120 -ops_between_duration_checks=1 -async_io=1 ``` crash_test in progress Reviewed By: anand1976 Differential Revision: D35985789 Pulled By: akankshamahajan15 fbshipit-source-id: 5abe185f34caa99ca587d4bdc8954bd0802b1bf9 --- HISTORY.md | 4 ++++ env/fs_posix.cc | 8 +++++++- file/file_prefetch_buffer.cc | 5 +++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index c7948371e7..c28190fcd3 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,4 +1,8 @@ # Rocksdb Change Log +## Unreleased +### Bug Fixes +* Fixed a bug in async_io path where incorrect length of data is read by FilePrefetchBuffer if data is consumed from two populated buffers and request for more data is sent. + ## 7.2.1 (04/26/2022) ### Bug Fixes * Fixed a bug where RocksDB could corrupt DBs with `avoid_flush_during_recovery == true` by removing valid WALs, leading to `Status::Corruption` with message like "SST file is ahead of WALs" when attempting to reopen. diff --git a/env/fs_posix.cc b/env/fs_posix.cc index 629ebe5b8e..057058d240 100644 --- a/env/fs_posix.cc +++ b/env/fs_posix.cc @@ -1122,7 +1122,13 @@ class PosixFileSystem : public FileSystem { // in posix for IOUring requests. Currently it calls Poll to wait for requests // to complete the request. virtual IOStatus AbortIO(std::vector& io_handles) override { - return Poll(io_handles, io_handles.size()); + IOStatus s = Poll(io_handles, io_handles.size()); + // If Poll is not supported then it didn't submit any request and it should + // return OK. + if (s.IsNotSupported()) { + return IOStatus::OK(); + } + return s; } #if defined(ROCKSDB_IOURING_PRESENT) diff --git a/file/file_prefetch_buffer.cc b/file/file_prefetch_buffer.cc index ec92758fe4..222166876d 100644 --- a/file/file_prefetch_buffer.cc +++ b/file/file_prefetch_buffer.cc @@ -282,7 +282,7 @@ Status FilePrefetchBuffer::PrefetchAsync(const IOOptions& opts, bufs_[curr_].offset_ + bufs_[curr_].buffer_.CurrentSize()) { offset += length; length = 0; - prefetch_size -= length; + prefetch_size = readahead_size; } // Data is overlapping i.e. some of the data is in curr_ buffer and remaining // in second buffer. @@ -311,7 +311,8 @@ Status FilePrefetchBuffer::PrefetchAsync(const IOOptions& opts, // sync prefetching and copy the remaining data to third buffer in the end. // swap the buffers. curr_ = curr_ ^ 1; - prefetch_size -= length; + // Update prefetch_size as length has been updated in CopyDataToBuffer. + prefetch_size = length + readahead_size; } // Update second again if swap happened. From f2f26b1559b77f56f3074c5cb7d93112b2dd3f9f Mon Sep 17 00:00:00 2001 From: akankshamahajan Date: Thu, 28 Apr 2022 08:05:36 -0700 Subject: [PATCH 010/226] Update HISTORY.md and version.h to 7.2.2 --- HISTORY.md | 2 +- include/rocksdb/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index c28190fcd3..da59bdc8e7 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,5 @@ # Rocksdb Change Log -## Unreleased +## 7.2.2 (04/28/2022) ### Bug Fixes * Fixed a bug in async_io path where incorrect length of data is read by FilePrefetchBuffer if data is consumed from two populated buffers and request for more data is sent. diff --git a/include/rocksdb/version.h b/include/rocksdb/version.h index 58d03cc1b5..86f8f3f721 100644 --- a/include/rocksdb/version.h +++ b/include/rocksdb/version.h @@ -13,7 +13,7 @@ // minor or major version number planned for release. #define ROCKSDB_MAJOR 7 #define ROCKSDB_MINOR 2 -#define ROCKSDB_PATCH 1 +#define ROCKSDB_PATCH 2 // Do not use these. We made the mistake of declaring macros starting with // double underscore. Now we have to live with our choice. We'll deprecate these From cbccf66e147131044755724d99e163cd7f6db988 Mon Sep 17 00:00:00 2001 From: Arthur Berezin Date: Tue, 24 May 2022 11:23:09 +0300 Subject: [PATCH 011/226] Init --- init | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 init diff --git a/init b/init new file mode 100644 index 0000000000..e69de29bb2 From 2b875b961ab238a49d23dd2280a9507ed5e1d9ad Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Tue, 15 Jun 2021 09:36:45 +0300 Subject: [PATCH 012/226] SPDB-126: status: don't include private headers from public headers --- include/rocksdb/status.h | 10 ++++------ util/status.cc | 11 +++++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/include/rocksdb/status.h b/include/rocksdb/status.h index b512b2da90..e7cc454d2b 100644 --- a/include/rocksdb/status.h +++ b/include/rocksdb/status.h @@ -24,10 +24,6 @@ #include #include -#ifdef ROCKSDB_ASSERT_STATUS_CHECKED -#include "port/stack_trace.h" -#endif - #include "rocksdb/slice.h" namespace ROCKSDB_NAMESPACE { @@ -46,8 +42,7 @@ class Status { ~Status() { #ifdef ROCKSDB_ASSERT_STATUS_CHECKED if (!checked_) { - fprintf(stderr, "Failed to check Status %p\n", this); - port::PrintStack(); + PrintFailure(); abort(); } #endif // ROCKSDB_ASSERT_STATUS_CHECKED @@ -457,6 +452,9 @@ class Status { // Returns the string "OK" for success. std::string ToString() const; + private: + void PrintFailure(); + protected: Code code_; SubCode subcode_; diff --git a/util/status.cc b/util/status.cc index 2c9aa50152..b52f7dc247 100644 --- a/util/status.cc +++ b/util/status.cc @@ -15,6 +15,10 @@ #include #include "port/port.h" +#ifdef ROCKSDB_ASSERT_STATUS_CHECKED +#include "port/stack_trace.h" +#endif + namespace ROCKSDB_NAMESPACE { std::unique_ptr Status::CopyState(const char* s) { @@ -44,6 +48,13 @@ static const char* msgs[static_cast(Status::kMaxSubCode)] = { "IO fenced off", // kIOFenced }; +void Status::PrintFailure() { +#ifdef ROCKSDB_ASSERT_STATUS_CHECKED + fprintf(stderr, "Failed to check Status %p\n", this); + port::PrintStack(); +#endif +} + Status::Status(Code _code, SubCode _subcode, const Slice& msg, const Slice& msg2, Severity sev) : code_(_code), From 648ca75398448a5c82c0ba1c518f75067e5ec9b4 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Sun, 20 Jun 2021 15:05:00 +0300 Subject: [PATCH 013/226] build: fix clang diagnostics --- db/table_cache.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/table_cache.cc b/db/table_cache.cc index e548fc6c3f..2528b59e4b 100644 --- a/db/table_cache.cc +++ b/db/table_cache.cc @@ -202,7 +202,7 @@ Status TableCache::FindTable( handle); if (s.ok()) { // Release ownership of table reader. - table_reader.release(); + (void)table_reader.release(); } } return s; From 0fbf6c31e006f4ce1dfa2bb458cb07a264fadebe Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 19 May 2021 10:39:01 +0300 Subject: [PATCH 014/226] tests: add initialisation in gtest in order to resolve a GCC diagnostic --- third-party/gtest-1.8.1/fused-src/gtest/gtest-all.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third-party/gtest-1.8.1/fused-src/gtest/gtest-all.cc b/third-party/gtest-1.8.1/fused-src/gtest/gtest-all.cc index 9f2b3d5653..b19c9f2a81 100644 --- a/third-party/gtest-1.8.1/fused-src/gtest/gtest-all.cc +++ b/third-party/gtest-1.8.1/fused-src/gtest/gtest-all.cc @@ -8676,7 +8676,7 @@ static void StackLowerThanAddress(const void* ptr, bool* result) { // Make sure AddressSanitizer does not tamper with the stack here. GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ static bool StackGrowsDown() { - int dummy; + int dummy = 0; bool result; StackLowerThanAddress(&dummy, &result); return result; From 6d6c2a77ff685c2ec6c49b3edbb5989ebe5a6488 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Thu, 20 May 2021 09:46:02 +0300 Subject: [PATCH 015/226] tests: resolve GCC diagnostics --- options/options_test.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/options/options_test.cc b/options/options_test.cc index 58070b3ff2..7319cdfe1b 100644 --- a/options/options_test.cc +++ b/options/options_test.cc @@ -3439,7 +3439,7 @@ TEST_F(OptionsParserTest, ParseVersion) { const std::vector invalid_versions = { "a.b.c", "3.2.2b", "3.-12", "3. 1", // only digits and dots are allowed "1.2.3.4", - "1.2.3" // can only contains at most one dot. + "1.2.3", // can only contains at most one dot. "0", // options_file_version must be at least one "3..2", ".", ".1.2", // must have at least one digit before each dot @@ -3603,7 +3603,7 @@ TEST_F(OptionsParserTest, DumpAndParse) { DBOptions base_db_opt; std::vector base_cf_opts; std::vector cf_names = {"default", "cf1", "cf2", "cf3", - "c:f:4:4:4" + "c:f:4:4:4", "p\\i\\k\\a\\chu\\\\\\", "###rocksdb#1-testcf#2###"}; const int num_cf = static_cast(cf_names.size()); From e63a5d46c3bd6e2ea07b39b03cbbb7f91e810398 Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Tue, 17 May 2022 07:53:12 +0300 Subject: [PATCH 016/226] build: compilation fixes --- CMakeLists.txt | 4 ++-- db_stress_tool/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d400462e8..a7884de588 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1381,7 +1381,7 @@ if(WITH_TESTS) add_library(${TESTUTILLIB} STATIC ${TESTUTIL_SOURCE}) target_link_libraries(${TESTUTILLIB} ${ROCKSDB_LIB}) if(MSVC) - set_target_properties(${TESTUTILLIB} PROPERTIES COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/testutillib${ARTIFACT_SUFFIX}.pdb") + set_target_properties(${TESTUTILLIB} PROPERTIES COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${TESTUTILLIB}.pdb") endif() set_target_properties(${TESTUTILLIB} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1 @@ -1398,7 +1398,7 @@ if(WITH_TESTS) EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1 OUTPUT_NAME ${exename}${ARTIFACT_SUFFIX} ) - target_link_libraries(${exename}${ARTIFACT_SUFFIX} testutillib${ARTIFACT_SUFFIX} testharness gtest ${THIRDPARTY_LIBS} ${ROCKSDB_LIB}) + target_link_libraries(${exename}${ARTIFACT_SUFFIX} ${TESTUTILLIB} testharness gtest ${THIRDPARTY_LIBS} ${ROCKSDB_LIB}) if(NOT "${exename}" MATCHES "db_sanity_test") gtest_discover_tests(${exename} DISCOVERY_TIMEOUT 120) add_dependencies(check ${exename}${ARTIFACT_SUFFIX}) diff --git a/db_stress_tool/CMakeLists.txt b/db_stress_tool/CMakeLists.txt index 96d70dd0e1..604bca596d 100644 --- a/db_stress_tool/CMakeLists.txt +++ b/db_stress_tool/CMakeLists.txt @@ -13,5 +13,5 @@ add_executable(db_stress${ARTIFACT_SUFFIX} expected_state.cc multi_ops_txns_stress.cc no_batched_ops_stress.cc) -target_link_libraries(db_stress${ARTIFACT_SUFFIX} ${ROCKSDB_LIB} ${THIRDPARTY_LIBS}) +target_link_libraries(db_stress${ARTIFACT_SUFFIX} ${ROCKSDB_LIB} ${TESTUTILLIB} ${THIRDPARTY_LIBS}) list(APPEND tool_deps db_stress) From 9d0e6ff4d2b6c7d35509af5fb5065f2324d1a935 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Tue, 6 Jul 2021 13:04:10 +0300 Subject: [PATCH 017/226] SPDB-165: build: fix building on CentOS 7 with old versions of gflags and git --- CMakeLists.txt | 6 +++++- Makefile | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a7884de588..f0165ee017 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,6 +123,9 @@ else() find_package(gflags REQUIRED) set(GFLAGS_LIB gflags::gflags) endif() + if(DEFINED gflags_VERSION AND gflags_VERSION MATCHES "^2\.1\.[0-9]+") + add_definitions(-DGFLAGS_NAMESPACE=gflags) + endif() include_directories(${GFLAGS_INCLUDE_DIR}) list(APPEND THIRDPARTY_LIBS ${GFLAGS_LIB}) add_definitions(-DGFLAGS=1) @@ -1025,7 +1028,8 @@ find_package(Git) if(GIT_FOUND AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") execute_process(WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_SHA COMMAND "${GIT_EXECUTABLE}" rev-parse HEAD ) execute_process(WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" RESULT_VARIABLE GIT_MOD COMMAND "${GIT_EXECUTABLE}" diff-index HEAD --quiet) - execute_process(WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_DATE COMMAND "${GIT_EXECUTABLE}" log -1 --date=format:"%Y-%m-%d %T" --format="%ad") + execute_process(WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_DATE COMMAND "${GIT_EXECUTABLE}" log -1 --date=iso --format="%ad") + string(REGEX MATCH "[-0-9]+ [:0-9]+" GIT_DATE ${GIT_DATE}) execute_process(WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_TAG RESULT_VARIABLE rv COMMAND "${GIT_EXECUTABLE}" symbolic-ref -q --short HEAD OUTPUT_STRIP_TRAILING_WHITESPACE) if (rv AND NOT rv EQUAL 0) execute_process(WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_TAG COMMAND "${GIT_EXECUTABLE}" describe --tags --exact-match OUTPUT_STRIP_TRAILING_WHITESPACE) diff --git a/Makefile b/Makefile index 41b8a98d6b..1c3ebfa789 100644 --- a/Makefile +++ b/Makefile @@ -740,7 +740,7 @@ else git_sha := $(shell git rev-parse HEAD 2>/dev/null) git_tag := $(shell git symbolic-ref -q --short HEAD 2> /dev/null || git describe --tags --exact-match 2>/dev/null) git_mod := $(shell git diff-index HEAD --quiet 2>/dev/null; echo $$?) - git_date := $(shell git log -1 --date=format:"%Y-%m-%d %T" --format="%ad" 2>/dev/null) + git_date := $(shell git log -1 --date=iso --format="%ad" 2>/dev/null | awk '{print $1 " " $2}' 2>/dev/null) endif gen_build_version = sed -e s/@GIT_SHA@/$(git_sha)/ -e s:@GIT_TAG@:"$(git_tag)": -e s/@GIT_MOD@/"$(git_mod)"/ -e s/@BUILD_DATE@/"$(build_date)"/ -e s/@GIT_DATE@/"$(git_date)"/ -e s/@ROCKSDB_PLUGIN_BUILTINS@/'$(ROCKSDB_PLUGIN_BUILTINS)'/ -e s/@ROCKSDB_PLUGIN_EXTERNS@/"$(ROCKSDB_PLUGIN_EXTERNS)"/ util/build_version.cc.in From 9717ae3da3d55a1eecc4ef88787de96e8d7eee11 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 9 Mar 2022 16:19:05 +0200 Subject: [PATCH 018/226] SPDB-556: build: fix clang 12 compilation errors RocksDB currently fails to build with clang 12 due to newly added diagnostics. This is problematic for fuzz testing in CI and for developers building locally with clang, and thankfully these are easily fixable. --- .../native_comparator_wrapper_test.cc | 8 +-- options/customizable_test.cc | 57 ++++++++++++------- options/db_options.h | 2 + 3 files changed, 43 insertions(+), 24 deletions(-) diff --git a/java/rocksjni/native_comparator_wrapper_test.cc b/java/rocksjni/native_comparator_wrapper_test.cc index ac33ca22d9..8cb4b76040 100644 --- a/java/rocksjni/native_comparator_wrapper_test.cc +++ b/java/rocksjni/native_comparator_wrapper_test.cc @@ -15,20 +15,20 @@ namespace ROCKSDB_NAMESPACE { class NativeComparatorWrapperTestStringComparator : public Comparator { - const char* Name() const { + const char* Name() const override { return "NativeComparatorWrapperTestStringComparator"; } - int Compare(const Slice& a, const Slice& b) const { + int Compare(const Slice& a, const Slice& b) const override { return a.ToString().compare(b.ToString()); } void FindShortestSeparator(std::string* /*start*/, - const Slice& /*limit*/) const { + const Slice& /*limit*/) const override { return; } - void FindShortSuccessor(std::string* /*key*/) const { return; } + void FindShortSuccessor(std::string* /*key*/) const override { return; } }; } // namespace ROCKSDB_NAMESPACE diff --git a/options/customizable_test.cc b/options/customizable_test.cc index 2447f60041..c5a422a4f2 100644 --- a/options/customizable_test.cc +++ b/options/customizable_test.cc @@ -9,9 +9,11 @@ #include "rocksdb/customizable.h" +#include #include #include #include +#include #include #include "db/db_test_util.h" @@ -208,32 +210,47 @@ struct SimpleOptions { TestCustomizable* cp = nullptr; }; -static std::unordered_map simple_option_info = { -#ifndef ROCKSDB_LITE - {"bool", - {offsetof(struct SimpleOptions, b), OptionType::kBoolean, - OptionVerificationType::kNormal, OptionTypeFlags::kNone}}, - {"unique", - OptionTypeInfo::AsCustomUniquePtr( - offsetof(struct SimpleOptions, cu), OptionVerificationType::kNormal, - OptionTypeFlags::kAllowNull)}, - {"shared", - OptionTypeInfo::AsCustomSharedPtr( - offsetof(struct SimpleOptions, cs), OptionVerificationType::kNormal, - OptionTypeFlags::kAllowNull)}, - {"pointer", - OptionTypeInfo::AsCustomRawPtr( - offsetof(struct SimpleOptions, cp), OptionVerificationType::kNormal, - OptionTypeFlags::kAllowNull)}, -#endif // ROCKSDB_LITE -}; +static std::unordered_map simple_option_info; + +template +static int dynamic_unsafe_offsetof(const T& instance, const F& field) { + const char* instance_addr = + reinterpret_cast(std::addressof(instance)); + const char* field_addr = reinterpret_cast(std::addressof(field)); + assert(field_addr >= instance_addr); + const size_t offset = field_addr - instance_addr; + assert(offset < sizeof(instance)); + return offset; +} class SimpleConfigurable : public Configurable { private: SimpleOptions simple_; public: - SimpleConfigurable() { RegisterOptions(&simple_, &simple_option_info); } + SimpleConfigurable() { +#ifndef ROCKSDB_LITE + SimpleOptions so; + simple_option_info.emplace( + "bool", OptionTypeInfo{ + dynamic_unsafe_offsetof(so, so.b), OptionType::kBoolean, + OptionVerificationType::kNormal, OptionTypeFlags::kNone}); + simple_option_info.emplace( + "unique", OptionTypeInfo::AsCustomUniquePtr( + dynamic_unsafe_offsetof(so, so.cu), + OptionVerificationType::kNormal, OptionTypeFlags::kNone)); + simple_option_info.emplace( + "shared", OptionTypeInfo::AsCustomSharedPtr( + dynamic_unsafe_offsetof(so, so.cs), + OptionVerificationType::kNormal, OptionTypeFlags::kNone)); + simple_option_info.emplace( + "pointer", + OptionTypeInfo::AsCustomRawPtr( + dynamic_unsafe_offsetof(so, so.cp), OptionVerificationType::kNormal, + OptionTypeFlags::kNone)); +#endif // ROCKSDB_LITE + RegisterOptions(&simple_, &simple_option_info); + } explicit SimpleConfigurable( const std::unordered_map* map) { diff --git a/options/db_options.h b/options/db_options.h index a00399e677..4c2589a735 100644 --- a/options/db_options.h +++ b/options/db_options.h @@ -117,6 +117,8 @@ struct MutableDBOptions { MutableDBOptions(); explicit MutableDBOptions(const DBOptions& options); + MutableDBOptions& operator=(const MutableDBOptions&) = default; + void Dump(Logger* log) const; int max_background_jobs; From 185244e3c0384eef3168dfa7bd5315ebe15f2d48 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Tue, 8 Mar 2022 20:02:46 +0200 Subject: [PATCH 019/226] SPDB-553: build: support sccache in the CMake config Currently the CMake config only looks for ccache, so developers using sccache need to manually set the launch commands. Add a check for sccache to spare them the trouble. While at it, clean up the CMake config and remove ccache as the link launch wrapper since it will just forward to the underlying linker anyway, and also regenerate the buck TARGETS file (we might want to drop support for it at some point, but for now let's keep it consistent). --- CMakeLists.txt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f0165ee017..807ad162c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,11 +56,17 @@ if(NOT CMAKE_BUILD_TYPE) "Default BUILD_TYPE is ${default_build_type}" FORCE) endif() -find_program(CCACHE_FOUND ccache) -if(CCACHE_FOUND) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) -endif(CCACHE_FOUND) +find_program(SCCACHE_FOUND sccache) +if(SCCACHE_FOUND) + set(CMAKE_C_COMPILER_LAUNCHER sccache CACHE STRING "C_LANUCHER is sccache" FORCE) + set(CMAKE_CXX_COMPILER_LAUNCHER sccache CACHE STRING "CXX_LANUCHER is sccache" FORCE) +else() + find_program(CCACHE_FOUND ccache) + if(CCACHE_FOUND) + set(CMAKE_C_COMPILER_LAUNCHER ccache CACHE STRING "C_LANUCHER is ccache" FORCE) + set(CMAKE_CXX_COMPILER_LAUNCHER ccache CACHE STRING "CXX_LANUCHER is ccache" FORCE) + endif(CCACHE_FOUND) +endif() option(WITH_JEMALLOC "build with JeMalloc" OFF) option(WITH_LIBURING "build with liburing" ON) From 83319f7c68cc8297bdab3e4c8561913e916e6be1 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Thu, 8 Jul 2021 23:01:41 +0300 Subject: [PATCH 020/226] SPDB-181: tests: add missing `override` specifier in gtest to fix a clang diagnostic --- .../gtest-1.8.1/fused-src/gtest/gtest.h | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/third-party/gtest-1.8.1/fused-src/gtest/gtest.h b/third-party/gtest-1.8.1/fused-src/gtest/gtest.h index 2d82d8e4d0..56f1a43152 100644 --- a/third-party/gtest-1.8.1/fused-src/gtest/gtest.h +++ b/third-party/gtest-1.8.1/fused-src/gtest/gtest.h @@ -3008,7 +3008,7 @@ class ThreadWithParam : public ThreadWithParamBase { } } - virtual void Run() { + virtual void Run() override { if (thread_can_start_ != NULL) thread_can_start_->WaitForNotification(); func_(param_); @@ -3192,7 +3192,7 @@ class ThreadWithParam : public ThreadWithParamBase { param_(param) { } virtual ~RunnableImpl() {} - virtual void Run() { + virtual void Run() override { func_(param_); } @@ -9202,7 +9202,7 @@ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ public:\ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ private:\ - virtual void TestBody();\ + virtual void TestBody() override;\ static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\ GTEST_DISALLOW_COPY_AND_ASSIGN_(\ GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ @@ -11639,7 +11639,7 @@ class RangeGenerator : public ParamGeneratorInterface { virtual const ParamGeneratorInterface* BaseGenerator() const { return base_; } - virtual void Advance() { + virtual void Advance() override { value_ = static_cast(value_ + step_); index_++; } @@ -11726,7 +11726,7 @@ class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface { virtual const ParamGeneratorInterface* BaseGenerator() const { return base_; } - virtual void Advance() { + virtual void Advance() override { ++iterator_; value_.reset(); } @@ -11952,7 +11952,7 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { // This method should not be called more then once on any single // instance of a ParameterizedTestCaseInfoBase derived class. // UnitTest has a guard to prevent from calling this method more then once. - virtual void RegisterTests() { + virtual void RegisterTests() override { for (typename TestInfoContainer::iterator test_it = tests_.begin(); test_it != tests_.end(); ++test_it) { linked_ptr test_info = *test_it; @@ -15740,7 +15740,7 @@ class CartesianProductGenerator2 } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() override { assert(!AtEnd()); ++current2_; if (current2_ == end2_) { @@ -15859,7 +15859,7 @@ class CartesianProductGenerator3 } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() override { assert(!AtEnd()); ++current3_; if (current3_ == end3_) { @@ -15996,7 +15996,7 @@ class CartesianProductGenerator4 } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() override { assert(!AtEnd()); ++current4_; if (current4_ == end4_) { @@ -16150,7 +16150,7 @@ class CartesianProductGenerator5 } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() override { assert(!AtEnd()); ++current5_; if (current5_ == end5_) { @@ -16323,7 +16323,7 @@ class CartesianProductGenerator6 } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() override { assert(!AtEnd()); ++current6_; if (current6_ == end6_) { @@ -16513,7 +16513,7 @@ class CartesianProductGenerator7 } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() override { assert(!AtEnd()); ++current7_; if (current7_ == end7_) { @@ -16722,7 +16722,7 @@ class CartesianProductGenerator8 } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() override { assert(!AtEnd()); ++current8_; if (current8_ == end8_) { @@ -16947,7 +16947,7 @@ class CartesianProductGenerator9 } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() override { assert(!AtEnd()); ++current9_; if (current9_ == end9_) { @@ -17190,7 +17190,7 @@ class CartesianProductGenerator10 } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() override { assert(!AtEnd()); ++current10_; if (current10_ == end10_) { @@ -18873,7 +18873,7 @@ internal::CartesianProductHolder10parameterized_test_registry(). \ @@ -19157,7 +19157,7 @@ class GTEST_API_ HasNewFatalFailureHelper public: HasNewFatalFailureHelper(); virtual ~HasNewFatalFailureHelper(); - virtual void ReportTestPartResult(const TestPartResult& result); + virtual void ReportTestPartResult(const TestPartResult& result) override; bool has_new_fatal_failure() const { return has_new_fatal_failure_; } private: bool has_new_fatal_failure_; @@ -19377,7 +19377,7 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); private: \ typedef CaseName TestFixture; \ typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ + virtual void TestBody() override; \ }; \ static bool gtest_##CaseName##_##TestName##_registered_ \ GTEST_ATTRIBUTE_UNUSED_ = \ @@ -19439,7 +19439,7 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); private: \ typedef CaseName TestFixture; \ typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ + virtual void TestBody() override; \ }; \ static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ @@ -20867,21 +20867,21 @@ class TestEventListener { // above. class EmptyTestEventListener : public TestEventListener { public: - virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) override {} virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} - virtual void OnTestStart(const TestInfo& /*test_info*/) {} - virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} - virtual void OnTestEnd(const TestInfo& /*test_info*/) {} - virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} - virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} + int /*iteration*/) override {} + virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) override {} + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {} + virtual void OnTestCaseStart(const TestCase& /*test_case*/) override {} + virtual void OnTestStart(const TestInfo& /*test_info*/) override {} + virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) override {} + virtual void OnTestEnd(const TestInfo& /*test_info*/) override {} + virtual void OnTestCaseEnd(const TestCase& /*test_case*/) override {} + virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) override {} + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {} virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} + int /*iteration*/) override {} + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {} }; // TestEventListeners lets users add listeners to track events in Google Test. From 7dc005eac723eaab9231325856d04c54fec56abe Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 14 Apr 2021 17:01:03 +0300 Subject: [PATCH 021/226] SPDB-87: build: fix clang compilation errors This commit originally imported fuzzing tools from rocksdb. However, after the rebase on 6.21 (from 6.11.4) only the compilation fixes are left. Original commit message: Building them is a bit of a pain, but the OSS-Fuzz build scripts are a good reference on how to do that: https://github.com/google/oss-fuzz/tree/master/projects/rocksdb This commit also fixes some clang compilation errors. --- fuzz/Makefile | 8 ++++---- fuzz/db_fuzzer.cc | 38 +++++++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/fuzz/Makefile b/fuzz/Makefile index b830405049..588b676f09 100644 --- a/fuzz/Makefile +++ b/fuzz/Makefile @@ -7,11 +7,11 @@ ROOT_DIR = $(abspath $(shell pwd)/../) include $(ROOT_DIR)/make_config.mk -PROTOBUF_CFLAGS = `pkg-config --cflags protobuf` -PROTOBUF_LDFLAGS = `pkg-config --libs protobuf` +PROTOBUF_CFLAGS = $(shell pkg-config --cflags protobuf) +PROTOBUF_LDFLAGS = $(shell pkg-config --libs protobuf) -PROTOBUF_MUTATOR_CFLAGS = `pkg-config --cflags libprotobuf-mutator` -PROTOBUF_MUTATOR_LDFLAGS = `pkg-config --libs libprotobuf-mutator` +PROTOBUF_MUTATOR_CFLAGS = $(shell pkg-config --cflags libprotobuf-mutator) +PROTOBUF_MUTATOR_LDFLAGS = $(shell pkg-config --libs libprotobuf-mutator) ROCKSDB_INCLUDE_DIR = $(ROOT_DIR)/include ROCKSDB_LIB_DIR = $(ROOT_DIR) diff --git a/fuzz/db_fuzzer.cc b/fuzz/db_fuzzer.cc index 383a95096d..c66e1b80a6 100644 --- a/fuzz/db_fuzzer.cc +++ b/fuzz/db_fuzzer.cc @@ -1,5 +1,7 @@ #include +#include + #include "rocksdb/db.h" enum OperationType { @@ -42,25 +44,30 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { switch (op) { case kPut: { - std::string key = fuzzed_data.ConsumeRandomLengthString(); - std::string val = fuzzed_data.ConsumeRandomLengthString(); + std::string key = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); + std::string val = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); db->Put(ROCKSDB_NAMESPACE::WriteOptions(), key, val); break; } case kGet: { - std::string key = fuzzed_data.ConsumeRandomLengthString(); + std::string key = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); std::string value; db->Get(ROCKSDB_NAMESPACE::ReadOptions(), key, &value); break; } case kDelete: { - std::string key = fuzzed_data.ConsumeRandomLengthString(); + std::string key = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); db->Delete(ROCKSDB_NAMESPACE::WriteOptions(), key); break; } case kGetProperty: { std::string prop; - std::string property_name = fuzzed_data.ConsumeRandomLengthString(); + std::string property_name = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); db->GetProperty(property_name, &prop); break; } @@ -114,9 +121,12 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { column_families, &handles, &db); if (s.ok()) { - std::string key1 = fuzzed_data.ConsumeRandomLengthString(); - std::string val1 = fuzzed_data.ConsumeRandomLengthString(); - std::string key2 = fuzzed_data.ConsumeRandomLengthString(); + std::string key1 = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); + std::string val1 = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); + std::string key2 = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); s = db->Put(ROCKSDB_NAMESPACE::WriteOptions(), handles[1], key1, val1); std::string value; @@ -137,8 +147,10 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { break; } case kCompactRange: { - std::string slice_start = fuzzed_data.ConsumeRandomLengthString(); - std::string slice_end = fuzzed_data.ConsumeRandomLengthString(); + std::string slice_start = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); + std::string slice_end = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); ROCKSDB_NAMESPACE::Slice begin(slice_start); ROCKSDB_NAMESPACE::Slice end(slice_end); @@ -147,7 +159,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { break; } case kSeekForPrev: { - std::string key = fuzzed_data.ConsumeRandomLengthString(); + std::string key = fuzzed_data.ConsumeRandomLengthString( + fuzzed_data.remaining_bytes()); auto iter = db->NewIterator(ROCKSDB_NAMESPACE::ReadOptions()); iter->SeekForPrev(key); delete iter; @@ -155,6 +168,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { } case OP_COUNT: break; + default: { + assert(false); + } } } From 336cab631c5715451e7002a773abaaabe9c7f5bd Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Wed, 22 Jun 2022 19:41:24 +0300 Subject: [PATCH 022/226] initial CI --- .github/workflows/aws-test.yml | 65 ++++++ .github/workflows/ci_pipeline.yml | 83 ++++++++ .github/workflows/full-tests.yml | 45 +++++ .github/workflows/fuzz.yml | 171 ++++++++++++++++ .github/workflows/new_release_line.yml | 80 ++++++++ .github/workflows/sanity_check.yml | 4 +- .github/workflows/test_fuzz.yml | 261 +++++++++++++++++++++++++ 7 files changed, 707 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/aws-test.yml create mode 100644 .github/workflows/ci_pipeline.yml create mode 100644 .github/workflows/full-tests.yml create mode 100644 .github/workflows/fuzz.yml create mode 100644 .github/workflows/new_release_line.yml create mode 100644 .github/workflows/test_fuzz.yml diff --git a/.github/workflows/aws-test.yml b/.github/workflows/aws-test.yml new file mode 100644 index 0000000000..790a280442 --- /dev/null +++ b/.github/workflows/aws-test.yml @@ -0,0 +1,65 @@ +name: aws-test + +on: + workflow_dispatch: + +jobs: + fuzzer_sum: + runs-on: ubuntu-latest + container: + image: ubuntu:18.04 + + steps: + - uses: actions/checkout@v3 + + - name: pre + run: | + apt update && apt install -y sudo unzip curl + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + + - name: Configure AWS credentials from Test account + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-2 + + - name: download db_fuzzer.log from s3 + run: | + mkdir -p $GITHUB_WORKSPACE/out + aws s3 cp s3://spdb-github-ci/db_fuzzer.log $GITHUB_WORKSPACE/out/db_fuzzer.log + ls -alFh $GITHUB_WORKSPACE/out + + - name: download db_map_fuzzer.log from s3 + run: | + mkdir -p $GITHUB_WORKSPACE/out + aws s3 cp s3://spdb-github-ci/db_map_fuzzer.log $GITHUB_WORKSPACE/out/db_map_fuzzer.log + ls -alFh $GITHUB_WORKSPACE/out + +# - name: Download a Build Artifact +# uses: actions/download-artifact@v3.0.0 +# with: +# path: | +# ${{ github.workspace }}/out/db_fuzzer.log + +# - name: Download a Build Artifact +# uses: actions/download-artifact@v3.0.0 +# with: +# path: | +# ${{ github.workspace }}/out/db_map_fuzzer.log + + - name: fuzzersum + run: | + echo "~~~~ db_map_fuzzer LOGS ~~~~~" + tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skoot" + echo "~~~~ db_fuzzer LOGS ~~~~~" + tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skid" + + - name: clear s3 bucket + run: | + mkdir -p $GITHUB_WORKSPACE/down + aws s3 rm s3://spdb-github-ci/ --recursive --include "*" + + diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml new file mode 100644 index 0000000000..6c26d387ce --- /dev/null +++ b/.github/workflows/ci_pipeline.yml @@ -0,0 +1,83 @@ +name: CI + +on: [pull_request, workflow_dispatch] +# on: +# workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + include: + - name: verify build + command: cmake .. -GNinja + - name: optimized build + command: cmake .. -DCMAKE_BUILD_TYPE=Release -GNinja + - mame: clang build + command: CC=clang CXX=clang++ cmake .. -GNinja + container: + image: alpine:3.14 + + steps: + - name: Pre-build + run: | + rm -rf /usr/share/dotnet || echo "" + df -h + apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ + openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar + python3 -m pip install lint-diffs flake8 + - name: Checkout + uses: actions/checkout@v2 + + + - name: Prepare ccache timestamp + id: ccache_cache_timestamp + shell: cmake -P {0} + run: | + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) + message("::set-output name=timestamp::${current_date}") + + + - name: ccache cache files + uses: actions/cache@v2 + with: + path: ~/.ccache + key: ${{runner.os}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} + restore-keys: | + ${{runner.os}}-ccache- + + + - name: ${{ matrix.name }} + run: | + df -h + ls /etc/apk/world + git config --global --add safe.directory $GITHUB_WORKSPACE + if [ -d "$GITHUB_WORKSPACE/build" ]; then + echo >&2 "error: the build directory should not exist" && false NIK + fi + if [ -d "~/.ccache" ]; then + echo "Already exists" + else + mkdir -p ~/.ccache + ls ~ | grep cache || echo "" + touch ~/.ccache/ccache.txt + echo "aaa" > ~/.ccache/ccache.txt + ls ~/.ccache + cat ~/.ccache/ccache.txt + fi + mkdir -p "$GITHUB_WORKSPACE/build" + cd "$GITHUB_WORKSPACE/build" + export "CCACHE_BASEDIR=$HOME" + export "CCACHE_DIR=$HOME/.ccache" + export "CCACHE_COMPILERCHECK=content" + ${{ matrix.command }} -DWITH_GFLAGS=1 \ + -DWITH_ZLIB=1 -DWITH_SNAPPY=1 -DWITH_BZ2=1 -DWITH_LZ4=1 -DWITH_ZSTD=1 \ + -DWITH_JNI=1 -DJAVA_HOME=/usr/lib/jvm/default-jvm \ + -DWITH_BENCHMARK_TOOLS=1 -DWITH_CORE_TOOLS=1 -DWITH_TOOLS=1 \ + -DWITH_TESTS=1 -DWITH_ALL_TESTS=1 -DWITH_EXAMPLES=1 + ninja + + sanity: + needs: [build] + uses: speedb-io/speedb/.github/workflows/sanity_check.yml@main diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml new file mode 100644 index 0000000000..07a3d5ffbc --- /dev/null +++ b/.github/workflows/full-tests.yml @@ -0,0 +1,45 @@ +name: Tests + +on: + workflow_dispatch: + +env: + GTEST_THROW_ON_FAILURE: 0 + GTEST_OUTPUT: \"xml:/tmp/test-results/\" + SKIP_FORMAT_BUCK_CHECKS: 1 + GTEST_COLOR: 1 + CTEST_OUTPUT_ON_FAILURE: 1 + CTEST_TEST_TIMEOUT: 300 + ZLIB_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zlib" + BZIP2_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/bzip2" + SNAPPY_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/snappy" + LZ4_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/lz4" + ZSTD_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zstd" + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + include: + - name: unit-test + command: make clean && make -j2 check && echo $? || echo $? + - mame: black-box + command: make clean && CRASH_TEST_EXT_ARGS=" --duration=500" make -j2 blackbox_asan_crash_test && echo $? || echo $? + - mame: white-box + command: make clean && CRASH_TEST_EXT_ARGS="--duration=500" make -j2 whitebox_asan_crash_test && echo $? || echo $? + + steps: + + - name: Checkout + uses: actions/checkout@v3 + + - name: Pre + run: | + df -H + sudo apt-get update -y && sudo apt-get install -y clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" + sudo mv /usr/bin/parallel /usr/bin/gnu_parallel + sudo rm -rf /etc/parallel/config || echo "" + sudo apt-get install moreutils + - name: ${{ matrix.name }} + run: ${{ matrix.command }} diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml new file mode 100644 index 0000000000..453a335b26 --- /dev/null +++ b/.github/workflows/fuzz.yml @@ -0,0 +1,171 @@ +name: fuzz-test + +on: + workflow_dispatch: + workflow_call: + +jobs: + fuzz-build: + runs-on: ubuntu-latest + container: + image: ubuntu:18.04 + + steps: + - uses: actions/checkout@v3 + + - name: Pre-build + run: apt update && apt install -y sudo python3 git clang-tools cmake make automake libtool gettext pkg-config build-essential clang-10 zlib1g-dev libbz2-dev ninja-build liblzma-dev autoconf libsnappy-dev libzstd-dev liblz4-dev binutils m4 g++-10 + + - name: fuzbuild + run: | + #repo="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" + #echo repo $repo + #git remote add origin $repo + echo "test" + pwd + echo 'git clone https://github.com/google/libprotobuf-mutator.git \n + cd libprotobuf-mutator \n + git checkout ffd86a32874e5c08a143019aad1aaf0907294c9f \n + cd .. \n + export CC=clang && export CXX=clang++ && mkdir LPM && cd LPM \n + ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so \n + ln -s /usr/bin/clang-10 /usr/bin/clang \n + ln -s /usr/bin/clang++-10 /usr/bin/clang++ \n + cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release \n + ninja \n + ninja install \n + export PKG_CONFIG_PATH=$PWD:$PWD/external.protobuf/lib/pkgconfig/ \n + export PATH=$PWD/external.protobuf/bin:$PATH \n + cd $GITHUB_WORKSPACE \n + git fetch \n + git checkout master \n + COMPILE_WITH_ASAN=1 make -j2 static_lib \n + cd $GITHUB_WORKSPACE/fuzz \n + make db_map_fuzzer \n + make db_fuzzer \n + ls -alFh $GITHUB_WORKSPACE/fuzz/ \n + echo ASAN_OPTIONS=detect_leaks=0 ./db_fuzzer \n' > prepfuz.sh + cat prepfuz.sh + chmod +x prepfuz.sh + bash -xv prepfuz.sh + + - name: Upload db_map_fuzzer Artifact + uses: actions/upload-artifact@v3.1.0 + with: + name: db_map_fuzzer + path: | + ${{ github.workspace }}/fuzz/db_map_fuzzer + retention-days: 1 + + - name: Upload db_fuzzer Artifact + uses: actions/upload-artifact@v3.1.0 + with: + name: db_fuzzer + path: | + ${{ github.workspace }}/fuzz/db_fuzzer + retention-days: 1 + + + db_fuzzer: + runs-on: ubuntu-latest + container: + image: ubuntu:18.04 + continue-on-error: true + needs: [fuzz-build] + + steps: + - uses: actions/checkout@v3 + + - name: Download a Build Artifact + uses: actions/download-artifact@v3.0.0 + with: + name: db_fuzzer + path: ${{ github.workspace }}/fuzz/db_fuzzer + + - name: Pre-build + run: | + apt update && apt install -y libtool sudo gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 + mkdir -p $GITHUB_WORKSPACE/out + + - name: dbfuzzer + run: | + ls -l $GITHUB_WORKSPACE/out + ls -alFh $GITHUB_WORKSPACE/fuzz + sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" + sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_fuzzer/db_fuzzer" + chmod 777 $GITHUB_WORKSPACE/fuzz/db_fuzzer/db_fuzzer + whoami + ls -alFh $GITHUB_WORKSPACE/fuzz/db_fuzzer + ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_fuzzer/db_fuzzer 2>&1 | sudo tee $GITHUB_WORKSPACE/out/db_fuzzer.log + ls -l $GITHUB_WORKSPACE/out/ + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v3.1.0 + with: + path: ${{ github.workspace }}/out/db_fuzzer.log + retention-days: 1 + + db_map_fuzzer: + runs-on: ubuntu-latest + container: + image: ubuntu:18.04 + continue-on-error: true + needs: [fuzz-build] + + steps: + - uses: actions/checkout@v3 + + - name: Download a Build Artifact + uses: actions/download-artifact@v3.0.0 + with: + name: db_map_fuzzer + path: ${{ github.workspace }}/fuzz/db_map_fuzzer + + - name: Pre-build + run: | + apt update && apt install -y sudo libtool gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 + mkdir -p $GITHUB_WORKSPACE/out/ + + - name: dbmapfuzzer + run: | + ls -l $GITHUB_WORKSPACE/out/ + sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" + sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_map_fuzzer/db_map_fuzzer" + chmod 777 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer/db_map_fuzzer + whoami + ls -alFh $GITHUB_WORKSPACE/fuzz/db_map_fuzzer + ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer/db_map_fuzzer 2>&1 | tee $GITHUB_WORKSPACE/out/db_map_fuzzer.log + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v3.1.0 + with: + path: ${{ github.workspace }}/out/db_map_fuzzer.log + retention-days: 1 + + fuzzer_sum: + runs-on: ubuntu-18.04 + container: + image: alpine:3.14 + needs: [db_map_fuzzer, db_fuzzer] + + steps: + - uses: actions/checkout@v3 + + - name: Download a Build Artifact + uses: actions/download-artifact@v3.0.0 + with: + path: | + ${{ github.workspace }}/out/db_fuzzer.log + + - name: Download a Build Artifact + uses: actions/download-artifact@v3.0.0 + with: + path: | + ${{ github.workspace }}/out/db_map_fuzzer.log + + - name: fuzzersum + run: | + echo "~~~~ db_map_fuzzer LOGS ~~~~~" + tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log/artifact/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skoot" + echo "~~~~ db_fuzzer LOGS ~~~~~" + tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log/artifact/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skid" diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml new file mode 100644 index 0000000000..c7bf046a74 --- /dev/null +++ b/.github/workflows/new_release_line.yml @@ -0,0 +1,80 @@ +name: New Release Line + +on: + workflow_dispatch: + inputs: + new_branch_major: + description: 'New branch Major' + new_branch_minor: + description: 'New branch Minor' + + +jobs: + build: + runs-on: ubuntu-latest + container: + image: alpine:3.14 + + steps: + - name: pre-run + run: apk update && apk add git + - uses: actions/checkout@v3 + + - name: Calculate tag + run: | + git config --global --add safe.directory /__w/rocksdb/rocksdb + git config user.name "GitHub Actions Bot" + git config user.email "<>" + git pull + major=$(cat $GITHUB_WORKSPACE/include/rocksdb/version.h | grep '#define ROCKSDB_MAJOR' | grep -o '[^,]\+$' | tr ' ' '\n' | tail -n1) + minor=$(cat $GITHUB_WORKSPACE/include/rocksdb/version.h | grep '#define ROCKSDB_MINOR' | grep -o '[^,]\+$' | tr ' ' '\n' | tail -n1) + patch=$(cat $GITHUB_WORKSPACE/include/rocksdb/version.h | grep '#define ROCKSDB_PATCH' | grep -o '[^,]\+$' | tr ' ' '\n' | tail -n1) + new_minor=$(echo $minor + 1 | bc) + echo $minor + echo "major=$major" >> $GITHUB_ENV + echo "minor=$minor" >> $GITHUB_ENV + echo "new_minor=$new_minor" >> $GITHUB_ENV + current_version="$major.$minor.99" + echo $current_version + + - name: Create release branch + run: | + if [ -z "${{ inputs.new_branch_major }}" ]; then + echo "empty" + new_branch="release/${{ env.major }}.${{ env.minor }}" + echo $new_branch + git checkout -b $new_branch + git push -u origin $new_branch + else + echo "minor=$new_minor" >> $GITHUB_ENV + echo "not empty" + new_branch="release/${{ inputs.new_branch_major }}.${{ inputs.new_branch_minor }}" + echo $new_branch + git checkout -b $new_branch + git push -u origin $new_branch + fi + - name: Update version.h + run: | + if [ -z "${{ inputs.new_branch_major }}" ]; then + git checkout main + git tag "v${{ env.major }}.${{ env.minor }}" + git push --tags + sed -i -e 's/#define ROCKSDB_MAJOR.*/#define ROCKSDB_MAJOR ${{ env.major }}/' include/rocksdb/version.h + sed -i -e 's/#define ROCKSDB_MINOR.*/#define ROCKSDB_MINOR ${{ env.new_minor }}/' include/rocksdb/version.h + sed -i -e 's/#define ROCKSDB_PATCH.*/#define ROCKSDB_PATCH 99/' include/rocksdb/version.h + cat include/rocksdb/version.h + git commit -am "updated version.h version" + git push + else + git checkout main + new_minor=$(echo ${{ inputs.new_branch_minor }} + 1 | bc) + echo $new_minor + git tag "v${{ inputs.new_branch_major }}.${{ inputs.new_branch_minor }}" + git push --tags + sed -i -e 's/#define ROCKSDB_MAJOR.*/#define ROCKSDB_MAJOR ${{ inputs.new_branch_major }}/' include/rocksdb/version.h + sed -i -e "s/#define ROCKSDB_MINOR.*/#define ROCKSDB_MINOR $new_minor/g" include/rocksdb/version.h + sed -i -e 's/#define ROCKSDB_PATCH.*/#define ROCKSDB_PATCH 99/' include/rocksdb/version.h + cat include/rocksdb/version.h + git commit -am "updated version.h version" + git push + fi diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index f16b79d4d6..278ddaf95d 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -1,5 +1,5 @@ name: Check buck targets and code format -on: [push, pull_request] +on: [push, pull_request, workflow_call] jobs: check: name: Check TARGETS file and code format @@ -12,7 +12,7 @@ jobs: - name: Fetch from upstream run: | - git remote add upstream https://github.com/facebook/rocksdb.git && git fetch upstream + git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream - name: Where am I run: | diff --git a/.github/workflows/test_fuzz.yml b/.github/workflows/test_fuzz.yml new file mode 100644 index 0000000000..e40e632090 --- /dev/null +++ b/.github/workflows/test_fuzz.yml @@ -0,0 +1,261 @@ +name: aws-fuzz-test + +on: + workflow_dispatch: + workflow_call: + +jobs: + fuzz-build: + runs-on: ubuntu-latest + container: + image: ubuntu:18.04 + + steps: + - uses: actions/checkout@v3 + + - name: Pre-build + run: | + apt update && apt install -y sudo python3 git clang-tools cmake make automake ucommon-utils libtool gettext pkg-config build-essential clang-10 zlib1g-dev libbz2-dev ninja-build liblzma-dev autoconf libsnappy-dev libzstd-dev liblz4-dev binutils m4 g++-10 unzip + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + + - name: Configure AWS credentials from Test account + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-2 + + - name: fuzbuild + run: | + md5sum --version + echo 'git clone https://github.com/google/libprotobuf-mutator.git \n + cd libprotobuf-mutator \n + git checkout ffd86a32874e5c08a143019aad1aaf0907294c9f \n + cd .. \n + export CC=clang && export CXX=clang++ && mkdir LPM && cd LPM \n + ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so \n + ln -s /usr/bin/clang-10 /usr/bin/clang \n + ln -s /usr/bin/clang++-10 /usr/bin/clang++ \n + cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release \n + ninja \n + ninja install \n + export PKG_CONFIG_PATH=$PWD:$PWD/external.protobuf/lib/pkgconfig/ \n + export PATH=$PWD/external.protobuf/bin:$PATH \n + cd $GITHUB_WORKSPACE \n + COMPILE_WITH_ASAN=1 make -j2 static_lib \n + cd $GITHUB_WORKSPACE/fuzz \n + make db_map_fuzzer \n + make db_fuzzer \n + ls -alFh $GITHUB_WORKSPACE/fuzz/ \n + echo ASAN_OPTIONS=detect_leaks=0 ./db_fuzzer \n' > prepfuz.sh + chmod +x prepfuz.sh + bash -xv prepfuz.sh + md5sum $GITHUB_WORKSPACE/fuzz/db_fuzzer + md5sum $GITHUB_WORKSPACE/fuzz/db_map_fuzzer + + + - name: Copy db_map_fuzzer to S3 + run: | + aws s3 cp $GITHUB_WORKSPACE/fuzz/db_map_fuzzer s3://spdb-github-ci/ + + - name: Copy db_fuzzer to S3 + run: | + aws s3 cp $GITHUB_WORKSPACE/fuzz/db_fuzzer s3://spdb-github-ci/ + +# - name: Upload db_map_fuzzer Artifact +# uses: actions/upload-artifact@v3.1.0 +# with: +# name: db_map_fuzzer +# path: | +# ${{ github.workspace }}/fuzz/db_map_fuzzer +# retention-days: 1 + +# - name: Upload db_fuzzer Artifact +# uses: actions/upload-artifact@v3.1.0 +# with: +# name: db_fuzzer +# path: | +# ${{ github.workspace }}/fuzz/db_fuzzer +# retention-days: 1 + + + db_fuzzer: + runs-on: ubuntu-latest + container: + image: ubuntu:18.04 + continue-on-error: true + needs: [fuzz-build] + + steps: + - uses: actions/checkout@v3 + +# - name: Download a Build Artifact +# uses: actions/download-artifact@v3.0.0 +# with: +# name: db_fuzzer +# path: ${{ github.workspace }}/fuzz/db_fuzzer + + - name: Pre-build + run: | + apt update && apt install -y libtool sudo gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 unzip ucommon-utils + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + mkdir -p $GITHUB_WORKSPACE/out + + - name: Configure AWS credentials from Test account + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-2 + + - name: download db_fuzzer from s3 + run: | + if [ ! -d $GITHUB_WORKSPACE/fuzz/ ]; then + mkdir -p $GITHUB_WORKSPACE/fuzz/ + fi + aws s3 cp s3://spdb-github-ci/db_fuzzer $GITHUB_WORKSPACE/fuzz/db_fuzzer + ls -alFh $GITHUB_WORKSPACE/fuzz + md5sum --version + md5sum $GITHUB_WORKSPACE/fuzz/db_fuzzer + + - name: dbfuzzer + run: | + ls -l $GITHUB_WORKSPACE/out + ls -alFh $GITHUB_WORKSPACE/fuzz + sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" + sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_fuzzer" + chmod 777 $GITHUB_WORKSPACE/fuzz/db_fuzzer + whoami + ls -alFh $GITHUB_WORKSPACE/fuzz + ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_fuzzer 2>&1 | sudo tee $GITHUB_WORKSPACE/out/db_fuzzer.log + ls -l $GITHUB_WORKSPACE/out/ + + - name: Copy logs to s3 + run: | + aws s3 cp $GITHUB_WORKSPACE/out/db_fuzzer.log s3://spdb-github-ci/ + +# - name: Upload a Build Artifact +# uses: actions/upload-artifact@v3.1.0 +# with: +# path: ${{ github.workspace }}/out/db_fuzzer.log +# retention-days: 1 + + db_map_fuzzer: + runs-on: ubuntu-latest + container: + image: ubuntu:18.04 + continue-on-error: true + needs: [fuzz-build] + + steps: + - uses: actions/checkout@v3 + +# - name: Download a Build Artifact +# uses: actions/download-artifact@v3.0.0 +# with: +# name: db_map_fuzzer +# path: ${{ github.workspace }}/fuzz/db_map_fuzzer + + - name: Pre-build + run: | + apt update && apt install -y sudo libtool gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 unzip + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + mkdir -p $GITHUB_WORKSPACE/out/ + + - name: Configure AWS credentials from Test account + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-2 + + - name: download db_map_fuzzer from s3 + run: | + if [ ! -d $GITHUB_WORKSPACE/fuzz/ ]; then + mkdir -p $GITHUB_WORKSPACE/fuzz/ + fi + aws s3 cp s3://spdb-github-ci/db_map_fuzzer $GITHUB_WORKSPACE/fuzz/db_map_fuzzer + ls -alFh $GITHUB_WORKSPACE/fuzz + md5sum --version + md5sum $GITHUB_WORKSPACE/fuzz/db_map_fuzzer + + + - name: dbmapfuzzer + run: | + ls -l $GITHUB_WORKSPACE/out/ + sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" + sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_map_fuzzer" + chmod 777 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer + whoami + ls -alFh $GITHUB_WORKSPACE/fuzz + ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer 2>&1 | tee $GITHUB_WORKSPACE/out/db_map_fuzzer.log + + - name: Copy logs to s3 + run: | + aws s3 cp $GITHUB_WORKSPACE/out/db_map_fuzzer.log s3://spdb-github-ci/ + + fuzzer_sum: + runs-on: ubuntu-latest + container: + image: ubuntu:18.04 + needs: [db_map_fuzzer, db_fuzzer] + + steps: + - uses: actions/checkout@v3 + + - name: pre + run: | + apt update && apt install -y sudo unzip curl + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + + - name: Configure AWS credentials from Test account + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-2 + + - name: download db_fuzzer.log from s3 + run: | + mkdir -p $GITHUB_WORKSPACE/out + aws s3 cp s3://spdb-github-ci/db_fuzzer.log $GITHUB_WORKSPACE/out/db_fuzzer.log || echo "db_fuzzer.log not found" + ls -alFh $GITHUB_WORKSPACE/out + + - name: download db_map_fuzzer.log from s3 + run: | + mkdir -p $GITHUB_WORKSPACE/out + aws s3 cp s3://spdb-github-ci/db_map_fuzzer.log $GITHUB_WORKSPACE/out/db_map_fuzzer.log || echo "db_map_fuzzer.log not found" + ls -alFh $GITHUB_WORKSPACE/out + +# - name: Download a Build Artifact +# uses: actions/download-artifact@v3.0.0 +# with: +# path: | +# ${{ github.workspace }}/out/db_fuzzer.log + +# - name: Download a Build Artifact +# uses: actions/download-artifact@v3.0.0 +# with: +# path: | +# ${{ github.workspace }}/out/db_map_fuzzer.log + + - name: fuzzersum + run: | + echo "~~~~ db_map_fuzzer LOGS ~~~~~" + tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skoot" + echo "~~~~ db_fuzzer LOGS ~~~~~" + tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skid" + + - name: clear s3 bucket + run: | + mkdir -p $GITHUB_WORKSPACE/down + aws s3 rm s3://spdb-github-ci/ --recursive --include "*" + From 1525822be83ecabd0fd91b46a99299071488d6ee Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 23 Jun 2022 08:48:14 +0300 Subject: [PATCH 023/226] added PORTABLE=1 flag to make for fuzz test --- .github/workflows/test_fuzz.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_fuzz.yml b/.github/workflows/test_fuzz.yml index e40e632090..6befafe9ec 100644 --- a/.github/workflows/test_fuzz.yml +++ b/.github/workflows/test_fuzz.yml @@ -44,7 +44,7 @@ jobs: export PKG_CONFIG_PATH=$PWD:$PWD/external.protobuf/lib/pkgconfig/ \n export PATH=$PWD/external.protobuf/bin:$PATH \n cd $GITHUB_WORKSPACE \n - COMPILE_WITH_ASAN=1 make -j2 static_lib \n + COMPILE_WITH_ASAN=1 PORTABLE=1 make -j2 static_lib \n cd $GITHUB_WORKSPACE/fuzz \n make db_map_fuzzer \n make db_fuzzer \n From 1837ea199a29aeac02998b1fee80a50869d2bd27 Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Thu, 23 Jun 2022 14:54:41 +0300 Subject: [PATCH 024/226] #15: fault_injection_fs: avoid division by zero in DropRandomUnsyncedData() When there's no data in the buffer, there's nothing to drop anyway, and providing 0 to the rand->Uniform() function results in a division by zero error (SIGFPE), so just check and do nothing in that case. --- utilities/fault_injection_fs.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/utilities/fault_injection_fs.cc b/utilities/fault_injection_fs.cc index a07476bcdb..9a6acc766e 100644 --- a/utilities/fault_injection_fs.cc +++ b/utilities/fault_injection_fs.cc @@ -81,9 +81,11 @@ IOStatus FSFileState::DropUnsyncedData() { } IOStatus FSFileState::DropRandomUnsyncedData(Random* rand) { - int range = static_cast(buffer_.size()); - size_t truncated_size = static_cast(rand->Uniform(range)); - buffer_.resize(truncated_size); + const int range = static_cast(buffer_.size()); + if (range > 0) { + size_t truncated_size = static_cast(rand->Uniform(range)); + buffer_.resize(truncated_size); + } return IOStatus::OK(); } From f419c8a84854feac451d412e50e192aa8b1b498a Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 26 Jun 2022 10:22:18 +0300 Subject: [PATCH 025/226] changed fuzz-test according to new workplan --- .github/workflows/test_fuzz.yml | 186 ++++---------------------------- 1 file changed, 18 insertions(+), 168 deletions(-) diff --git a/.github/workflows/test_fuzz.yml b/.github/workflows/test_fuzz.yml index 6befafe9ec..b52c8c00b9 100644 --- a/.github/workflows/test_fuzz.yml +++ b/.github/workflows/test_fuzz.yml @@ -1,14 +1,18 @@ -name: aws-fuzz-test +name: new_fuzz on: workflow_dispatch: - workflow_call: jobs: - fuzz-build: + fuzz: runs-on: ubuntu-latest container: image: ubuntu:18.04 + strategy: + matrix: + include: + - name: db_fuzzer + - name: db_map_fuzzer steps: - uses: actions/checkout@v3 @@ -27,9 +31,8 @@ jobs: aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: eu-west-2 - - name: fuzbuild + - name: ${{ matrix.name }} run: | - md5sum --version echo 'git clone https://github.com/google/libprotobuf-mutator.git \n cd libprotobuf-mutator \n git checkout ffd86a32874e5c08a143019aad1aaf0907294c9f \n @@ -46,165 +49,24 @@ jobs: cd $GITHUB_WORKSPACE \n COMPILE_WITH_ASAN=1 PORTABLE=1 make -j2 static_lib \n cd $GITHUB_WORKSPACE/fuzz \n - make db_map_fuzzer \n - make db_fuzzer \n + make ${{ matrix.name }} \n ls -alFh $GITHUB_WORKSPACE/fuzz/ \n echo ASAN_OPTIONS=detect_leaks=0 ./db_fuzzer \n' > prepfuz.sh chmod +x prepfuz.sh bash -xv prepfuz.sh - md5sum $GITHUB_WORKSPACE/fuzz/db_fuzzer - md5sum $GITHUB_WORKSPACE/fuzz/db_map_fuzzer + mkdir -p $GITHUB_WORKSPACE/out/ + ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/${{ matrix.name }} 2>&1 | sudo tee $GITHUB_WORKSPACE/out/${{ matrix.name }}.log + tail -20 $GITHUB_WORKSPACE/out/${{ matrix.name }} | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "${{ matrix.name }} failed!" - - - name: Copy db_map_fuzzer to S3 + - name: Copy ${{ matrix.name }} logs to S3 run: | - aws s3 cp $GITHUB_WORKSPACE/fuzz/db_map_fuzzer s3://spdb-github-ci/ - - - name: Copy db_fuzzer to S3 - run: | - aws s3 cp $GITHUB_WORKSPACE/fuzz/db_fuzzer s3://spdb-github-ci/ - -# - name: Upload db_map_fuzzer Artifact -# uses: actions/upload-artifact@v3.1.0 -# with: -# name: db_map_fuzzer -# path: | -# ${{ github.workspace }}/fuzz/db_map_fuzzer -# retention-days: 1 - -# - name: Upload db_fuzzer Artifact -# uses: actions/upload-artifact@v3.1.0 -# with: -# name: db_fuzzer -# path: | -# ${{ github.workspace }}/fuzz/db_fuzzer -# retention-days: 1 - - - db_fuzzer: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - continue-on-error: true - needs: [fuzz-build] - - steps: - - uses: actions/checkout@v3 - -# - name: Download a Build Artifact -# uses: actions/download-artifact@v3.0.0 -# with: -# name: db_fuzzer -# path: ${{ github.workspace }}/fuzz/db_fuzzer - - - name: Pre-build - run: | - apt update && apt install -y libtool sudo gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 unzip ucommon-utils - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" - unzip awscliv2.zip - sudo ./aws/install - mkdir -p $GITHUB_WORKSPACE/out - - - name: Configure AWS credentials from Test account - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: eu-west-2 - - - name: download db_fuzzer from s3 - run: | - if [ ! -d $GITHUB_WORKSPACE/fuzz/ ]; then - mkdir -p $GITHUB_WORKSPACE/fuzz/ - fi - aws s3 cp s3://spdb-github-ci/db_fuzzer $GITHUB_WORKSPACE/fuzz/db_fuzzer - ls -alFh $GITHUB_WORKSPACE/fuzz - md5sum --version - md5sum $GITHUB_WORKSPACE/fuzz/db_fuzzer - - - name: dbfuzzer - run: | - ls -l $GITHUB_WORKSPACE/out - ls -alFh $GITHUB_WORKSPACE/fuzz - sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" - sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_fuzzer" - chmod 777 $GITHUB_WORKSPACE/fuzz/db_fuzzer - whoami - ls -alFh $GITHUB_WORKSPACE/fuzz - ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_fuzzer 2>&1 | sudo tee $GITHUB_WORKSPACE/out/db_fuzzer.log - ls -l $GITHUB_WORKSPACE/out/ - - - name: Copy logs to s3 - run: | - aws s3 cp $GITHUB_WORKSPACE/out/db_fuzzer.log s3://spdb-github-ci/ - -# - name: Upload a Build Artifact -# uses: actions/upload-artifact@v3.1.0 -# with: -# path: ${{ github.workspace }}/out/db_fuzzer.log -# retention-days: 1 - - db_map_fuzzer: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - continue-on-error: true - needs: [fuzz-build] + aws s3 cp $GITHUB_WORKSPACE/out/${{ matrix.name }}.log s3://spdb-github-ci/ - steps: - - uses: actions/checkout@v3 - -# - name: Download a Build Artifact -# uses: actions/download-artifact@v3.0.0 -# with: -# name: db_map_fuzzer -# path: ${{ github.workspace }}/fuzz/db_map_fuzzer - - - name: Pre-build - run: | - apt update && apt install -y sudo libtool gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 unzip - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" - unzip awscliv2.zip - sudo ./aws/install - mkdir -p $GITHUB_WORKSPACE/out/ - - - name: Configure AWS credentials from Test account - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: eu-west-2 - - - name: download db_map_fuzzer from s3 - run: | - if [ ! -d $GITHUB_WORKSPACE/fuzz/ ]; then - mkdir -p $GITHUB_WORKSPACE/fuzz/ - fi - aws s3 cp s3://spdb-github-ci/db_map_fuzzer $GITHUB_WORKSPACE/fuzz/db_map_fuzzer - ls -alFh $GITHUB_WORKSPACE/fuzz - md5sum --version - md5sum $GITHUB_WORKSPACE/fuzz/db_map_fuzzer - - - - name: dbmapfuzzer - run: | - ls -l $GITHUB_WORKSPACE/out/ - sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" - sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_map_fuzzer" - chmod 777 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer - whoami - ls -alFh $GITHUB_WORKSPACE/fuzz - ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer 2>&1 | tee $GITHUB_WORKSPACE/out/db_map_fuzzer.log - - - name: Copy logs to s3 - run: | - aws s3 cp $GITHUB_WORKSPACE/out/db_map_fuzzer.log s3://spdb-github-ci/ - fuzzer_sum: runs-on: ubuntu-latest container: image: ubuntu:18.04 - needs: [db_map_fuzzer, db_fuzzer] + needs: [ fuzz ] steps: - uses: actions/checkout@v3 @@ -235,27 +97,15 @@ jobs: aws s3 cp s3://spdb-github-ci/db_map_fuzzer.log $GITHUB_WORKSPACE/out/db_map_fuzzer.log || echo "db_map_fuzzer.log not found" ls -alFh $GITHUB_WORKSPACE/out -# - name: Download a Build Artifact -# uses: actions/download-artifact@v3.0.0 -# with: -# path: | -# ${{ github.workspace }}/out/db_fuzzer.log - -# - name: Download a Build Artifact -# uses: actions/download-artifact@v3.0.0 -# with: -# path: | -# ${{ github.workspace }}/out/db_map_fuzzer.log - - name: fuzzersum run: | echo "~~~~ db_map_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skoot" + tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "db_map_fuzzer failed!" echo "~~~~ db_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skid" + tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "db_fuzzer failed!" - name: clear s3 bucket run: | - mkdir -p $GITHUB_WORKSPACE/down aws s3 rm s3://spdb-github-ci/ --recursive --include "*" + From 60975a85617d9a256dfb2a6a49d40e3b5d014017 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 26 Jun 2022 12:28:43 +0300 Subject: [PATCH 026/226] fixed regex on reading fuzz log --- .github/workflows/test_fuzz.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_fuzz.yml b/.github/workflows/test_fuzz.yml index b52c8c00b9..d363f3c32b 100644 --- a/.github/workflows/test_fuzz.yml +++ b/.github/workflows/test_fuzz.yml @@ -56,7 +56,7 @@ jobs: bash -xv prepfuz.sh mkdir -p $GITHUB_WORKSPACE/out/ ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/${{ matrix.name }} 2>&1 | sudo tee $GITHUB_WORKSPACE/out/${{ matrix.name }}.log - tail -20 $GITHUB_WORKSPACE/out/${{ matrix.name }} | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "${{ matrix.name }} failed!" + tail -20 $GITHUB_WORKSPACE/out/${{ matrix.name }}.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "${{ matrix.name }} failed!" - name: Copy ${{ matrix.name }} logs to S3 run: | From f8df6ca44668a704e7e6d7c44d7e89398abe5716 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Thu, 23 Jun 2022 17:51:42 +0300 Subject: [PATCH 027/226] customizable_test: fix breakage caused by SPDB-556 (#27) When fixing the clang compilation errors (offsetof() being applied to non standard layout types), the pointer flags were mistakenly set to `kNone` from `kAllowNone`. This didn't cause an issue with the tests on 6.22.1, but it does after the rebase on 7.2.2. Add the missing flags back so that the test passes. --- options/customizable_test.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/options/customizable_test.cc b/options/customizable_test.cc index c5a422a4f2..d3c9ea9055 100644 --- a/options/customizable_test.cc +++ b/options/customizable_test.cc @@ -236,18 +236,20 @@ class SimpleConfigurable : public Configurable { dynamic_unsafe_offsetof(so, so.b), OptionType::kBoolean, OptionVerificationType::kNormal, OptionTypeFlags::kNone}); simple_option_info.emplace( - "unique", OptionTypeInfo::AsCustomUniquePtr( - dynamic_unsafe_offsetof(so, so.cu), - OptionVerificationType::kNormal, OptionTypeFlags::kNone)); + "unique", + OptionTypeInfo::AsCustomUniquePtr( + dynamic_unsafe_offsetof(so, so.cu), OptionVerificationType::kNormal, + OptionTypeFlags::kAllowNull)); simple_option_info.emplace( - "shared", OptionTypeInfo::AsCustomSharedPtr( - dynamic_unsafe_offsetof(so, so.cs), - OptionVerificationType::kNormal, OptionTypeFlags::kNone)); + "shared", + OptionTypeInfo::AsCustomSharedPtr( + dynamic_unsafe_offsetof(so, so.cs), OptionVerificationType::kNormal, + OptionTypeFlags::kAllowNull)); simple_option_info.emplace( "pointer", OptionTypeInfo::AsCustomRawPtr( dynamic_unsafe_offsetof(so, so.cp), OptionVerificationType::kNormal, - OptionTypeFlags::kNone)); + OptionTypeFlags::kAllowNull)); #endif // ROCKSDB_LITE RegisterOptions(&simple_, &simple_option_info); } From 835bcf8c62372d3fe9880c5dff0d29ff70891dc4 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 26 Jun 2022 17:42:58 +0300 Subject: [PATCH 028/226] added commit hash to logs uploaded to s3 --- .github/workflows/test_fuzz.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_fuzz.yml b/.github/workflows/test_fuzz.yml index d363f3c32b..569a8d35db 100644 --- a/.github/workflows/test_fuzz.yml +++ b/.github/workflows/test_fuzz.yml @@ -2,6 +2,7 @@ name: new_fuzz on: workflow_dispatch: + workflow_call: jobs: fuzz: @@ -55,12 +56,12 @@ jobs: chmod +x prepfuz.sh bash -xv prepfuz.sh mkdir -p $GITHUB_WORKSPACE/out/ - ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/${{ matrix.name }} 2>&1 | sudo tee $GITHUB_WORKSPACE/out/${{ matrix.name }}.log - tail -20 $GITHUB_WORKSPACE/out/${{ matrix.name }}.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "${{ matrix.name }} failed!" + ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/${{ matrix.name }} 2>&1 | sudo tee $GITHUB_WORKSPACE/out/${{ matrix.name }}.log-$GITHUB_SHA + tail -20 $GITHUB_WORKSPACE/out/${{ matrix.name }}.log-$GITHUB_SHA | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "${{ matrix.name }} failed!" - name: Copy ${{ matrix.name }} logs to S3 run: | - aws s3 cp $GITHUB_WORKSPACE/out/${{ matrix.name }}.log s3://spdb-github-ci/ + aws s3 cp $GITHUB_WORKSPACE/out/${{ matrix.name }}.log-$GITHUB_SHA s3://spdb-github-ci/ fuzzer_sum: runs-on: ubuntu-latest From 24c6f469a127c1780c6309ea85886c3003b0fbf3 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 27 Jun 2022 12:11:58 +0300 Subject: [PATCH 029/226] added util-linux and run lscpu script for ci pipeline --- .github/workflows/ci_pipeline.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 6c26d387ce..36f07fa0d4 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -26,7 +26,7 @@ jobs: df -h apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar - python3 -m pip install lint-diffs flake8 + python3 -m pip install lint-diffs flake8 util-linux - name: Checkout uses: actions/checkout@v2 @@ -50,6 +50,7 @@ jobs: - name: ${{ matrix.name }} run: | + lscpu df -h ls /etc/apk/world git config --global --add safe.directory $GITHUB_WORKSPACE From b22320462b5a9cf6454edb73cd2b545b60611146 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 27 Jun 2022 12:17:15 +0300 Subject: [PATCH 030/226] fixed util-linux installation --- .github/workflows/ci_pipeline.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 36f07fa0d4..998d90be46 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -24,9 +24,9 @@ jobs: run: | rm -rf /usr/share/dotnet || echo "" df -h - apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ + apk add git util-linux bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar - python3 -m pip install lint-diffs flake8 util-linux + python3 -m pip install lint-diffs flake8 - name: Checkout uses: actions/checkout@v2 From 3204f06916f73fccabc18208235035169f35eafa Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 28 Jun 2022 11:40:40 +0300 Subject: [PATCH 031/226] added "-DPORTABLE=1" flag to ci pipeline --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 998d90be46..6d6b5bdf8c 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -72,7 +72,7 @@ jobs: export "CCACHE_BASEDIR=$HOME" export "CCACHE_DIR=$HOME/.ccache" export "CCACHE_COMPILERCHECK=content" - ${{ matrix.command }} -DWITH_GFLAGS=1 \ + ${{ matrix.command }} -DPORTABLE=1 -DWITH_GFLAGS=1 \ -DWITH_ZLIB=1 -DWITH_SNAPPY=1 -DWITH_BZ2=1 -DWITH_LZ4=1 -DWITH_ZSTD=1 \ -DWITH_JNI=1 -DJAVA_HOME=/usr/lib/jvm/default-jvm \ -DWITH_BENCHMARK_TOOLS=1 -DWITH_CORE_TOOLS=1 -DWITH_TOOLS=1 \ From d580a841020b19fda89e3594bc716e394701d04c Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Tue, 28 Jun 2022 12:44:29 +0300 Subject: [PATCH 032/226] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000..dd84ea7824 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. From d98ea0f638707418576e406c3c65d0b2c6f0ac55 Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Tue, 28 Jun 2022 12:45:17 +0300 Subject: [PATCH 033/226] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 38 ---------------------------- 1 file changed, 38 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index dd84ea7824..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. From 7f71b170bb9fa511b992fd05641ed87a7b0dc555 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:28:07 +0300 Subject: [PATCH 034/226] Update new_release_line.yml --- .github/workflows/new_release_line.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml index c7bf046a74..8dd2c974e0 100644 --- a/.github/workflows/new_release_line.yml +++ b/.github/workflows/new_release_line.yml @@ -4,9 +4,9 @@ on: workflow_dispatch: inputs: new_branch_major: - description: 'New branch Major' + description: 'Next release Major version (leave empty for auto-increment)' new_branch_minor: - description: 'New branch Minor' + description: 'Next release Minor version (leave empty for auto-increment)' jobs: From e41f6524db862b4d66dda34a67e2a8e34ffbdd78 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:28:57 +0300 Subject: [PATCH 035/226] Update new_release_line.yml --- .github/workflows/new_release_line.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml index 8dd2c974e0..009ee162ee 100644 --- a/.github/workflows/new_release_line.yml +++ b/.github/workflows/new_release_line.yml @@ -4,9 +4,9 @@ on: workflow_dispatch: inputs: new_branch_major: - description: 'Next release Major version (leave empty for auto-increment)' + description: 'Next release Major version \n (leave empty for auto-increment)' new_branch_minor: - description: 'Next release Minor version (leave empty for auto-increment)' + description: 'Next release Minor version \n (leave empty for auto-increment)' jobs: From e4627976961684ac274d68e2f5278cb341b355b7 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:30:06 +0300 Subject: [PATCH 036/226] Update new_release_line.yml --- .github/workflows/new_release_line.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml index 009ee162ee..b640268115 100644 --- a/.github/workflows/new_release_line.yml +++ b/.github/workflows/new_release_line.yml @@ -4,9 +4,9 @@ on: workflow_dispatch: inputs: new_branch_major: - description: 'Next release Major version \n (leave empty for auto-increment)' + description: "Next release Major version \\n (leave empty for auto-increment)" new_branch_minor: - description: 'Next release Minor version \n (leave empty for auto-increment)' + description: "Next release Minor version \n (leave empty for auto-increment)" jobs: From 842cfb6b160b8e67d0ed00811adde00e81e8c232 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:33:25 +0300 Subject: [PATCH 037/226] Update new_release_line.yml --- .github/workflows/new_release_line.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml index b640268115..50c1be0651 100644 --- a/.github/workflows/new_release_line.yml +++ b/.github/workflows/new_release_line.yml @@ -6,7 +6,7 @@ on: new_branch_major: description: "Next release Major version \\n (leave empty for auto-increment)" new_branch_minor: - description: "Next release Minor version \n (leave empty for auto-increment)" + description: "Next release Minor version %0A (leave empty for auto-increment)" jobs: From 4bde1193b06ba97074b03993850a196f024e154f Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:35:01 +0300 Subject: [PATCH 038/226] Update new_release_line.yml --- .github/workflows/new_release_line.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml index 50c1be0651..6d76a1ee84 100644 --- a/.github/workflows/new_release_line.yml +++ b/.github/workflows/new_release_line.yml @@ -4,9 +4,9 @@ on: workflow_dispatch: inputs: new_branch_major: - description: "Next release Major version \\n (leave empty for auto-increment)" + description: "Next release Major version (leave empty for auto-increment)" new_branch_minor: - description: "Next release Minor version %0A (leave empty for auto-increment)" + description: "Next release Minor version (LEAVE EMPTY FOR AUTO-INCREMENT)" jobs: From 84695697df14a124041a61948d11222a6f10d6f0 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:36:12 +0300 Subject: [PATCH 039/226] Update new_release_line.yml --- .github/workflows/new_release_line.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml index 6d76a1ee84..4a60817dc7 100644 --- a/.github/workflows/new_release_line.yml +++ b/.github/workflows/new_release_line.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: new_branch_major: - description: "Next release Major version (leave empty for auto-increment)" + description: "Next release Major version (LEAVE EMPTY FOR AUTO-INCREMENT)" new_branch_minor: description: "Next release Minor version (LEAVE EMPTY FOR AUTO-INCREMENT)" From 89cf25f5bf64d5be13e3414856a86adb4415b649 Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Wed, 29 Jun 2022 10:59:16 +0300 Subject: [PATCH 040/226] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 38 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 20 ++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000..dd84ea7824 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000..bbcbbe7d61 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From 1abecc13500f519a28d41932c8ac7642a375cf71 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Sun, 22 Aug 2021 13:58:53 +0300 Subject: [PATCH 041/226] SPDB-209: crash_test: bail if the run failed before the driver killed it --- tools/db_crashtest.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index 231f793728..f02b4e7ac8 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -8,6 +8,7 @@ import random import re import tempfile +import signal import subprocess import shutil import argparse @@ -583,6 +584,10 @@ def inject_inconsistencies_to_db_dir(dir_path): with open(os.path.join(dir_path, fname), "w") as fd: fd.write("garbage") +DEADLY_SIGNALS = { + signal.SIGABRT, signal.SIGBUS, signal.SIGFPE, signal.SIGILL, signal.SIGSEGV +} + def execute_cmd(cmd, timeout): child = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE) @@ -592,6 +597,11 @@ def execute_cmd(cmd, timeout): try: outs, errs = child.communicate(timeout=timeout) hit_timeout = False + if child.returncode < 0 and (-child.returncode in DEADLY_SIGNALS): + msg = "ERROR: db_stress failed before kill: exitcode=%d, signal=%s\n" % ( + child.returncode, signal.Signals(-child.returncode).name) + print(msg) + raise SystemExit(msg) print("WARNING: db_stress ended before kill: exitcode=%d\n" % child.returncode) except subprocess.TimeoutExpired: From 01f919d187d88ae97d4467f016b1b9c38e884f9e Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Tue, 14 Jun 2022 13:42:59 +0300 Subject: [PATCH 042/226] SPDB-225: crash_test: backup last two db states --- tools/db_crashtest.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index f02b4e7ac8..6761b58c7e 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -612,6 +612,14 @@ def execute_cmd(cmd, timeout): return hit_timeout, child.returncode, outs.decode('utf-8'), errs.decode('utf-8') +# old copy of the db is kept at same src dir as new db. +def copy_tree_and_remove_old(counter, dbname): + dest = dbname + "_" + str(counter) + shutil.copytree(dbname, dest) + shutil.copytree(expected_values_dir, dest + "/" + "expected_values_dir") + old_db = dbname + "_" + str(counter - 2) + if counter > 1: + shutil.rmtree(old_db, True) # This script runs and kills db_stress multiple times. It checks consistency # in case of unsafe crashes in RocksDB. @@ -623,6 +631,8 @@ def blackbox_crash_main(args, unknown_args): print("Running blackbox-crash-test with \n" + "interval_between_crash=" + str(cmd_params['interval']) + "\n" + "total-duration=" + str(cmd_params['duration']) + "\n") + + counter = 0 while time.time() < exit_time: cmd = gen_cmd(dict( @@ -630,6 +640,8 @@ def blackbox_crash_main(args, unknown_args): + list({'db': dbname}.items())), unknown_args) hit_timeout, retcode, outs, errs = execute_cmd(cmd, cmd_params['interval']) + copy_tree_and_remove_old(counter, dbname) + counter+=1 if not hit_timeout: print('Exit Before Killing') @@ -673,6 +685,8 @@ def whitebox_crash_main(args, unknown_args): kill_random_test = cmd_params['random_kill_odd'] kill_mode = 0 + counter = 0 + while time.time() < exit_time: if check_mode == 0: additional_opts = { @@ -757,6 +771,9 @@ def whitebox_crash_main(args, unknown_args): print(msg) print(stdoutdata) print(stderrdata) + + copy_tree_and_remove_old(counter, dbname) + counter+=1 if hit_timeout: print("Killing the run for running too long") From 41214a849b3c1392191d0bf42b8f657b35ae07db Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 6 Oct 2021 13:28:38 +0300 Subject: [PATCH 043/226] SPDB-229: crash_test: add timestamp and PID to command execution output This helps debug things by correlating with other events in the system, which we are unable to connect currently due to lack of information on which process failed and when. --- tools/db_crashtest.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index 6761b58c7e..838e290642 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -12,6 +12,7 @@ import subprocess import shutil import argparse +import datetime # params overwrite priority: # for default: @@ -591,23 +592,25 @@ def inject_inconsistencies_to_db_dir(dir_path): def execute_cmd(cmd, timeout): child = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE) - print("Running db_stress with pid=%d: %s\n\n" - % (child.pid, ' '.join(cmd))) + print("[%s] Running db_stress with pid=%d: %s\n\n" + % (str(datetime.datetime.now()), child.pid, ' '.join(cmd))) try: outs, errs = child.communicate(timeout=timeout) hit_timeout = False if child.returncode < 0 and (-child.returncode in DEADLY_SIGNALS): - msg = "ERROR: db_stress failed before kill: exitcode=%d, signal=%s\n" % ( - child.returncode, signal.Signals(-child.returncode).name) + msg = ("[%s] ERROR: db_stress (pid=%d) failed before kill: " + "exitcode=%d, signal=%s\n") % ( + str(datetime.datetime.now()), child.pid, child.returncode, + signal.Signals(-child.returncode).name) print(msg) raise SystemExit(msg) - print("WARNING: db_stress ended before kill: exitcode=%d\n" - % child.returncode) + print("[%s] WARNING: db_stress (pid=%d) ended before kill: exitcode=%d\n" + % (str(datetime.datetime.now()), child.pid, child.returncode)) except subprocess.TimeoutExpired: hit_timeout = True child.kill() - print("KILLED %d\n" % child.pid) + print("[%s] KILLED %d\n" % (str(datetime.datetime.now()), child.pid)) outs, errs = child.communicate() return hit_timeout, child.returncode, outs.decode('utf-8'), errs.decode('utf-8') From 34a6caf19606507b11378d36ec6d4168819395d3 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 6 Oct 2021 14:02:52 +0300 Subject: [PATCH 044/226] SPDB-231: crash_test: clean left-over copies of the database on success SPDB-225 added copying of the database during tests in order to preserve the state of the database, but after a successful run there's no reason to keep these copies around, so remove them. --- tools/db_crashtest.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index 838e290642..cda3c31c34 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -668,6 +668,8 @@ def blackbox_crash_main(args, unknown_args): # we need to clean up after ourselves -- only do this on test success shutil.rmtree(dbname, True) + for ctr in range(max(0, counter - 2), counter): + shutil.rmtree('{}_{}'.format(dbname, ctr)) # This python script runs db_stress multiple times. Some runs with @@ -817,6 +819,8 @@ def whitebox_crash_main(args, unknown_args): os.mkdir(dbname) cmd_params.pop('expected_values_dir', None) check_mode = (check_mode + 1) % total_check_mode + for ctr in range(max(0, counter - 2), counter): + shutil.rmtree('{}_{}'.format(dbname, ctr)) time.sleep(1) # time to stabilize after a kill From 28e2cb2a57c26e1347946715a9adf3ab513b4214 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 6 Oct 2021 14:32:49 +0300 Subject: [PATCH 045/226] SPDB-235: crash_test: remove redundant command execution print The command is printed anyway by execute_cmd(), so there's no need to print it in whitebox_crash_main() as well. --- tools/db_crashtest.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index cda3c31c34..fc0c271f7d 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -760,8 +760,6 @@ def whitebox_crash_main(args, unknown_args): + list(additional_opts.items()) + list({'db': dbname}.items())), unknown_args) - print("Running:" + ' '.join(cmd) + "\n") # noqa: E999 T25377293 Grandfathered in - # If the running time is 15 minutes over the run time, explicit kill and # exit even if white box kill didn't hit. This is to guarantee run time # limit, as if it runs as a job, running too long will create problems From 9f14431d95873eb82f57b269263389eb7c3d5487 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 13 Oct 2021 11:31:17 +0300 Subject: [PATCH 046/226] SPDB-266: crash_test: fix parsing of boolean arguments The current code is broken, because it effectively sets bool() as the conversion function for boolean arguments, but bool() returns True for every non-empty string, so that doesn't work. Add a converter function to parse boolean value and set it as the type for argparse in case the argument is of type bool. --- tools/db_crashtest.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index fc0c271f7d..ce990c0043 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -823,6 +823,15 @@ def whitebox_crash_main(args, unknown_args): time.sleep(1) # time to stabilize after a kill +def bool_converter(v): + s = v.lower().strip() + if s in ('false', '0', 'no'): + return False + elif s in ('true', '1', 'yes'): + return True + raise ValueError('Failed to parse `%s` as a boolean value' % v) + + def main(): global stress_cmd @@ -851,7 +860,10 @@ def main(): + list(multiops_wp_txn_params.items())) for k, v in all_params.items(): - parser.add_argument("--" + k, type=type(v() if callable(v) else v)) + t = type(v() if callable(v) else v) + if t is bool: + t = bool_converter + parser.add_argument("--" + k, type=t) # unknown_args are passed directly to db_stress args, unknown_args = parser.parse_known_args() From 7de4faa419bfdbd8c0977761a2df370c6a65d04d Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Mon, 27 Jun 2022 09:11:04 +0300 Subject: [PATCH 047/226] SPDB-331: db_stress: fix compare_full_db_state_snapshot with batched snapshot In batched snapshot mode each key is duplicated 10 times and prefixed with an ASCII digit in the range 0-9. However, the snapshot verification code assumed that each key is present exactly as generated and exactly once, so the calculated key index was bogus and lead to an invalid memory access. Fix it by making the snapshot verification code aware of the batched mode and apply the key conversion and verification accordingly. While at it, clean up the way the verification bit vector is allocated. --- db_stress_tool/db_stress_shared_state.h | 2 +- db_stress_tool/db_stress_test_base.cc | 93 ++++++++++++++----------- 2 files changed, 55 insertions(+), 40 deletions(-) diff --git a/db_stress_tool/db_stress_shared_state.h b/db_stress_tool/db_stress_shared_state.h index e7eb4aade2..8f58f30f29 100644 --- a/db_stress_tool/db_stress_shared_state.h +++ b/db_stress_tool/db_stress_shared_state.h @@ -383,7 +383,7 @@ struct ThreadState { // The value of the Get std::string value; // optional state of all keys in the db - std::vector* key_vec; + std::unique_ptr> key_vec; std::string timestamp; }; diff --git a/db_stress_tool/db_stress_test_base.cc b/db_stress_tool/db_stress_test_base.cc index 9fde2ecd71..c58b376aef 100644 --- a/db_stress_tool/db_stress_test_base.cc +++ b/db_stress_tool/db_stress_test_base.cc @@ -393,6 +393,44 @@ bool StressTest::VerifySecondaries() { return true; } +static std::vector GetKeyBitVec(DB* db, const ReadOptions& ropt_base) { + ReadOptions ropt = ropt_base; + // When `prefix_extractor` is set, seeking to beginning and scanning + // across prefixes are only supported with `total_order_seek` set. + ropt.total_order_seek = true; + std::unique_ptr iterator(db->NewIterator(ropt)); + + std::vector key_bitvec; + if (FLAGS_test_batches_snapshots) { + // In batched snapshot mode each key/value is inserted 10 times, where + // the key and the values are prefixed with a single ASCII digit in the + // range 0-9. + key_bitvec.resize(FLAGS_max_key * 10); + } else { + key_bitvec.resize(FLAGS_max_key); + } + + for (iterator->SeekToFirst(); iterator->Valid(); iterator->Next()) { + uint64_t key_offset = 0; + Slice key_str = iterator->key(); + // In batched snapshot mode each key operation is actually 10 operations in + // a single batch, as each operation creates 10 keys from each key by + // prefixing it with an ASCII digit in the range 0-9. + if (FLAGS_test_batches_snapshots) { + const char batch_id = key_str[0]; + assert(batch_id >= '0' && batch_id <= '9'); + key_offset = (batch_id - '0') * FLAGS_max_key; + key_str.remove_prefix(1); + } + + uint64_t key_val; + if (GetIntVal(key_str.ToString(), &key_val)) { + key_bitvec.at(key_offset + key_val) = true; + } + } + return key_bitvec; +} + Status StressTest::AssertSame(DB* db, ColumnFamilyHandle* cf, ThreadState::SnapshotState& snap_state) { Status s; @@ -430,20 +468,9 @@ Status StressTest::AssertSame(DB* db, ColumnFamilyHandle* cf, } } if (snap_state.key_vec != nullptr) { - // When `prefix_extractor` is set, seeking to beginning and scanning - // across prefixes are only supported with `total_order_seek` set. - ropt.total_order_seek = true; - std::unique_ptr iterator(db->NewIterator(ropt)); - std::unique_ptr> tmp_bitvec( - new std::vector(FLAGS_max_key)); - for (iterator->SeekToFirst(); iterator->Valid(); iterator->Next()) { - uint64_t key_val; - if (GetIntVal(iterator->key().ToString(), &key_val)) { - (*tmp_bitvec.get())[key_val] = true; - } - } + std::vector tmp_bitvec = GetKeyBitVec(db, ropt); if (!std::equal(snap_state.key_vec->begin(), snap_state.key_vec->end(), - tmp_bitvec.get()->begin())) { + tmp_bitvec.begin())) { return Status::Corruption("Found inconsistent keys at this snapshot"); } } @@ -703,7 +730,6 @@ void StressTest::OperateDb(ThreadState* thread) { MutexLock l(thread->shared->GetMutex()); while (!thread->snapshot_queue.empty()) { db_->ReleaseSnapshot(thread->snapshot_queue.front().second.snapshot); - delete thread->snapshot_queue.front().second.key_vec; thread->snapshot_queue.pop(); } thread->shared->IncVotedReopen(); @@ -973,7 +999,6 @@ void StressTest::OperateDb(ThreadState* thread) { } while (!thread->snapshot_queue.empty()) { db_->ReleaseSnapshot(thread->snapshot_queue.front().second.snapshot); - delete thread->snapshot_queue.front().second.key_vec; thread->snapshot_queue.pop(); } @@ -2004,27 +2029,18 @@ void StressTest::TestAcquireSnapshot(ThreadState* thread, std::vector* key_vec = nullptr; if (FLAGS_compare_full_db_state_snapshot && (thread->tid == 0)) { - key_vec = new std::vector(FLAGS_max_key); - // When `prefix_extractor` is set, seeking to beginning and scanning - // across prefixes are only supported with `total_order_seek` set. - ropt.total_order_seek = true; - std::unique_ptr iterator(db_->NewIterator(ropt)); - for (iterator->SeekToFirst(); iterator->Valid(); iterator->Next()) { - uint64_t key_val; - if (GetIntVal(iterator->key().ToString(), &key_val)) { - (*key_vec)[key_val] = true; - } - } - } - - ThreadState::SnapshotState snap_state = {snapshot, - rand_column_family, - column_family->GetName(), - keystr, - status_at, - value_at, - key_vec, - ts_str}; + key_vec = new std::vector(GetKeyBitVec(db_, ropt)); + } + + ThreadState::SnapshotState snap_state = { + snapshot, + rand_column_family, + column_family->GetName(), + keystr, + status_at, + value_at, + std::unique_ptr>(key_vec), + ts_str}; uint64_t hold_for = FLAGS_snapshot_hold_ops; if (FLAGS_long_running_snapshots) { // Hold 10% of snapshots for 10x more @@ -2039,20 +2055,19 @@ void StressTest::TestAcquireSnapshot(ThreadState* thread, } } uint64_t release_at = std::min(FLAGS_ops_per_thread - 1, i + hold_for); - thread->snapshot_queue.emplace(release_at, snap_state); + thread->snapshot_queue.emplace(release_at, std::move(snap_state)); } Status StressTest::MaybeReleaseSnapshots(ThreadState* thread, uint64_t i) { while (!thread->snapshot_queue.empty() && i >= thread->snapshot_queue.front().first) { - auto snap_state = thread->snapshot_queue.front().second; + auto& snap_state = thread->snapshot_queue.front().second; assert(snap_state.snapshot); // Note: this is unsafe as the cf might be dropped concurrently. But // it is ok since unclean cf drop is cunnrently not supported by write // prepared transactions. Status s = AssertSame(db_, column_families_[snap_state.cf_at], snap_state); db_->ReleaseSnapshot(snap_state.snapshot); - delete snap_state.key_vec; thread->snapshot_queue.pop(); if (!s.ok()) { return s; From a865c38432c1b3c7550b9bd5b99985915bbced51 Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Thu, 23 Jun 2022 13:48:55 +0300 Subject: [PATCH 048/226] SPDB-331: crash_test: don't toggle test_batches_snapshots db_stress does not support running successive runs with different values of test_batches_snapshots. --- tools/db_crashtest.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index ce990c0043..82f1b3d5e6 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -105,7 +105,7 @@ "subcompactions": lambda: random.randint(1, 4), "target_file_size_base": 2097152, "target_file_size_multiplier": 2, - "test_batches_snapshots": lambda: random.randint(0, 1), + "test_batches_snapshots": random.randint(0, 1), "top_level_index_pinning": lambda: random.randint(0, 3), "unpartitioned_pinning": lambda: random.randint(0, 3), "use_direct_reads": lambda: random.randint(0, 1), @@ -470,6 +470,12 @@ def finalize_and_sanitize(src_params): dest_params["enable_pipelined_write"] = 0 if dest_params.get("sst_file_manager_bytes_per_sec", 0) == 0: dest_params["sst_file_manager_bytes_per_truncate"] = 0 + # test_batches_snapshots needs to stay const (either 1 or 0) throught + # successive runs. this stops the next check (enable_compaction_filter) + # from switching its value. + if (dest_params.get("test_batches_snapshots", 0) == 1 and + dest_params.get("enable_compaction_filter", 0) == 1): + dest_params["enable_compaction_filter"] = 0 if dest_params.get("enable_compaction_filter", 0) == 1: # Compaction filter is incompatible with snapshots. Need to avoid taking # snapshots, as well as avoid operations that use snapshots for @@ -480,8 +486,13 @@ def finalize_and_sanitize(src_params): dest_params["readpercent"] += dest_params.get("iterpercent", 10) dest_params["iterpercent"] = 0 dest_params["test_batches_snapshots"] = 0 + # this stops the ("prefix_size") == -1 check from changing the value + # of test_batches_snapshots between runs. + if (dest_params.get("prefix_size", 0) == -1 and + dest_params.get("test_batches_snapshots", 0) == 1): + dest_params["prefix_size"] = 7 if dest_params.get("prefix_size") == -1: - dest_params["readpercent"] += dest_params.get("prefixpercent", 20) + dest_params["readpercent"] += dest_params.get("prefixpercent", 0) dest_params["prefixpercent"] = 0 dest_params["test_batches_snapshots"] = 0 if dest_params.get("test_batches_snapshots") == 0: From c161f33fc8d42a2a8ca42d22396609e84d1af1bd Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Thu, 23 Jun 2022 13:51:26 +0300 Subject: [PATCH 049/226] SPDB-241: crash_test: add narrow crash test in addition, add randomize_operation_type_percentages --- crash_test.mk | 3 + tools/db_crashtest.py | 143 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 145 insertions(+), 1 deletion(-) diff --git a/crash_test.mk b/crash_test.mk index 65ac083f14..96c0ad2148 100644 --- a/crash_test.mk +++ b/crash_test.mk @@ -20,6 +20,9 @@ CRASHTEST_PY=$(PYTHON) -u tools/db_crashtest.py --stress_cmd=$(DB_STRESS_CMD) blackbox_crash_test_with_multiops_wc_txn \ blackbox_crash_test_with_multiops_wp_txn +narrow_crash_test: $(DB_STRESS_CMD) + $(CRASHTEST_PY) narrow $(CRASH_TEST_EXT_ARGS) + crash_test: $(DB_STRESS_CMD) # Do not parallelize $(CRASHTEST_MAKE) whitebox_crash_test diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index 82f1b3d5e6..f2c72dafc1 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -32,6 +32,16 @@ # default_params < {blackbox,whitebox}_default_params < multiops_txn_params < args +supplied_ops = { + "writepercent": -1, + "delpercent": -1, + "prefixpercent": -1, + "delrangepercent": -1, + "readpercent": -1, + "iterpercent": -1, + "customopspercent": -1, +} + default_params = { "acquire_snapshot_one_in": 10000, "backup_max_size": 100 * 1024 * 1024, @@ -405,6 +415,82 @@ def is_direct_io_supported(dbname): "checkpoint_one_in": 0, } +narrow_ops_per_thread = 50000 + +narrow_params = { + "duration": 1800, + "expected_values_dir": lambda: setup_expected_values_dir(), + "max_key_len": 8, + "value_size_mult": 8, + "fail_if_options_file_error": True, + "allow_concurrent_memtable_write": True, + "reopen": 2, + "log2_keys_per_lock": 1, + "prefixpercent": 0, + "prefix_size": -1, + "ops_per_thread": narrow_ops_per_thread, + "get_live_files_one_in": narrow_ops_per_thread, + "acquire_snapshot_one_in": int(narrow_ops_per_thread / 4), + "sync_wal_one_in": int(narrow_ops_per_thread / 2), + "verify_db_one_in": int(narrow_ops_per_thread), + "use_multiget": lambda: random.choice([0, 0, 0, 1]), + "enable_compaction_filter": lambda: random.choice([0, 0, 0, 1]), + "use_multiget": lambda: random.choice([0, 0, 0, 1]), + "compare_full_db_state_snapshot": lambda: random.choice([0, 0, 0, 1]), + "use_merge": lambda: random.choice([0, 0, 0, 1]), + "nooverwritepercent": random.choice([0, 5, 20, 30, 40, 50, 95]), + "seed": int(time.time() * 1000000) & 0xffffffff, + + # below are params that are incompatible with current settings. + "clear_column_family_one_in": 0, + "get_sorted_wal_files_one_in": 0, + "get_current_wal_file_one_in": 0, + "continuous_verification_interval": 0, + "destroy_db_initially": 0, + "progress_reports": 0, +} + +def store_ops_supplied(params): + for k in supplied_ops: + supplied_ops[k] = params.get(k, -1) + +# make sure sum of ops == 100. +# value of -1 means that the op should be initialized. +def randomize_operation_type_percentages(src_params): + num_to_initialize = sum(1 for v in supplied_ops.values() if v == -1) + + params = {k: (v if v != -1 else 0) for k, v in supplied_ops.items()} + + ops_percent_sum = sum(params.get(k, 0) for k in supplied_ops) + current_max = 100 - ops_percent_sum + if ops_percent_sum > 100 or (num_to_initialize == 0 and ops_percent_sum != 100): + raise ValueError("Error - Sum of ops percents should be 100") + + if num_to_initialize != 0: + for k , v in supplied_ops.items(): + if v != -1: + continue + + if num_to_initialize == 1: + params[k] = current_max + break + + if k == "writepercent" and current_max > 60: + params["writepercent"] = random.randint(20, 60) + elif k == "delpercent" and current_max > 35: + params["delpercent"] = random.randint(0, current_max - 35) + elif k == "prefixpercent" and current_max >= 10: + params["prefixpercent"] = random.randint(0, 10) + elif k == "delrangepercent" and current_max >= 5: + params["delrangepercent"] = random.randint(0, 5) + else: + params[k] = random.randint(0, current_max) + + current_max = current_max - params[k] + num_to_initialize -= 1 + + src_params.update(params) + def finalize_and_sanitize(src_params): dest_params = dict([(k, v() if callable(v) else v) for (k, v) in src_params.items()]) @@ -614,6 +700,8 @@ def execute_cmd(cmd, timeout): "exitcode=%d, signal=%s\n") % ( str(datetime.datetime.now()), child.pid, child.returncode, signal.Signals(-child.returncode).name) + print(outs) + print(errs, file=sys.stderr) print(msg) raise SystemExit(msg) print("[%s] WARNING: db_stress (pid=%d) ended before kill: exitcode=%d\n" @@ -635,6 +723,55 @@ def copy_tree_and_remove_old(counter, dbname): if counter > 1: shutil.rmtree(old_db, True) +def gen_narrow_cmd_params(args): + params = {} + params.update(narrow_params) + # add these to avoid a key error in finalize_and_sanitize + params["mmap_read"] = 0 + params["use_direct_io_for_flush_and_compaction"] = 0 + params["partition_filters"] = 0 + params["use_direct_reads"] = 0 + params["user_timestamp_size"] = 0 + params["ribbon_starting_level"] = 0 + + for k, v in vars(args).items(): + if v is not None: + params[k] = v + + return params + +def narrow_crash_main(args, unknown_args): + cmd_params = gen_narrow_cmd_params(args) + dbname = get_dbname('narrow') + exit_time = time.time() + cmd_params['duration'] + + store_ops_supplied(cmd_params) + + print("Running narrow-crash-test\n") + + counter = 0 + + while time.time() < exit_time: + randomize_operation_type_percentages(cmd_params) + cmd = gen_cmd(dict(cmd_params, **{'db': dbname}), unknown_args) + + hit_timeout, retcode, outs, errs = execute_cmd(cmd, cmd_params['duration']) + copy_tree_and_remove_old(counter, dbname) + counter += 1 + + for line in errs.splitlines(): + if line and not line.startswith('WARNING'): + run_had_errors = True + print('stderr has error message:') + print('***' + line + '***') + + if retcode != 0: + raise SystemExit('TEST FAILED. See kill option and exit code above!!!\n') + + time.sleep(2) # time to stabilize before the next run + + shutil.rmtree(dbname, True) + # This script runs and kills db_stress multiple times. It checks consistency # in case of unsafe crashes in RocksDB. def blackbox_crash_main(args, unknown_args): @@ -848,7 +985,7 @@ def main(): parser = argparse.ArgumentParser(description="This script runs and kills \ db_stress multiple times") - parser.add_argument("test_type", choices=["blackbox", "whitebox"]) + parser.add_argument("test_type", choices=["blackbox", "whitebox", "narrow"]) parser.add_argument("--simple", action="store_true") parser.add_argument("--cf_consistency", action='store_true') parser.add_argument("--txn", action='store_true') @@ -866,6 +1003,8 @@ def main(): + list(whitebox_simple_default_params.items()) + list(blob_params.items()) + list(ts_params.items()) + + list(supplied_ops.items()) + + list(narrow_params.items()) + list(multiops_txn_default_params.items()) + list(multiops_wc_txn_params.items()) + list(multiops_wp_txn_params.items())) @@ -890,6 +1029,8 @@ def main(): blackbox_crash_main(args, unknown_args) if args.test_type == 'whitebox': whitebox_crash_main(args, unknown_args) + if args.test_type == 'narrow': + narrow_crash_main(args, unknown_args) # Only delete the `expected_values_dir` if test passes if expected_values_dir is not None: shutil.rmtree(expected_values_dir) From 28a8caae10a23f97668ad58f17f55e764128221f Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Tue, 14 Jun 2022 13:30:25 +0300 Subject: [PATCH 050/226] SPDB-284: crash_test: increase stress test coverage This changes the way the stress test parameters are generated in order to increase the coverage of the test and check for more edge cases. Additionally, this change adds the option to run whitebox tests with kill points disabled for testing functionality without crash recovery. SPDB-390: crash_test: fix bool flags SPDB-388: crash_test: disallow zero key dist val zero vals in key_len_percent_dist are incompatible with db_stress_common.h::GetIntVal --- crash_test.mk | 3 + db_stress_tool/db_stress_tool.cc | 15 ++++ tools/db_crashtest.py | 149 ++++++++++++++++++++++--------- 3 files changed, 124 insertions(+), 43 deletions(-) diff --git a/crash_test.mk b/crash_test.mk index 96c0ad2148..2971bc12aa 100644 --- a/crash_test.mk +++ b/crash_test.mk @@ -23,6 +23,9 @@ CRASHTEST_PY=$(PYTHON) -u tools/db_crashtest.py --stress_cmd=$(DB_STRESS_CMD) narrow_crash_test: $(DB_STRESS_CMD) $(CRASHTEST_PY) narrow $(CRASH_TEST_EXT_ARGS) +no_kill_crash_test: db_stress + $(CRASHTEST_PY) whitebox --disable_kill_points=1 --duration=4000 $(CRASH_TEST_EXT_ARGS) + crash_test: $(DB_STRESS_CMD) # Do not parallelize $(CRASHTEST_MAKE) whitebox_crash_test diff --git a/db_stress_tool/db_stress_tool.cc b/db_stress_tool/db_stress_tool.cc index 2a7430bfaa..361ff6c0d7 100644 --- a/db_stress_tool/db_stress_tool.cc +++ b/db_stress_tool/db_stress_tool.cc @@ -302,6 +302,11 @@ int db_stress_tool(int argc, char** argv) { std::vector weights; uint64_t scale_factor = FLAGS_key_window_scale_factor; key_gen_ctx.window = scale_factor * 100; + if (scale_factor == 0 || levels == 0) { + fprintf(stderr, + "max_key_len and key_window_scale_factor should be positive"); + exit(1); + } if (!FLAGS_key_len_percent_dist.empty()) { weights = SplitString(FLAGS_key_len_percent_dist); if (weights.size() != levels) { @@ -316,6 +321,10 @@ int db_stress_tool(int argc, char** argv) { uint64_t val = std::stoull(weight); key_gen_ctx.weights.emplace_back(val * scale_factor); total_weight += val; + if (val == 0) { + fprintf(stderr, "key_len_percent_dist cannot contain zero values"); + exit(1); + } } if (total_weight != 100) { fprintf(stderr, "Sum of all weights in key_len_dist should be 100"); @@ -323,6 +332,12 @@ int db_stress_tool(int argc, char** argv) { } } else { uint64_t keys_per_level = key_gen_ctx.window / levels; + if (keys_per_level == 0) { + fprintf( + stderr, + "max_key_len cannot be greater than key_window_scale_factor * 100"); + exit(1); + } for (unsigned int level = 0; level + 1 < levels; ++level) { key_gen_ctx.weights.emplace_back(keys_per_level); } diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index f2c72dafc1..2aafd878f7 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -48,7 +48,7 @@ # Consider larger number when backups considered more stable "backup_one_in": 100000, "batch_protection_bytes_per_key": lambda: random.choice([0, 8]), - "block_size": 16384, + "block_size": random.choice([16384, 4096]), "bloom_bits": lambda: random.choice([random.randint(0,19), random.lognormvariate(2.3, 1.3)]), "cache_index_and_filter_blocks": lambda: random.randint(0, 1), @@ -71,42 +71,37 @@ "clear_column_family_one_in": 0, "compact_files_one_in": 1000000, "compact_range_one_in": 1000000, - "delpercent": 4, - "delrangepercent": 1, "destroy_db_initially": 0, - "enable_pipelined_write": lambda: random.randint(0, 1), + "enable_pipelined_write": lambda: random.choice([0, 0, 0, 0, 1]), "enable_compaction_filter": lambda: random.choice([0, 0, 0, 1]), "expected_values_dir": lambda: setup_expected_values_dir(), "fail_if_options_file_error": lambda: random.randint(0, 1), "flush_one_in": 1000000, "file_checksum_impl": lambda: random.choice(["none", "crc32c", "xxh64", "big"]), - "get_live_files_one_in": 1000000, + "get_live_files_one_in": 100000, # Note: the following two are intentionally disabled as the corresponding # APIs are not guaranteed to succeed. "get_sorted_wal_files_one_in": 0, "get_current_wal_file_one_in": 0, # Temporarily disable hash index "index_type": lambda: random.choice([0, 0, 0, 2, 2, 3]), - "iterpercent": 10, "mark_for_compaction_one_file_in": lambda: 10 * random.randint(0, 1), "max_background_compactions": 20, "max_bytes_for_level_base": 10485760, - "max_key": 25000000, + "max_key": random.choice([100 * 1024, 1024 * 1024, 10 * 1024 * 1024]), "max_write_buffer_number": 3, "mmap_read": lambda: random.randint(0, 1), # Setting `nooverwritepercent > 0` is only possible because we do not vary - # the random seed, so the same keys are chosen by every run for disallowing - # overwrites. - "nooverwritepercent": 1, + # the random seed between runs, so the same keys are chosen by every run + # for disallowing overwrites. + "nooverwritepercent": random.choice([0, 5, 20, 30, 40, 50, 95]), "open_files": lambda : random.choice([-1, -1, 100, 500000]), "optimize_filters_for_memory": lambda: random.randint(0, 1), "partition_filters": lambda: random.randint(0, 1), "partition_pinning": lambda: random.randint(0, 3), "pause_background_one_in": 1000000, "prefix_size" : lambda: random.choice([-1, 1, 5, 7, 8]), - "prefixpercent": 5, "progress_reports": 0, - "readpercent": 45, "recycle_log_file_num": lambda: random.randint(0, 1), "snapshot_hold_ops": 100000, "sst_file_manager_bytes_per_sec": lambda: random.choice([0, 104857600]), @@ -115,23 +110,23 @@ "subcompactions": lambda: random.randint(1, 4), "target_file_size_base": 2097152, "target_file_size_multiplier": 2, - "test_batches_snapshots": random.randint(0, 1), + "test_batches_snapshots": random.choice([0, 0, 0, 1]), "top_level_index_pinning": lambda: random.randint(0, 3), "unpartitioned_pinning": lambda: random.randint(0, 3), "use_direct_reads": lambda: random.randint(0, 1), "use_direct_io_for_flush_and_compaction": lambda: random.randint(0, 1), "mock_direct_io": False, "use_clock_cache": 0, # currently broken - "use_full_merge_v1": lambda: random.randint(0, 1), + "use_full_merge_v1": lambda: random.randrange(10) == 0, "use_merge": lambda: random.randint(0, 1), # 999 -> use Bloom API "ribbon_starting_level": lambda: random.choice([random.randint(-1, 10), 999]), "use_block_based_filter": lambda: random.randint(0, 1), "value_size_mult": 32, "verify_checksum": 1, - "write_buffer_size": 4 * 1024 * 1024, - "writepercent": 35, - "format_version": lambda: random.choice([2, 3, 4, 5, 5]), + "write_buffer_size": lambda: random.choice( + [1024 * 1024, 8 * 1024 * 1024, 128 * 1024 * 1024, 1024 * 1024 * 1024]), + "format_version": lambda: random.choice([2, 3, 4, 5, 5, 5, 5, 5, 5]), "index_block_restart_interval": lambda: random.choice(range(1, 16)), "use_multiget" : lambda: random.randint(0, 1), "periodic_compaction_seconds" : @@ -142,13 +137,12 @@ "max_manifest_file_size" : lambda : random.choice( [t * 16384 if t < 3 else 1024 * 1024 * 1024 for t in range(1, 30)]), # Sync mode might make test runs slower so running it in a smaller chance - "sync" : lambda : random.choice( - [1 if t == 0 else 0 for t in range(0, 20)]), + "sync" : lambda : random.randrange(20) == 0, # Disable compaction_readahead_size because the test is not passing. #"compaction_readahead_size" : lambda : random.choice( # [0, 0, 1024 * 1024]), "db_write_buffer_size" : lambda: random.choice( - [0, 0, 0, 1024 * 1024, 8 * 1024 * 1024, 128 * 1024 * 1024]), + [0, 0, 0, 1024 * 1024, 8 * 1024 * 1024, 128 * 1024 * 1024, 1024 * 1024 * 1024]), "avoid_unnecessary_blocking_io" : random.randint(0, 1), "write_dbid_to_manifest" : random.randint(0, 1), "avoid_flush_during_recovery" : lambda: random.choice( @@ -159,8 +153,8 @@ "verify_checksum_one_in": 1000000, "verify_db_one_in": 100000, "continuous_verification_interval" : 0, - "max_key_len": 3, - "key_len_percent_dist": "1,30,69", + "max_key_len": 0, + "key_len_percent_dist": "0", "read_fault_one_in": lambda: random.choice([0, 32, 1000]), "open_metadata_write_fault_one_in": lambda: random.choice([0, 0, 8]), "open_write_fault_one_in": lambda: random.choice([0, 0, 16]), @@ -179,6 +173,14 @@ "adaptive_readahead": lambda: random.choice([0, 1]), "async_io": lambda: random.choice([0, 1]), "wal_compression": lambda: random.choice(["none", "zstd"]), + # cannot change seed between runs because the seed decides which keys are nonoverwrittenable + "seed": int(time.time() * 1000000) & 0xffffffff, + "verify_before_write": lambda: random.randrange(20) == 0, + "allow_concurrent_memtable_write": lambda: random.randint(0, 1), + # only done when thread#0 does TestAcquireSnapshot. + "compare_full_db_state_snapshot": lambda: random.choice([0, 0, 0, 1]), + "num_iterations": lambda: random.randint(0, 100), + "sync_wal_one_in": 100000, } _TEST_DIR_ENV_VAR = 'TEST_TMPDIR' @@ -201,6 +203,7 @@ def get_dbname(test_name): os.mkdir(dbname) return dbname + expected_values_dir = None def setup_expected_values_dir(): global expected_values_dir @@ -246,12 +249,40 @@ def is_direct_io_supported(dbname): return True +def generate_key_dist_and_len(params): + # check if user supplied key dist or len + if params["max_key_len"] == 0 and params["key_len_percent_dist"] != "0": + params["max_key_len"] = params["key_len_percent_dist"].count(",") + 1 + return + + if params["max_key_len"] == 0 and params["key_len_percent_dist"] == "0": + params["max_key_len"] = random.randint(1, 10) + + dist = random_distribution(params["max_key_len"] - 1) + params["key_len_percent_dist"] = ",".join(str(i) for i in dist) + + +# Randomly select unique points (cut_points) on the distribution range +# and set the distribution to the differences between these points. +# Inspired by the following post, with changes to disallow 0: +# https://math.stackexchange.com/questions/1276206/method-of-generating-random-numbers-that-sum-to-100-is-this-truly-random/1276225#1276225 +def random_distribution(cuts_count): + cut_points = set() + while len(cut_points) < cuts_count: + cut_points.add(random.randint(1, 100 - 1)) + dist = [] + for x in sorted(cut_points): + dist.append(x - sum(dist)) + dist.append(100 - sum(dist)) + return dist + + blackbox_default_params = { "disable_wal": lambda: random.choice([0, 0, 0, 1]), # total time for this script to test db_stress - "duration": 6000, + "duration": 4000, # time for one db_stress instance to run - "interval": 120, + "interval": 240, # since we will be killing anyway, use large value for ops_per_thread "ops_per_thread": 100000000, "reopen": 0, @@ -265,14 +296,13 @@ def is_direct_io_supported(dbname): # that ran with WAL disabled. "disable_wal": 0, "duration": 10000, - "log2_keys_per_lock": 10, + "disable_kill_points": False, "ops_per_thread": 200000, "random_kill_odd": 888887, "reopen": 20, } simple_default_params = { - "allow_concurrent_memtable_write": lambda: random.randint(0, 1), "column_families": 1, "experimental_mempurge_threshold": lambda: 10.0*random.random(), "max_background_compactions": 1, @@ -450,10 +480,12 @@ def is_direct_io_supported(dbname): "progress_reports": 0, } + def store_ops_supplied(params): for k in supplied_ops: supplied_ops[k] = params.get(k, -1) - + + # make sure sum of ops == 100. # value of -1 means that the op should be initialized. def randomize_operation_type_percentages(src_params): @@ -491,7 +523,8 @@ def randomize_operation_type_percentages(src_params): src_params.update(params) -def finalize_and_sanitize(src_params): + +def finalize_and_sanitize(src_params, counter): dest_params = dict([(k, v() if callable(v) else v) for (k, v) in src_params.items()]) if dest_params.get("compression_max_dict_bytes") == 0: @@ -500,6 +533,7 @@ def finalize_and_sanitize(src_params): if dest_params.get("compression_type") != "zstd": dest_params["compression_zstd_max_train_bytes"] = 0 if dest_params.get("allow_concurrent_memtable_write", 1) == 1: + # TODO: yuval- add hash_spd memtable dest_params["memtablerep"] = "skip_list" if dest_params["mmap_read"] == 1: dest_params["use_direct_io_for_flush_and_compaction"] = 0 @@ -562,6 +596,16 @@ def finalize_and_sanitize(src_params): if (dest_params.get("test_batches_snapshots", 0) == 1 and dest_params.get("enable_compaction_filter", 0) == 1): dest_params["enable_compaction_filter"] = 0 + if dest_params.get("read_only", 0) == 1: + if counter == 0: + dest_params["read_only"] = 0 + else: + dest_params["readpercent"] += dest_params["writepercent"] + dest_params["writepercent"] = 0 + dest_params["iterpercent"] += dest_params["delpercent"] + dest_params["delpercent"] = 0 + dest_params["iterpercent"] += dest_params["delrangepercent"] + dest_params["delrangepercent"] = 0 if dest_params.get("enable_compaction_filter", 0) == 1: # Compaction filter is incompatible with snapshots. Need to avoid taking # snapshots, as well as avoid operations that use snapshots for @@ -569,7 +613,7 @@ def finalize_and_sanitize(src_params): dest_params["acquire_snapshot_one_in"] = 0 dest_params["compact_range_one_in"] = 0 # Give the iterator ops away to reads. - dest_params["readpercent"] += dest_params.get("iterpercent", 10) + dest_params["readpercent"] += dest_params.get("iterpercent", 0) dest_params["iterpercent"] = 0 dest_params["test_batches_snapshots"] = 0 # this stops the ("prefix_size") == -1 check from changing the value @@ -590,6 +634,7 @@ def finalize_and_sanitize(src_params): dest_params["enable_pipelined_write"] = 0 return dest_params + def gen_cmd_params(args): params = {} @@ -630,18 +675,23 @@ def gen_cmd_params(args): for k, v in vars(args).items(): if v is not None: params[k] = v + + if params["max_key_len"] == 0 or params["key_len_percent_dist"] == "0": + generate_key_dist_and_len(params) + return params -def gen_cmd(params, unknown_params): - finalzied_params = finalize_and_sanitize(params) +def gen_cmd(params, unknown_params, counter): + finalzied_params = finalize_and_sanitize(params, counter) cmd = [stress_cmd] + [ '--{0}={1}'.format(k, v) for k, v in [(k, finalzied_params[k]) for k in sorted(finalzied_params)] if k not in set(['test_type', 'simple', 'duration', 'interval', 'random_kill_odd', 'cf_consistency', 'txn', 'test_best_efforts_recovery', 'enable_ts', - 'test_multiops_txn', 'write_policy', 'stress_cmd']) + 'test_multiops_txn', 'write_policy', 'stress_cmd', + 'disable_kill_points']) and v is not None] + unknown_params return cmd @@ -682,10 +732,12 @@ def inject_inconsistencies_to_db_dir(dir_path): with open(os.path.join(dir_path, fname), "w") as fd: fd.write("garbage") + DEADLY_SIGNALS = { signal.SIGABRT, signal.SIGBUS, signal.SIGFPE, signal.SIGILL, signal.SIGSEGV } + def execute_cmd(cmd, timeout): child = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE) @@ -714,6 +766,7 @@ def execute_cmd(cmd, timeout): return hit_timeout, child.returncode, outs.decode('utf-8'), errs.decode('utf-8') + # old copy of the db is kept at same src dir as new db. def copy_tree_and_remove_old(counter, dbname): dest = dbname + "_" + str(counter) @@ -723,6 +776,7 @@ def copy_tree_and_remove_old(counter, dbname): if counter > 1: shutil.rmtree(old_db, True) + def gen_narrow_cmd_params(args): params = {} params.update(narrow_params) @@ -740,6 +794,7 @@ def gen_narrow_cmd_params(args): return params + def narrow_crash_main(args, unknown_args): cmd_params = gen_narrow_cmd_params(args) dbname = get_dbname('narrow') @@ -753,7 +808,7 @@ def narrow_crash_main(args, unknown_args): while time.time() < exit_time: randomize_operation_type_percentages(cmd_params) - cmd = gen_cmd(dict(cmd_params, **{'db': dbname}), unknown_args) + cmd = gen_cmd(dict(cmd_params, **{'db': dbname}), unknown_args, counter) hit_timeout, retcode, outs, errs = execute_cmd(cmd, cmd_params['duration']) copy_tree_and_remove_old(counter, dbname) @@ -771,7 +826,8 @@ def narrow_crash_main(args, unknown_args): time.sleep(2) # time to stabilize before the next run shutil.rmtree(dbname, True) - + + # This script runs and kills db_stress multiple times. It checks consistency # in case of unsafe crashes in RocksDB. def blackbox_crash_main(args, unknown_args): @@ -779,6 +835,8 @@ def blackbox_crash_main(args, unknown_args): dbname = get_dbname('blackbox') exit_time = time.time() + cmd_params['duration'] + store_ops_supplied(cmd_params) + print("Running blackbox-crash-test with \n" + "interval_between_crash=" + str(cmd_params['interval']) + "\n" + "total-duration=" + str(cmd_params['duration']) + "\n") @@ -786,9 +844,8 @@ def blackbox_crash_main(args, unknown_args): counter = 0 while time.time() < exit_time: - cmd = gen_cmd(dict( - list(cmd_params.items()) - + list({'db': dbname}.items())), unknown_args) + randomize_operation_type_percentages(cmd_params) + cmd = gen_cmd(dict(cmd_params, **{'db': dbname}), unknown_args, counter) hit_timeout, retcode, outs, errs = execute_cmd(cmd, cmd_params['interval']) copy_tree_and_remove_old(counter, dbname) @@ -830,6 +887,8 @@ def whitebox_crash_main(args, unknown_args): exit_time = cur_time + cmd_params['duration'] half_time = cur_time + cmd_params['duration'] // 2 + store_ops_supplied(cmd_params) + print("Running whitebox-crash-test with \n" + "total-duration=" + str(cmd_params['duration']) + "\n") @@ -841,6 +900,8 @@ def whitebox_crash_main(args, unknown_args): counter = 0 while time.time() < exit_time: + if cmd_params["disable_kill_points"]: + check_mode = 3 if check_mode == 0: additional_opts = { # use large ops per thread since we will kill it anyway @@ -903,10 +964,8 @@ def whitebox_crash_main(args, unknown_args): "kill_random_test": None, "ops_per_thread": cmd_params['ops_per_thread'], } - - cmd = gen_cmd(dict(list(cmd_params.items()) - + list(additional_opts.items()) - + list({'db': dbname}.items())), unknown_args) + randomize_operation_type_percentages(cmd_params) + cmd = gen_cmd(dict(cmd_params, **{'db': dbname}, **additional_opts), unknown_args, counter) # If the running time is 15 minutes over the run time, explicit kill and # exit even if white box kill didn't hit. This is to guarantee run time @@ -963,10 +1022,14 @@ def whitebox_crash_main(args, unknown_args): # success shutil.rmtree(dbname, True) os.mkdir(dbname) - cmd_params.pop('expected_values_dir', None) + global expected_values_dir + if os.path.exists(expected_values_dir): + shutil.rmtree(expected_values_dir) + expected_values_dir = None check_mode = (check_mode + 1) % total_check_mode for ctr in range(max(0, counter - 2), counter): shutil.rmtree('{}_{}'.format(dbname, ctr)) + counter = 0 time.sleep(1) # time to stabilize after a kill @@ -1032,7 +1095,7 @@ def main(): if args.test_type == 'narrow': narrow_crash_main(args, unknown_args) # Only delete the `expected_values_dir` if test passes - if expected_values_dir is not None: + if expected_values_dir and os.path.exists(expected_values_dir): shutil.rmtree(expected_values_dir) if multiops_txn_key_spaces_file is not None: os.remove(multiops_txn_key_spaces_file) From f5978a89af82cd10502ddda0fc94c0a277ecd07d Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Tue, 14 Jun 2022 13:36:09 +0300 Subject: [PATCH 051/226] SPDB-495: crash_test: disable test_batches_snapshots when cf_consistency is on running with both options, the stress test chosen is cf_consistency_stress which does not use '0' - '9' as prefix for keys as in batched_ops_stress. when doing compare_full_db_state_snapshot, the code expects each key to have the prefix since test_batches_snapshots==true. there is no point when both flags are on since each is run as a different stress test. --- tools/db_crashtest.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index 2aafd878f7..aeb64bdc20 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -334,6 +334,7 @@ def random_distribution(cuts_count): # Snapshots are used heavily in this test mode, while they are incompatible # with compaction filter. "enable_compaction_filter": 0, + "test_batches_snapshots": 0, } txn_params = { From d2d6e41e760b9decfeb0aa422a299c11823151fa Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Thu, 20 Jan 2022 13:24:29 +0200 Subject: [PATCH 052/226] SPDB-469: db_stress: add data_block_index_type user can now switch between kDataBlockBinarySearch and kDataBlockBinaryAndHash --- db_stress_tool/db_stress_common.h | 2 ++ db_stress_tool/db_stress_gflags.cc | 8 ++++++++ db_stress_tool/db_stress_test_base.cc | 9 +++++++++ tools/db_crashtest.py | 2 ++ 4 files changed, 21 insertions(+) diff --git a/db_stress_tool/db_stress_common.h b/db_stress_tool/db_stress_common.h index d2b1ae4fc8..b5e0a964b2 100644 --- a/db_stress_tool/db_stress_common.h +++ b/db_stress_tool/db_stress_common.h @@ -238,6 +238,8 @@ DECLARE_int32(verify_db_one_in); DECLARE_int32(continuous_verification_interval); DECLARE_int32(get_property_one_in); DECLARE_string(file_checksum_impl); +DECLARE_int32(data_block_index_type); +DECLARE_double(data_block_hash_table_util_ratio); #ifndef ROCKSDB_LITE // Options for StackableDB-based BlobDB diff --git a/db_stress_tool/db_stress_gflags.cc b/db_stress_tool/db_stress_gflags.cc index 8b92f93321..9e01c6181c 100644 --- a/db_stress_tool/db_stress_gflags.cc +++ b/db_stress_tool/db_stress_gflags.cc @@ -927,4 +927,12 @@ DEFINE_bool( DEFINE_string(wal_compression, "none", "Algorithm to use for WAL compression. none to disable."); +DEFINE_int32(data_block_index_type, 1, + "The index type that will be used for the data block " + "0 for kDataBlockBinarySearch and 1 for kDataBlockBinaryAndHash."); + +DEFINE_double(data_block_hash_table_util_ratio, 0.75, + "util ratio for data block hash index table. " + "This is only valid if use_data_block_hash_index is " + "set to true"); #endif // GFLAGS diff --git a/db_stress_tool/db_stress_test_base.cc b/db_stress_tool/db_stress_test_base.cc index c58b376aef..141a5762e4 100644 --- a/db_stress_tool/db_stress_test_base.cc +++ b/db_stress_tool/db_stress_test_base.cc @@ -2313,6 +2313,10 @@ void StressTest::PrintEnv() const { static_cast(FLAGS_user_timestamp_size)); fprintf(stdout, "WAL compression : %s\n", FLAGS_wal_compression.c_str()); + fprintf(stdout, "data_block_index_type : %d\n", + static_cast(FLAGS_data_block_index_type)); + fprintf(stdout, "data_block_hash_table_util_ratio : %f\n", + static_cast(FLAGS_data_block_hash_table_util_ratio)); fprintf(stdout, "------------------------------------------------\n"); } @@ -2353,6 +2357,11 @@ void StressTest::Open() { block_based_options.prepopulate_block_cache = static_cast( FLAGS_prepopulate_block_cache); + block_based_options.data_block_index_type = + static_cast( + FLAGS_data_block_index_type); + block_based_options.data_block_hash_table_util_ratio = + static_cast(FLAGS_data_block_hash_table_util_ratio); options_.table_factory.reset( NewBlockBasedTableFactory(block_based_options)); options_.db_write_buffer_size = FLAGS_db_write_buffer_size; diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index aeb64bdc20..ba8aa017fe 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -181,6 +181,8 @@ "compare_full_db_state_snapshot": lambda: random.choice([0, 0, 0, 1]), "num_iterations": lambda: random.randint(0, 100), "sync_wal_one_in": 100000, + "data_block_index_type": random.randint(0, 1), + "data_block_hash_table_util_ratio": random.randint(0, 100) / 100.0, } _TEST_DIR_ENV_VAR = 'TEST_TMPDIR' From 87feb2b19d5ee998b3998cb1af7bc0f7d979a1fe Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Mon, 27 Jun 2022 09:07:10 +0300 Subject: [PATCH 053/226] stress_test: fix test_cf_consistency msg and .. also fix handling of customopspercent which atm is only applicable to test_multiops_txn by making sure its 0 in all the other configs. --- db_stress_tool/db_stress_gflags.cc | 2 +- tools/db_crashtest.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/db_stress_tool/db_stress_gflags.cc b/db_stress_tool/db_stress_gflags.cc index 9e01c6181c..d1f33db262 100644 --- a/db_stress_tool/db_stress_gflags.cc +++ b/db_stress_tool/db_stress_gflags.cc @@ -88,7 +88,7 @@ DEFINE_bool(atomic_flush, false, DEFINE_bool(test_cf_consistency, false, "If set, runs the stress test dedicated to verifying writes to " "multiple column families are consistent. Setting this implies " - "`atomic_flush=true` is set true if `disable_wal=false`.\n"); + "`atomic_flush=true` is set true if `disable_wal=true`.\n"); DEFINE_bool(test_multi_ops_txns, false, "If set, runs stress test dedicated to verifying multi-ops " diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index ba8aa017fe..b3bda51e5c 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -183,6 +183,7 @@ "sync_wal_one_in": 100000, "data_block_index_type": random.randint(0, 1), "data_block_hash_table_util_ratio": random.randint(0, 100) / 100.0, + "customopspercent": 0, } _TEST_DIR_ENV_VAR = 'TEST_TMPDIR' From 4fa1f437e99c63ef3aba6a0b097c3de03c14e37f Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Thu, 30 Jun 2022 11:58:25 +0300 Subject: [PATCH 054/226] 38 update new issues template to a generic template (#39) * Update issue_template.md * Delete issue_template.md --- issue_template.md | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 issue_template.md diff --git a/issue_template.md b/issue_template.md deleted file mode 100644 index ca52f5ead0..0000000000 --- a/issue_template.md +++ /dev/null @@ -1,7 +0,0 @@ -> Note: Please use Issues only for bug reports. For questions, discussions, feature requests, etc. post to dev group: https://groups.google.com/forum/#!forum/rocksdb or https://www.facebook.com/groups/rocksdb.dev - -### Expected behavior - -### Actual behavior - -### Steps to reproduce the behavior From 430d4963377c7d732fea124b945960a5001dba1e Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 12:59:37 +0300 Subject: [PATCH 055/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 6d6b5bdf8c..16ccc38593 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -6,7 +6,7 @@ on: [pull_request, workflow_dispatch] jobs: build: - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64, myrunner] strategy: matrix: include: From 55e57eb725bf6d200e2cd8b2acd27285ff1b8d14 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 13:59:20 +0300 Subject: [PATCH 056/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 278ddaf95d..1cac9cb447 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -3,7 +3,7 @@ on: [push, pull_request, workflow_call] jobs: check: name: Check TARGETS file and code format - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64, myrunner] steps: - name: Checkout feature branch uses: actions/checkout@v2 From 75f3ec5bca3b419a8b6a8cc621a841a31f4d3616 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:02:14 +0300 Subject: [PATCH 057/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 1cac9cb447..95029f779c 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -4,6 +4,8 @@ jobs: check: name: Check TARGETS file and code format runs-on: [self-hosted, linux, x64, myrunner] + container: + image: ubuntu:18.04 steps: - name: Checkout feature branch uses: actions/checkout@v2 From 5a890ba46eb3c6aed0709d82a8dc3cb571981988 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:03:10 +0300 Subject: [PATCH 058/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 95029f779c..3deae6fb54 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -14,6 +14,7 @@ jobs: - name: Fetch from upstream run: | + apt update && install git git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream - name: Where am I From 3b21ce4a99cdf9d5515e482252eaa67ad3c33000 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:04:29 +0300 Subject: [PATCH 059/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 3deae6fb54..583a851f60 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -14,7 +14,7 @@ jobs: - name: Fetch from upstream run: | - apt update && install git + apt update && apt install git git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream - name: Where am I From 78eda82c124b26944a2c05b3f129328989d2aeec Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:05:29 +0300 Subject: [PATCH 060/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 583a851f60..f7ee18f5ca 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -14,7 +14,7 @@ jobs: - name: Fetch from upstream run: | - apt update && apt install git + apt update && apt install -y git git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream - name: Where am I From 33d5e9c6560708ce75562d4f30745f7a75800c80 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:07:24 +0300 Subject: [PATCH 061/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index f7ee18f5ca..2e7dc4092d 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -7,6 +7,10 @@ jobs: container: image: ubuntu:18.04 steps: + + - name: pre + run: apt update && apt install -y git + - name: Checkout feature branch uses: actions/checkout@v2 with: @@ -14,7 +18,6 @@ jobs: - name: Fetch from upstream run: | - apt update && apt install -y git git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream - name: Where am I From da0b9aaf7550f349b063a4d7ee602619a971dc0b Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:10:13 +0300 Subject: [PATCH 062/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 2e7dc4092d..7a657f828c 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -5,11 +5,11 @@ jobs: name: Check TARGETS file and code format runs-on: [self-hosted, linux, x64, myrunner] container: - image: ubuntu:18.04 + image: ubuntu:20.04 steps: - name: pre - run: apt update && apt install -y git + run: apt update && apt install -y sudo git - name: Checkout feature branch uses: actions/checkout@v2 From ac592b39aaa4ec8c578be1033d43fa3895bbec5d Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:11:31 +0300 Subject: [PATCH 063/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 7a657f828c..c0ea68f64f 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -18,6 +18,7 @@ jobs: - name: Fetch from upstream run: | + git config --global --add safe.directory $GITHUB_WORKSPACE git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream - name: Where am I From dd30aefd7f4dda8255134795e2c973b20004a339 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:12:56 +0300 Subject: [PATCH 064/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index c0ea68f64f..e7133ac0f5 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -5,7 +5,7 @@ jobs: name: Check TARGETS file and code format runs-on: [self-hosted, linux, x64, myrunner] container: - image: ubuntu:20.04 + image: ubuntu:latest steps: - name: pre From e047c97966fc58e32fd637d887f5fa755f331f18 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:13:53 +0300 Subject: [PATCH 065/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index e7133ac0f5..25d17b1ed9 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -18,7 +18,7 @@ jobs: - name: Fetch from upstream run: | - git config --global --add safe.directory $GITHUB_WORKSPACE +# git config --global --add safe.directory $GITHUB_WORKSPACE git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream - name: Where am I From b766dc54864b5de9c78ace0684ebcdab6ef839c8 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:14:20 +0300 Subject: [PATCH 066/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 25d17b1ed9..7f0c831d1c 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -18,7 +18,6 @@ jobs: - name: Fetch from upstream run: | -# git config --global --add safe.directory $GITHUB_WORKSPACE git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream - name: Where am I From d94f1c9fa145369e68ae5f6d84626388962e84a7 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:15:25 +0300 Subject: [PATCH 067/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 7f0c831d1c..ba66c7289a 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -19,6 +19,7 @@ jobs: - name: Fetch from upstream run: | git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream + git config --global --add safe.directory $GITHUB_WORKSPACE - name: Where am I run: | From ccca569fe73425ca422a21c7b77736ddbdbe810f Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:18:29 +0300 Subject: [PATCH 068/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index ba66c7289a..6cfe7e6132 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -29,6 +29,8 @@ jobs: - name: Setup Python uses: actions/setup-python@v1 + with: + python-version: '3.9' - name: Install Dependencies run: python -m pip install --upgrade pip From 3ab5f0d7d34e60fd26b788fe8862ca4e9d2bc543 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:20:48 +0300 Subject: [PATCH 069/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 6cfe7e6132..112b9e1fad 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -31,6 +31,7 @@ jobs: uses: actions/setup-python@v1 with: python-version: '3.9' + architecture: 'x64' - name: Install Dependencies run: python -m pip install --upgrade pip From 9ba74d570d5fc871213d56bcdb65c203ae81d44b Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:21:29 +0300 Subject: [PATCH 070/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 112b9e1fad..1f37694ed2 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -30,7 +30,6 @@ jobs: - name: Setup Python uses: actions/setup-python@v1 with: - python-version: '3.9' architecture: 'x64' - name: Install Dependencies From a5cca6e81a8891c084e9789778be734ab1bb7a35 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:22:22 +0300 Subject: [PATCH 071/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 1f37694ed2..df7561e89b 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -30,6 +30,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v1 with: + python-version: '3.x' architecture: 'x64' - name: Install Dependencies From 92eea7c37f5c88842ffad0340e04627adefdb717 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:23:12 +0300 Subject: [PATCH 072/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index df7561e89b..f23399efd9 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -28,7 +28,7 @@ jobs: echo git branch && git branch - name: Setup Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v4 with: python-version: '3.x' architecture: 'x64' From 4c1d2039c63addf99c50b307368286041aa12cf0 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:24:21 +0300 Subject: [PATCH 073/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index f23399efd9..a29e4163b3 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -9,7 +9,7 @@ jobs: steps: - name: pre - run: apt update && apt install -y sudo git + run: apt update && apt install -y sudo git make - name: Checkout feature branch uses: actions/checkout@v2 From d7fc88b4c835ff3595985a394bc4e07bbb58e311 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 15:47:08 +0300 Subject: [PATCH 074/226] Update test_fuzz.yml --- .github/workflows/test_fuzz.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_fuzz.yml b/.github/workflows/test_fuzz.yml index 569a8d35db..4e71964066 100644 --- a/.github/workflows/test_fuzz.yml +++ b/.github/workflows/test_fuzz.yml @@ -6,7 +6,7 @@ on: jobs: fuzz: - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64, myrunner] container: image: ubuntu:18.04 strategy: From 96bd26cc6e99475d7241efb0523356dfed810a73 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 15:49:14 +0300 Subject: [PATCH 075/226] Delete fuzz.yml --- .github/workflows/fuzz.yml | 171 ------------------------------------- 1 file changed, 171 deletions(-) delete mode 100644 .github/workflows/fuzz.yml diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml deleted file mode 100644 index 453a335b26..0000000000 --- a/.github/workflows/fuzz.yml +++ /dev/null @@ -1,171 +0,0 @@ -name: fuzz-test - -on: - workflow_dispatch: - workflow_call: - -jobs: - fuzz-build: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - - steps: - - uses: actions/checkout@v3 - - - name: Pre-build - run: apt update && apt install -y sudo python3 git clang-tools cmake make automake libtool gettext pkg-config build-essential clang-10 zlib1g-dev libbz2-dev ninja-build liblzma-dev autoconf libsnappy-dev libzstd-dev liblz4-dev binutils m4 g++-10 - - - name: fuzbuild - run: | - #repo="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" - #echo repo $repo - #git remote add origin $repo - echo "test" - pwd - echo 'git clone https://github.com/google/libprotobuf-mutator.git \n - cd libprotobuf-mutator \n - git checkout ffd86a32874e5c08a143019aad1aaf0907294c9f \n - cd .. \n - export CC=clang && export CXX=clang++ && mkdir LPM && cd LPM \n - ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so \n - ln -s /usr/bin/clang-10 /usr/bin/clang \n - ln -s /usr/bin/clang++-10 /usr/bin/clang++ \n - cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release \n - ninja \n - ninja install \n - export PKG_CONFIG_PATH=$PWD:$PWD/external.protobuf/lib/pkgconfig/ \n - export PATH=$PWD/external.protobuf/bin:$PATH \n - cd $GITHUB_WORKSPACE \n - git fetch \n - git checkout master \n - COMPILE_WITH_ASAN=1 make -j2 static_lib \n - cd $GITHUB_WORKSPACE/fuzz \n - make db_map_fuzzer \n - make db_fuzzer \n - ls -alFh $GITHUB_WORKSPACE/fuzz/ \n - echo ASAN_OPTIONS=detect_leaks=0 ./db_fuzzer \n' > prepfuz.sh - cat prepfuz.sh - chmod +x prepfuz.sh - bash -xv prepfuz.sh - - - name: Upload db_map_fuzzer Artifact - uses: actions/upload-artifact@v3.1.0 - with: - name: db_map_fuzzer - path: | - ${{ github.workspace }}/fuzz/db_map_fuzzer - retention-days: 1 - - - name: Upload db_fuzzer Artifact - uses: actions/upload-artifact@v3.1.0 - with: - name: db_fuzzer - path: | - ${{ github.workspace }}/fuzz/db_fuzzer - retention-days: 1 - - - db_fuzzer: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - continue-on-error: true - needs: [fuzz-build] - - steps: - - uses: actions/checkout@v3 - - - name: Download a Build Artifact - uses: actions/download-artifact@v3.0.0 - with: - name: db_fuzzer - path: ${{ github.workspace }}/fuzz/db_fuzzer - - - name: Pre-build - run: | - apt update && apt install -y libtool sudo gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 - mkdir -p $GITHUB_WORKSPACE/out - - - name: dbfuzzer - run: | - ls -l $GITHUB_WORKSPACE/out - ls -alFh $GITHUB_WORKSPACE/fuzz - sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" - sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_fuzzer/db_fuzzer" - chmod 777 $GITHUB_WORKSPACE/fuzz/db_fuzzer/db_fuzzer - whoami - ls -alFh $GITHUB_WORKSPACE/fuzz/db_fuzzer - ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_fuzzer/db_fuzzer 2>&1 | sudo tee $GITHUB_WORKSPACE/out/db_fuzzer.log - ls -l $GITHUB_WORKSPACE/out/ - - - name: Upload a Build Artifact - uses: actions/upload-artifact@v3.1.0 - with: - path: ${{ github.workspace }}/out/db_fuzzer.log - retention-days: 1 - - db_map_fuzzer: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - continue-on-error: true - needs: [fuzz-build] - - steps: - - uses: actions/checkout@v3 - - - name: Download a Build Artifact - uses: actions/download-artifact@v3.0.0 - with: - name: db_map_fuzzer - path: ${{ github.workspace }}/fuzz/db_map_fuzzer - - - name: Pre-build - run: | - apt update && apt install -y sudo libtool gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 - mkdir -p $GITHUB_WORKSPACE/out/ - - - name: dbmapfuzzer - run: | - ls -l $GITHUB_WORKSPACE/out/ - sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" - sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_map_fuzzer/db_map_fuzzer" - chmod 777 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer/db_map_fuzzer - whoami - ls -alFh $GITHUB_WORKSPACE/fuzz/db_map_fuzzer - ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer/db_map_fuzzer 2>&1 | tee $GITHUB_WORKSPACE/out/db_map_fuzzer.log - - - name: Upload a Build Artifact - uses: actions/upload-artifact@v3.1.0 - with: - path: ${{ github.workspace }}/out/db_map_fuzzer.log - retention-days: 1 - - fuzzer_sum: - runs-on: ubuntu-18.04 - container: - image: alpine:3.14 - needs: [db_map_fuzzer, db_fuzzer] - - steps: - - uses: actions/checkout@v3 - - - name: Download a Build Artifact - uses: actions/download-artifact@v3.0.0 - with: - path: | - ${{ github.workspace }}/out/db_fuzzer.log - - - name: Download a Build Artifact - uses: actions/download-artifact@v3.0.0 - with: - path: | - ${{ github.workspace }}/out/db_map_fuzzer.log - - - name: fuzzersum - run: | - echo "~~~~ db_map_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log/artifact/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skoot" - echo "~~~~ db_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log/artifact/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skid" From de7ab519ae842db637139a4052eec4b2aedbe49f Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 30 Jun 2022 15:49:23 +0300 Subject: [PATCH 076/226] Delete aws-test.yml --- .github/workflows/aws-test.yml | 65 ---------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 .github/workflows/aws-test.yml diff --git a/.github/workflows/aws-test.yml b/.github/workflows/aws-test.yml deleted file mode 100644 index 790a280442..0000000000 --- a/.github/workflows/aws-test.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: aws-test - -on: - workflow_dispatch: - -jobs: - fuzzer_sum: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - - steps: - - uses: actions/checkout@v3 - - - name: pre - run: | - apt update && apt install -y sudo unzip curl - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" - unzip awscliv2.zip - sudo ./aws/install - - - name: Configure AWS credentials from Test account - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: eu-west-2 - - - name: download db_fuzzer.log from s3 - run: | - mkdir -p $GITHUB_WORKSPACE/out - aws s3 cp s3://spdb-github-ci/db_fuzzer.log $GITHUB_WORKSPACE/out/db_fuzzer.log - ls -alFh $GITHUB_WORKSPACE/out - - - name: download db_map_fuzzer.log from s3 - run: | - mkdir -p $GITHUB_WORKSPACE/out - aws s3 cp s3://spdb-github-ci/db_map_fuzzer.log $GITHUB_WORKSPACE/out/db_map_fuzzer.log - ls -alFh $GITHUB_WORKSPACE/out - -# - name: Download a Build Artifact -# uses: actions/download-artifact@v3.0.0 -# with: -# path: | -# ${{ github.workspace }}/out/db_fuzzer.log - -# - name: Download a Build Artifact -# uses: actions/download-artifact@v3.0.0 -# with: -# path: | -# ${{ github.workspace }}/out/db_map_fuzzer.log - - - name: fuzzersum - run: | - echo "~~~~ db_map_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skoot" - echo "~~~~ db_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skid" - - - name: clear s3 bucket - run: | - mkdir -p $GITHUB_WORKSPACE/down - aws s3 rm s3://spdb-github-ci/ --recursive --include "*" - - From e9306e6bba743b386a34c0e3d5bffb7fe59397a4 Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Sun, 3 Jul 2022 12:41:42 +0300 Subject: [PATCH 077/226] CI: Merge pull request #40 from speedb-io/devops-dev Implement self-hosted runners on actions --- .github/workflows/aws-test.yml | 65 ---------- .github/workflows/ci_pipeline.yml | 2 +- .github/workflows/fuzz.yml | 171 ------------------------- .github/workflows/new_release_line.yml | 4 +- .github/workflows/sanity_check.yml | 14 +- .github/workflows/test_fuzz.yml | 2 +- 6 files changed, 16 insertions(+), 242 deletions(-) delete mode 100644 .github/workflows/aws-test.yml delete mode 100644 .github/workflows/fuzz.yml diff --git a/.github/workflows/aws-test.yml b/.github/workflows/aws-test.yml deleted file mode 100644 index 790a280442..0000000000 --- a/.github/workflows/aws-test.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: aws-test - -on: - workflow_dispatch: - -jobs: - fuzzer_sum: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - - steps: - - uses: actions/checkout@v3 - - - name: pre - run: | - apt update && apt install -y sudo unzip curl - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" - unzip awscliv2.zip - sudo ./aws/install - - - name: Configure AWS credentials from Test account - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: eu-west-2 - - - name: download db_fuzzer.log from s3 - run: | - mkdir -p $GITHUB_WORKSPACE/out - aws s3 cp s3://spdb-github-ci/db_fuzzer.log $GITHUB_WORKSPACE/out/db_fuzzer.log - ls -alFh $GITHUB_WORKSPACE/out - - - name: download db_map_fuzzer.log from s3 - run: | - mkdir -p $GITHUB_WORKSPACE/out - aws s3 cp s3://spdb-github-ci/db_map_fuzzer.log $GITHUB_WORKSPACE/out/db_map_fuzzer.log - ls -alFh $GITHUB_WORKSPACE/out - -# - name: Download a Build Artifact -# uses: actions/download-artifact@v3.0.0 -# with: -# path: | -# ${{ github.workspace }}/out/db_fuzzer.log - -# - name: Download a Build Artifact -# uses: actions/download-artifact@v3.0.0 -# with: -# path: | -# ${{ github.workspace }}/out/db_map_fuzzer.log - - - name: fuzzersum - run: | - echo "~~~~ db_map_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skoot" - echo "~~~~ db_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skid" - - - name: clear s3 bucket - run: | - mkdir -p $GITHUB_WORKSPACE/down - aws s3 rm s3://spdb-github-ci/ --recursive --include "*" - - diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 6d6b5bdf8c..16ccc38593 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -6,7 +6,7 @@ on: [pull_request, workflow_dispatch] jobs: build: - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64, myrunner] strategy: matrix: include: diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml deleted file mode 100644 index 453a335b26..0000000000 --- a/.github/workflows/fuzz.yml +++ /dev/null @@ -1,171 +0,0 @@ -name: fuzz-test - -on: - workflow_dispatch: - workflow_call: - -jobs: - fuzz-build: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - - steps: - - uses: actions/checkout@v3 - - - name: Pre-build - run: apt update && apt install -y sudo python3 git clang-tools cmake make automake libtool gettext pkg-config build-essential clang-10 zlib1g-dev libbz2-dev ninja-build liblzma-dev autoconf libsnappy-dev libzstd-dev liblz4-dev binutils m4 g++-10 - - - name: fuzbuild - run: | - #repo="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" - #echo repo $repo - #git remote add origin $repo - echo "test" - pwd - echo 'git clone https://github.com/google/libprotobuf-mutator.git \n - cd libprotobuf-mutator \n - git checkout ffd86a32874e5c08a143019aad1aaf0907294c9f \n - cd .. \n - export CC=clang && export CXX=clang++ && mkdir LPM && cd LPM \n - ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so \n - ln -s /usr/bin/clang-10 /usr/bin/clang \n - ln -s /usr/bin/clang++-10 /usr/bin/clang++ \n - cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release \n - ninja \n - ninja install \n - export PKG_CONFIG_PATH=$PWD:$PWD/external.protobuf/lib/pkgconfig/ \n - export PATH=$PWD/external.protobuf/bin:$PATH \n - cd $GITHUB_WORKSPACE \n - git fetch \n - git checkout master \n - COMPILE_WITH_ASAN=1 make -j2 static_lib \n - cd $GITHUB_WORKSPACE/fuzz \n - make db_map_fuzzer \n - make db_fuzzer \n - ls -alFh $GITHUB_WORKSPACE/fuzz/ \n - echo ASAN_OPTIONS=detect_leaks=0 ./db_fuzzer \n' > prepfuz.sh - cat prepfuz.sh - chmod +x prepfuz.sh - bash -xv prepfuz.sh - - - name: Upload db_map_fuzzer Artifact - uses: actions/upload-artifact@v3.1.0 - with: - name: db_map_fuzzer - path: | - ${{ github.workspace }}/fuzz/db_map_fuzzer - retention-days: 1 - - - name: Upload db_fuzzer Artifact - uses: actions/upload-artifact@v3.1.0 - with: - name: db_fuzzer - path: | - ${{ github.workspace }}/fuzz/db_fuzzer - retention-days: 1 - - - db_fuzzer: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - continue-on-error: true - needs: [fuzz-build] - - steps: - - uses: actions/checkout@v3 - - - name: Download a Build Artifact - uses: actions/download-artifact@v3.0.0 - with: - name: db_fuzzer - path: ${{ github.workspace }}/fuzz/db_fuzzer - - - name: Pre-build - run: | - apt update && apt install -y libtool sudo gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 - mkdir -p $GITHUB_WORKSPACE/out - - - name: dbfuzzer - run: | - ls -l $GITHUB_WORKSPACE/out - ls -alFh $GITHUB_WORKSPACE/fuzz - sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" - sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_fuzzer/db_fuzzer" - chmod 777 $GITHUB_WORKSPACE/fuzz/db_fuzzer/db_fuzzer - whoami - ls -alFh $GITHUB_WORKSPACE/fuzz/db_fuzzer - ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_fuzzer/db_fuzzer 2>&1 | sudo tee $GITHUB_WORKSPACE/out/db_fuzzer.log - ls -l $GITHUB_WORKSPACE/out/ - - - name: Upload a Build Artifact - uses: actions/upload-artifact@v3.1.0 - with: - path: ${{ github.workspace }}/out/db_fuzzer.log - retention-days: 1 - - db_map_fuzzer: - runs-on: ubuntu-latest - container: - image: ubuntu:18.04 - continue-on-error: true - needs: [fuzz-build] - - steps: - - uses: actions/checkout@v3 - - - name: Download a Build Artifact - uses: actions/download-artifact@v3.0.0 - with: - name: db_map_fuzzer - path: ${{ github.workspace }}/fuzz/db_map_fuzzer - - - name: Pre-build - run: | - apt update && apt install -y sudo libtool gettext pkg-config libsnappy-dev libzstd-dev liblz4-dev binutils m4 - mkdir -p $GITHUB_WORKSPACE/out/ - - - name: dbmapfuzzer - run: | - ls -l $GITHUB_WORKSPACE/out/ - sudo chown -R $USER:$USER "$GITHUB_WORKSPACE" - sudo chown $USER:$USER "$GITHUB_WORKSPACE/fuzz/db_map_fuzzer/db_map_fuzzer" - chmod 777 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer/db_map_fuzzer - whoami - ls -alFh $GITHUB_WORKSPACE/fuzz/db_map_fuzzer - ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/db_map_fuzzer/db_map_fuzzer 2>&1 | tee $GITHUB_WORKSPACE/out/db_map_fuzzer.log - - - name: Upload a Build Artifact - uses: actions/upload-artifact@v3.1.0 - with: - path: ${{ github.workspace }}/out/db_map_fuzzer.log - retention-days: 1 - - fuzzer_sum: - runs-on: ubuntu-18.04 - container: - image: alpine:3.14 - needs: [db_map_fuzzer, db_fuzzer] - - steps: - - uses: actions/checkout@v3 - - - name: Download a Build Artifact - uses: actions/download-artifact@v3.0.0 - with: - path: | - ${{ github.workspace }}/out/db_fuzzer.log - - - name: Download a Build Artifact - uses: actions/download-artifact@v3.0.0 - with: - path: | - ${{ github.workspace }}/out/db_map_fuzzer.log - - - name: fuzzersum - run: | - echo "~~~~ db_map_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log/artifact/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skoot" - echo "~~~~ db_fuzzer LOGS ~~~~~" - tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log/artifact/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "skid" diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml index c7bf046a74..4a60817dc7 100644 --- a/.github/workflows/new_release_line.yml +++ b/.github/workflows/new_release_line.yml @@ -4,9 +4,9 @@ on: workflow_dispatch: inputs: new_branch_major: - description: 'New branch Major' + description: "Next release Major version (LEAVE EMPTY FOR AUTO-INCREMENT)" new_branch_minor: - description: 'New branch Minor' + description: "Next release Minor version (LEAVE EMPTY FOR AUTO-INCREMENT)" jobs: diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 278ddaf95d..a29e4163b3 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -3,8 +3,14 @@ on: [push, pull_request, workflow_call] jobs: check: name: Check TARGETS file and code format - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64, myrunner] + container: + image: ubuntu:latest steps: + + - name: pre + run: apt update && apt install -y sudo git make + - name: Checkout feature branch uses: actions/checkout@v2 with: @@ -13,6 +19,7 @@ jobs: - name: Fetch from upstream run: | git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream + git config --global --add safe.directory $GITHUB_WORKSPACE - name: Where am I run: | @@ -21,7 +28,10 @@ jobs: echo git branch && git branch - name: Setup Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v4 + with: + python-version: '3.x' + architecture: 'x64' - name: Install Dependencies run: python -m pip install --upgrade pip diff --git a/.github/workflows/test_fuzz.yml b/.github/workflows/test_fuzz.yml index 569a8d35db..4e71964066 100644 --- a/.github/workflows/test_fuzz.yml +++ b/.github/workflows/test_fuzz.yml @@ -6,7 +6,7 @@ on: jobs: fuzz: - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64, myrunner] container: image: ubuntu:18.04 strategy: From f613e2a3e80785fcd62bdad4563f3551dfa34e2c Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 11:43:57 +0300 Subject: [PATCH 078/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index 07a3d5ffbc..62e7472c91 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -18,7 +18,7 @@ env: jobs: test: - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64, myrunner] strategy: matrix: include: From 330e7c1dbd85d61fc826075b9677e2582c9d5593 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 12:04:11 +0300 Subject: [PATCH 079/226] Create full-tests.yml --- .github/workflows/full-tests.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index 62e7472c91..4d71e0853a 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -19,6 +19,8 @@ env: jobs: test: runs-on: [self-hosted, linux, x64, myrunner] + container: + image: ubuntu:18:04 strategy: matrix: include: @@ -37,7 +39,7 @@ jobs: - name: Pre run: | df -H - sudo apt-get update -y && sudo apt-get install -y clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" + sudo apt-get update -y && sudo apt-get install -y sudo clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" sudo mv /usr/bin/parallel /usr/bin/gnu_parallel sudo rm -rf /etc/parallel/config || echo "" sudo apt-get install moreutils From 7037f0e12895c9482739b915cfe411853ba7005b Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 12:10:25 +0300 Subject: [PATCH 080/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index 4d71e0853a..d273832bdc 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -20,7 +20,7 @@ jobs: test: runs-on: [self-hosted, linux, x64, myrunner] container: - image: ubuntu:18:04 + image: ubuntu:18.04 strategy: matrix: include: From fb43a7cfad2b06eec46aa6ebb9f20a9c28566a7a Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 12:11:52 +0300 Subject: [PATCH 081/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index d273832bdc..92497c3434 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -39,7 +39,8 @@ jobs: - name: Pre run: | df -H - sudo apt-get update -y && sudo apt-get install -y sudo clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" + + apt-get update -y && apt-get install -y clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" sudo mv /usr/bin/parallel /usr/bin/gnu_parallel sudo rm -rf /etc/parallel/config || echo "" sudo apt-get install moreutils From 7811a614fd90482836397f27f967e361f8fccd89 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 12:14:01 +0300 Subject: [PATCH 082/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index 92497c3434..a1b3780d39 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -40,7 +40,7 @@ jobs: run: | df -H - apt-get update -y && apt-get install -y clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" + apt-get update -y && apt-get sudo install -y clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" sudo mv /usr/bin/parallel /usr/bin/gnu_parallel sudo rm -rf /etc/parallel/config || echo "" sudo apt-get install moreutils From 69b93ed8d7d6afbe5c0ab4ef6fe807c78629ecef Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 12:15:44 +0300 Subject: [PATCH 083/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index a1b3780d39..fabf4816ba 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -40,7 +40,7 @@ jobs: run: | df -H - apt-get update -y && apt-get sudo install -y clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" + apt-get update -y && apt-get install -y sudo clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" sudo mv /usr/bin/parallel /usr/bin/gnu_parallel sudo rm -rf /etc/parallel/config || echo "" sudo apt-get install moreutils From b0488d090c5a134e08f5f06550a4651d63bae0e3 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 12:22:32 +0300 Subject: [PATCH 084/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index fabf4816ba..87ee1c20d4 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -40,9 +40,8 @@ jobs: run: | df -H - apt-get update -y && apt-get install -y sudo clang-format parallel g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" + apt-get update -y && apt-get install -y sudo clang-format parallel moreutils g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" sudo mv /usr/bin/parallel /usr/bin/gnu_parallel sudo rm -rf /etc/parallel/config || echo "" - sudo apt-get install moreutils - name: ${{ matrix.name }} run: ${{ matrix.command }} From 0c87e97e3c3c164f2395256b8b9ae2a6c9d6efde Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Tue, 6 Apr 2021 11:16:02 +0300 Subject: [PATCH 085/226] git: add clangd cache to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 7d6f61affa..0ad634556a 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ rocksdb.pc CMakeCache.txt CMakeFiles/ build/ +.cache/ ldb manifest_dump From e62135c22312f59075a00e1ef4d0bf203fa6c0b2 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Thu, 25 Mar 2021 10:52:39 +0200 Subject: [PATCH 086/226] db_impl: use unique_ptr in DBImpl::Open for nicer memory management --- db/db_impl/db_impl_open.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/db/db_impl/db_impl_open.cc b/db/db_impl/db_impl_open.cc index 0377a7a5c3..64896cba47 100644 --- a/db/db_impl/db_impl_open.cc +++ b/db/db_impl/db_impl_open.cc @@ -1701,7 +1701,8 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, std::max(max_write_buffer_size, cf.options.write_buffer_size); } - DBImpl* impl = new DBImpl(db_options, dbname, seq_per_batch, batch_per_txn); + std::unique_ptr impl{ + new DBImpl(db_options, dbname, seq_per_batch, batch_per_txn)}; s = impl->env_->CreateDirIfMissing(impl->immutable_db_options_.GetWalDir()); if (s.ok()) { std::vector paths; @@ -1730,7 +1731,6 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, s = impl->CreateArchivalDirectory(); } if (!s.ok()) { - delete impl; return s; } @@ -1762,7 +1762,7 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, impl->versions_->GetColumnFamilySet()->GetColumnFamily(cf.name); if (cfd != nullptr) { handles->push_back( - new ColumnFamilyHandleImpl(cfd, impl, &impl->mutex_)); + new ColumnFamilyHandleImpl(cfd, impl.get(), &impl->mutex_)); impl->NewThreadStatusCfInfo(cfd); } else { if (db_options.create_missing_column_families) { @@ -1870,7 +1870,6 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, persist_options_status = impl->WriteOptionsFile( false /*need_mutex_lock*/, false /*need_enter_write_thread*/); - *dbptr = impl; impl->opened_successfully_ = true; impl->DeleteObsoleteFiles(); TEST_SYNC_POINT("DBImpl::Open:AfterDeleteFiles"); @@ -1961,7 +1960,7 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, if (s.ok()) { ROCKS_LOG_HEADER(impl->immutable_db_options_.info_log, "DB pointer %p", - impl); + impl.get()); LogFlush(impl->immutable_db_options_.info_log); assert(impl->TEST_WALBufferIsEmpty()); // If the assert above fails then we need to FlushWAL before returning @@ -1978,14 +1977,13 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname, } if (s.ok()) { s = impl->StartPeriodicWorkScheduler(); + *dbptr = impl.release(); } if (!s.ok()) { for (auto* h : *handles) { delete h; } handles->clear(); - delete impl; - *dbptr = nullptr; } return s; } From 22870b4631d27b53ae85870145cba5b8b33141cd Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Mon, 6 Jun 2022 11:08:52 +0300 Subject: [PATCH 087/226] column_family: make the comparison of the SuperVersion pointer explicit --- db/column_family.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/column_family.cc b/db/column_family.cc index 4c38546eb7..7558d2f45b 100644 --- a/db/column_family.cc +++ b/db/column_family.cc @@ -1214,7 +1214,7 @@ SuperVersion* ColumnFamilyData::GetThreadLocalSuperVersion(DBImpl* db) { RecordTick(ioptions_.stats, NUMBER_SUPERVERSION_ACQUIRES); SuperVersion* sv_to_delete = nullptr; - if (sv && sv->Unref()) { + if (sv != SuperVersion::kSVObsolete && sv->Unref()) { RecordTick(ioptions_.stats, NUMBER_SUPERVERSION_CLEANUPS); db->mutex()->Lock(); // NOTE: underlying resources held by superversion (sst files) might From 36476036b0922ef5f27a4026d5ef06355d020692 Mon Sep 17 00:00:00 2001 From: Mike Dorfman Date: Sun, 31 Jan 2021 00:58:14 +0000 Subject: [PATCH 088/226] Rename rocksdb threads to speedb --- util/repeatable_thread.h | 2 +- util/threadpool_imp.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/util/repeatable_thread.h b/util/repeatable_thread.h index c75ad7c49f..78cd78fdb0 100644 --- a/util/repeatable_thread.h +++ b/util/repeatable_thread.h @@ -24,7 +24,7 @@ class RepeatableThread { const std::string& thread_name, SystemClock* clock, uint64_t delay_us, uint64_t initial_delay_us = 0) : function_(function), - thread_name_("rocksdb:" + thread_name), + thread_name_("speedb:" + thread_name), clock_(clock), delay_us_(delay_us), initial_delay_us_(initial_delay_us), diff --git a/util/threadpool_imp.cc b/util/threadpool_imp.cc index dc166e13cf..27fd7be823 100644 --- a/util/threadpool_imp.cc +++ b/util/threadpool_imp.cc @@ -343,7 +343,7 @@ void ThreadPoolImpl::Impl::StartBGThreads() { auto th_handle = p_t.native_handle(); std::string thread_priority = Env::PriorityToString(GetThreadPriority()); std::ostringstream thread_name_stream; - thread_name_stream << "rocksdb:"; + thread_name_stream << "speedb:"; for (char c : thread_priority) { thread_name_stream << static_cast(tolower(c)); } From e3894d41c443ce1675754e36b74e6ff9f236ffb1 Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Tue, 17 May 2022 08:27:13 +0300 Subject: [PATCH 089/226] log: change log header to SpeeDB --- db/db_impl/db_impl.cc | 6 +++--- util/build_version.cc.in | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/db/db_impl/db_impl.cc b/db/db_impl/db_impl.cc index dff9fce50c..760fc5790d 100644 --- a/db/db_impl/db_impl.cc +++ b/db/db_impl/db_impl.cc @@ -4442,14 +4442,14 @@ void DBImpl::EraseThreadStatusDbInfo() const {} // // A global method that can dump out the build version void DumpRocksDBBuildVersion(Logger* log) { - ROCKS_LOG_HEADER(log, "RocksDB version: %s\n", + ROCKS_LOG_HEADER(log, "SpeeDB version: %s\n", GetRocksVersionAsString().c_str()); const auto& props = GetRocksBuildProperties(); - const auto& sha = props.find("rocksdb_build_git_sha"); + const auto& sha = props.find("speedb_build_git_sha"); if (sha != props.end()) { ROCKS_LOG_HEADER(log, "Git sha %s", sha->second.c_str()); } - const auto date = props.find("rocksdb_build_date"); + const auto date = props.find("speedb_build_date"); if (date != props.end()) { ROCKS_LOG_HEADER(log, "Compile date %s", date->second.c_str()); } diff --git a/util/build_version.cc.in b/util/build_version.cc.in index 64c86a5630..04964ab531 100644 --- a/util/build_version.cc.in +++ b/util/build_version.cc.in @@ -8,17 +8,17 @@ // The build script may replace these values with real values based // on whether or not GIT is available and the platform settings -static const std::string rocksdb_build_git_sha = "rocksdb_build_git_sha:@GIT_SHA@"; -static const std::string rocksdb_build_git_tag = "rocksdb_build_git_tag:@GIT_TAG@"; +static const std::string rocksdb_build_git_sha = "speedb_build_git_sha:@GIT_SHA@"; +static const std::string rocksdb_build_git_tag = "speedb_build_git_tag:@GIT_TAG@"; #define HAS_GIT_CHANGES @GIT_MOD@ #if HAS_GIT_CHANGES == 0 // If HAS_GIT_CHANGES is 0, the GIT date is used. // Use the time the branch/tag was last modified -static const std::string rocksdb_build_date = "rocksdb_build_date:@GIT_DATE@"; +static const std::string rocksdb_build_date = "speedb_build_date:@GIT_DATE@"; #else // If HAS_GIT_CHANGES is > 0, the branch/tag has modifications. // Use the time the build was created. -static const std::string rocksdb_build_date = "rocksdb_build_date:@BUILD_DATE@"; +static const std::string rocksdb_build_date = "speedb_build_date:@BUILD_DATE@"; #endif #ifndef ROCKSDB_LITE @@ -67,7 +67,7 @@ std::string GetRocksVersionAsString(bool with_patch) { } std::string GetRocksBuildInfoAsString(const std::string& program, bool verbose) { - std::string info = program + " (RocksDB) " + GetRocksVersionAsString(true); + std::string info = program + " (SpeeDB) " + GetRocksVersionAsString(true); if (verbose) { for (const auto& it : GetRocksBuildProperties()) { info.append("\n "); From d915ad7e386f66896b42dad73f814ae0125dbbb5 Mon Sep 17 00:00:00 2001 From: Udi Date: Mon, 17 Jan 2022 16:34:49 +0200 Subject: [PATCH 090/226] SPDB-467: Report the metadata_cache_options table options to the trace --- table/block_based/block_based_table_factory.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/table/block_based/block_based_table_factory.cc b/table/block_based/block_based_table_factory.cc index 2a2258a40b..9329b7c336 100644 --- a/table/block_based/block_based_table_factory.cc +++ b/table/block_based/block_based_table_factory.cc @@ -716,6 +716,19 @@ std::string BlockBasedTableFactory::GetPrintableOptions() const { snprintf(buffer, kBufferSize, " pin_top_level_index_and_filter: %d\n", table_options_.pin_top_level_index_and_filter); ret.append(buffer); + ret.append(" metadata_cache_options:\n"); + snprintf(buffer, kBufferSize, " top_level_index_pinning: %d\n", + static_cast( + table_options_.metadata_cache_options.top_level_index_pinning)); + ret.append(buffer); + snprintf(buffer, kBufferSize, " partition_pinning: %d\n", + static_cast( + table_options_.metadata_cache_options.partition_pinning)); + ret.append(buffer); + snprintf(buffer, kBufferSize, " unpartitioned_pinning: %d\n", + static_cast( + table_options_.metadata_cache_options.unpartitioned_pinning)); + ret.append(buffer); snprintf(buffer, kBufferSize, " index_type: %d\n", table_options_.index_type); ret.append(buffer); From 883d53d4cb200f2632655d321735d3b02a0c80f3 Mon Sep 17 00:00:00 2001 From: Udi Date: Mon, 28 Feb 2022 18:19:47 +0200 Subject: [PATCH 091/226] SPDB-538: Support configuration of metadata-cache-options in db_bench --- tools/db_bench_tool.cc | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tools/db_bench_tool.cc b/tools/db_bench_tool.cc index f356e08f43..73e1425ae5 100644 --- a/tools/db_bench_tool.cc +++ b/tools/db_bench_tool.cc @@ -633,6 +633,21 @@ DEFINE_bool( pin_top_level_index_and_filter, false, "Pin top-level index of partitioned index/filter blocks in block cache."); +DEFINE_bool( + top_level_index_pinning, false, + "Pin top-level block of partitioned index/filter blocks in block cache." + " Note: `cache_index_and_filter_blocks` must be true for this option to" + " have any effect."); + +DEFINE_bool(partition_pinning, false, + "Pin index/filter partitions in block cache."); + +DEFINE_bool( + unpartitioned_pinning, false, + "Pin unpartitioned index/filter blocks in block cache." + " Note `cache_index_and_filter_blocks` must be true for this option to have" + " any effect."); + DEFINE_int32(block_size, static_cast( ROCKSDB_NAMESPACE::BlockBasedTableOptions().block_size), @@ -4054,6 +4069,17 @@ class Benchmark { block_based_options.cache_index_and_filter_blocks_with_high_priority = true; } + + // Metadata Cache Options + block_based_options.metadata_cache_options.top_level_index_pinning = + FLAGS_top_level_index_pinning ? PinningTier::kAll + : PinningTier::kFallback; + block_based_options.metadata_cache_options.partition_pinning = + FLAGS_partition_pinning ? PinningTier::kAll : PinningTier::kFallback; + block_based_options.metadata_cache_options.unpartitioned_pinning = + FLAGS_unpartitioned_pinning ? PinningTier::kAll + : PinningTier::kFallback; + block_based_options.block_cache = cache_; block_based_options.reserve_table_reader_memory = FLAGS_reserve_table_reader_memory; @@ -8055,6 +8081,24 @@ class Benchmark { #endif // ROCKSDB_LITE }; +void ValidateMetadataCacheOptions() { + if (FLAGS_top_level_index_pinning && + (FLAGS_cache_index_and_filter_blocks == false)) { + fprintf(stderr, + "ERROR: --cache_index_and_filter_blocks must be set for " + "--top_level_index_pinning to have any affect.\n"); + exit(1); + } + + if (FLAGS_unpartitioned_pinning && + (FLAGS_cache_index_and_filter_blocks == false)) { + fprintf(stderr, + "ERROR: --cache_index_and_filter_blocks must be set for " + "--unpartitioned_pinning to have any affect.\n"); + exit(1); + } +} + int db_bench_tool(int argc, char** argv) { ROCKSDB_NAMESPACE::port::InstallStackTraceHandler(); ConfigOptions config_options; @@ -8208,6 +8252,8 @@ int db_bench_tool(int argc, char** argv) { exit(1); } + ValidateMetadataCacheOptions(); + ROCKSDB_NAMESPACE::Benchmark benchmark; benchmark.Run(); From 4e774f84f7650441acec2781c82b0f18247b74c5 Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Sun, 17 Apr 2022 14:56:59 +0300 Subject: [PATCH 092/226] SPDB-632: Print write_buffer_manager size to LOG --- include/rocksdb/write_buffer_manager.h | 2 ++ memtable/write_buffer_manager.cc | 15 +++++++++++++++ options/db_options.cc | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/include/rocksdb/write_buffer_manager.h b/include/rocksdb/write_buffer_manager.h index 7fb18196d7..3212163320 100644 --- a/include/rocksdb/write_buffer_manager.h +++ b/include/rocksdb/write_buffer_manager.h @@ -152,6 +152,8 @@ class WriteBufferManager final { void RemoveDBFromQueue(StallInterface* wbm_stall); + std::string GetPrintableOptions() const; + private: std::atomic buffer_size_; std::atomic mutable_limit_; diff --git a/memtable/write_buffer_manager.cc b/memtable/write_buffer_manager.cc index d539d2ed24..cd85b148a7 100644 --- a/memtable/write_buffer_manager.cc +++ b/memtable/write_buffer_manager.cc @@ -199,4 +199,19 @@ void WriteBufferManager::RemoveDBFromQueue(StallInterface* wbm_stall) { wbm_stall->Signal(); } +std::string WriteBufferManager::GetPrintableOptions() const { + std::string ret; + const int kBufferSize = 200; + char buffer[kBufferSize]; + + // The assumed width of the callers display code + int field_width = 47; + + snprintf(buffer, kBufferSize, "%*s: %" PRIu64 "\n", field_width, "size", + buffer_size()); + ret.append(buffer); + + return ret; +} + } // namespace ROCKSDB_NAMESPACE diff --git a/options/db_options.cc b/options/db_options.cc index 2d3902dd86..b8020eaa80 100644 --- a/options/db_options.cc +++ b/options/db_options.cc @@ -828,6 +828,11 @@ void ImmutableDBOptions::Dump(Logger* log) const { db_write_buffer_size); ROCKS_LOG_HEADER(log, " Options.write_buffer_manager: %p", write_buffer_manager.get()); + if (write_buffer_manager.get()) { + ROCKS_LOG_HEADER(log, " write_buffer_manager_options:"); + ROCKS_LOG_HEADER(log, "%s", + write_buffer_manager->GetPrintableOptions().c_str()); + } ROCKS_LOG_HEADER(log, " Options.access_hint_on_compaction_start: %d", static_cast(access_hint_on_compaction_start)); ROCKS_LOG_HEADER( From 19ff1c39f9a7d9e959384a56c34f7890c9f1658d Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Thu, 26 May 2022 17:23:42 +0300 Subject: [PATCH 093/226] SPDB-347: Add a version number to our builds The change set includes: 1) A header file that contains the Major, Minor, and Patch versions of speedb as a macro, as well as a set of functions returning info about how/when/where this version of speedb was created. --- db/db_impl/db_impl.cc | 4 +++- speedb/version.h | 12 ++++++++++++ util/build_version.cc.in | 31 ++++++++++++++++++++++--------- 3 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 speedb/version.h diff --git a/db/db_impl/db_impl.cc b/db/db_impl/db_impl.cc index 760fc5790d..cae9276497 100644 --- a/db/db_impl/db_impl.cc +++ b/db/db_impl/db_impl.cc @@ -84,6 +84,7 @@ #include "rocksdb/table.h" #include "rocksdb/version.h" #include "rocksdb/write_buffer_manager.h" +#include "speedb/version.h" #include "table/block_based/block.h" #include "table/block_based/block_based_table_factory.h" #include "table/get_context.h" @@ -4442,7 +4443,8 @@ void DBImpl::EraseThreadStatusDbInfo() const {} // // A global method that can dump out the build version void DumpRocksDBBuildVersion(Logger* log) { - ROCKS_LOG_HEADER(log, "SpeeDB version: %s\n", + ROCKS_LOG_HEADER(log, "SpeeDB version: %s (%s)\n", + GetSpeedbVersionAsString().c_str(), GetRocksVersionAsString().c_str()); const auto& props = GetRocksBuildProperties(); const auto& sha = props.find("speedb_build_git_sha"); diff --git a/speedb/version.h b/speedb/version.h new file mode 100644 index 0000000000..d3e569b726 --- /dev/null +++ b/speedb/version.h @@ -0,0 +1,12 @@ +#pragma once + +#define SPEEDB_MAJOR 1 +#define SPEEDB_MINOR 5 +#define SPEEDB_PATCH 0 + +namespace ROCKSDB_NAMESPACE { +// Returns the current version of SpeeDB as a string (e.g. "1.5.0"). +// If with_patch is true, the patch is included (1.5.x). +// Otherwise, only major and minor version is included (1.5) +std::string GetSpeedbVersionAsString(bool with_patch = true); +} // namespace ROCKSDB_NAMESPACE diff --git a/util/build_version.cc.in b/util/build_version.cc.in index 04964ab531..7fc2bcd23a 100644 --- a/util/build_version.cc.in +++ b/util/build_version.cc.in @@ -3,22 +3,24 @@ #include #include "rocksdb/version.h" +#include "speedb/version.h" #include "rocksdb/utilities/object_registry.h" #include "util/string_util.h" // The build script may replace these values with real values based // on whether or not GIT is available and the platform settings -static const std::string rocksdb_build_git_sha = "speedb_build_git_sha:@GIT_SHA@"; -static const std::string rocksdb_build_git_tag = "speedb_build_git_tag:@GIT_TAG@"; +static const std::string speedb_build_git_sha = "speedb_build_git_sha:@GIT_SHA@"; +static const std::string speedb_build_git_tag = "speedb_build_git_tag:@GIT_TAG@"; +static const std::string speedb_build_spdb_key = "speedb_build_spdb_key:@SPDB_KEY@"; #define HAS_GIT_CHANGES @GIT_MOD@ #if HAS_GIT_CHANGES == 0 // If HAS_GIT_CHANGES is 0, the GIT date is used. // Use the time the branch/tag was last modified -static const std::string rocksdb_build_date = "speedb_build_date:@GIT_DATE@"; +static const std::string speedb_build_date = "speedb_build_date:@GIT_DATE@"; #else // If HAS_GIT_CHANGES is > 0, the branch/tag has modifications. // Use the time the build was created. -static const std::string rocksdb_build_date = "speedb_build_date:@BUILD_DATE@"; +static const std::string speedb_build_date = "speedb_build_date:@BUILD_DATE@"; #endif #ifndef ROCKSDB_LITE @@ -46,9 +48,10 @@ static void AddProperty(std::unordered_map *props, con static std::unordered_map* LoadPropertiesSet() { auto * properties = new std::unordered_map(); - AddProperty(properties, rocksdb_build_git_sha); - AddProperty(properties, rocksdb_build_git_tag); - AddProperty(properties, rocksdb_build_date); + AddProperty(properties, speedb_build_git_sha); + AddProperty(properties, speedb_build_git_tag); + AddProperty(properties, speedb_build_date); + AddProperty(properties, speedb_build_spdb_key); return properties; } @@ -65,9 +68,19 @@ std::string GetRocksVersionAsString(bool with_patch) { return version; } } - + +std::string GetSpeedbVersionAsString(bool with_patch) { + std::string version = ToString(SPEEDB_MAJOR) + "." + ToString(SPEEDB_MINOR); + if (with_patch) { + return version + "." + ToString(SPEEDB_PATCH); + } else { + return version; + } +} + std::string GetRocksBuildInfoAsString(const std::string& program, bool verbose) { - std::string info = program + " (SpeeDB) " + GetRocksVersionAsString(true); + std::string info = program + " (SpeeDB) " + GetSpeedbVersionAsString(true) + + " (" + GetRocksVersionAsString(true) + ")"; if (verbose) { for (const auto& it : GetRocksBuildProperties()) { info.append("\n "); From 0321fe8c3f81c9a8eeb26869063e8a376b0d0fde Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Sun, 3 Jul 2022 11:58:47 +0300 Subject: [PATCH 094/226] SPDB-382: Exclude third party code from the checks as changes to it are either version updates or fixing compiler errors. --- third-party/.clang-format | 1 + 1 file changed, 1 insertion(+) create mode 100644 third-party/.clang-format diff --git a/third-party/.clang-format b/third-party/.clang-format new file mode 100644 index 0000000000..37f3d57668 --- /dev/null +++ b/third-party/.clang-format @@ -0,0 +1 @@ +DisableFormat: true \ No newline at end of file From b36e07a0a3c56be98ef9f3cde0c15c7a4cda581a Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 14:14:00 +0300 Subject: [PATCH 095/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index 87ee1c20d4..47e024e62f 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -40,7 +40,7 @@ jobs: run: | df -H - apt-get update -y && apt-get install -y sudo clang-format parallel moreutils g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" + apt-get update -y && apt-get install -y sudo default-jre default-jdk clang-format parallel moreutils g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" sudo mv /usr/bin/parallel /usr/bin/gnu_parallel sudo rm -rf /etc/parallel/config || echo "" - name: ${{ matrix.name }} From ee64e9e0c768ea58e385960da0ab01836c004b51 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 16:00:40 +0300 Subject: [PATCH 096/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index 47e024e62f..44bf0f3218 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -39,7 +39,6 @@ jobs: - name: Pre run: | df -H - apt-get update -y && apt-get install -y sudo default-jre default-jdk clang-format parallel moreutils g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" sudo mv /usr/bin/parallel /usr/bin/gnu_parallel sudo rm -rf /etc/parallel/config || echo "" From 1bbe7e3eed87315e9c38b9a761be4db591bfbb8d Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 16:09:03 +0300 Subject: [PATCH 097/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index a29e4163b3..da030de5c8 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -3,7 +3,8 @@ on: [push, pull_request, workflow_call] jobs: check: name: Check TARGETS file and code format - runs-on: [self-hosted, linux, x64, myrunner] + runs-on: ubuntu-latest + #runs-on: [self-hosted, linux, x64, myrunner] container: image: ubuntu:latest steps: From d8967bf8bdae8e6e538ec48b8ae959d04aa327e1 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 16:10:55 +0300 Subject: [PATCH 098/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index da030de5c8..7612a587eb 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -3,8 +3,8 @@ on: [push, pull_request, workflow_call] jobs: check: name: Check TARGETS file and code format - runs-on: ubuntu-latest - #runs-on: [self-hosted, linux, x64, myrunner] + #runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64, myrunner] container: image: ubuntu:latest steps: From f7a182f9451255e0a887414a9e66be6be1a0d959 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 4 Jul 2022 16:14:47 +0300 Subject: [PATCH 099/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 7612a587eb..bfa87cc311 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -3,8 +3,8 @@ on: [push, pull_request, workflow_call] jobs: check: name: Check TARGETS file and code format - #runs-on: ubuntu-latest - runs-on: [self-hosted, linux, x64, myrunner] + runs-on: ubuntu:20.04 + #runs-on: [self-hosted, linux, x64, myrunner] container: image: ubuntu:latest steps: From aa69a845b2b2ccda04511e50d62fbe59723cb275 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 5 Jul 2022 11:02:02 +0300 Subject: [PATCH 100/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index 44bf0f3218..d66c946cc3 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -43,4 +43,6 @@ jobs: sudo mv /usr/bin/parallel /usr/bin/gnu_parallel sudo rm -rf /etc/parallel/config || echo "" - name: ${{ matrix.name }} - run: ${{ matrix.command }} + run: | + ${{ matrix.command }} + df -H From 8eaf613a3755d2d05fe435223bb5587bb9b0ac34 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 5 Jul 2022 11:30:33 +0300 Subject: [PATCH 101/226] Create release_to_qa.yml --- .github/workflows/release_to_qa.yml | 100 ++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 .github/workflows/release_to_qa.yml diff --git a/.github/workflows/release_to_qa.yml b/.github/workflows/release_to_qa.yml new file mode 100644 index 0000000000..d89b0700f2 --- /dev/null +++ b/.github/workflows/release_to_qa.yml @@ -0,0 +1,100 @@ +name: Release + +on: + + push: + branches: [ release/*, main ] + workflow_dispatch: + workflow_call: + +permissions: write-all + +jobs: + + Build: + runs-on: ubuntu-latest + strategy: + matrix: + include: + - name: verify build + command: cmake .. -GNinja + - name: optimized build + command: cmake .. -DCMAKE_BUILD_TYPE=Release -GNinja + - mame: clang build + command: CC=clang CXX=clang++ cmake .. -GNinja + container: + image: alpine:3.14 + + steps: + - name: Pre-build + run: | + env + rm -rf /usr/share/dotnet || echo "" + df -h + apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ + openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar + python3 -m pip install lint-diffs flake8 + - name: Checkout + uses: actions/checkout@v2 + + + - name: Prepare ccache timestamp + id: ccache_cache_timestamp + shell: cmake -P {0} + run: | + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) + message("::set-output name=timestamp::${current_date}") + + + - name: ccache cache files + uses: actions/cache@v2 + with: + path: ~/.ccache + key: ${{runner.os}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} + restore-keys: | + ${{runner.os}}-ccache- + + + - name: ${{ matrix.name }} + run: | + df -h + ls /etc/apk/world + git config --global --add safe.directory $GITHUB_WORKSPACE + git config user.name "GitHub Actions Bot" + git config user.email "<>" + git pull + if [ -d "$GITHUB_WORKSPACE/build" ]; then + echo >&2 "error: the build directory should not exist" && false NIK + fi + if [ -d "~/.ccache" ]; then + echo "Already exists" + else + mkdir -p ~/.ccache + ls ~ | grep cache || echo "" + touch ~/.ccache/ccache.txt + echo "aaa" > ~/.ccache/ccache.txt + ls ~/.ccache + cat ~/.ccache/ccache.txt + fi + mkdir -p "$GITHUB_WORKSPACE/build" + cd "$GITHUB_WORKSPACE/build" + export "CCACHE_BASEDIR=$HOME" + export "CCACHE_DIR=$HOME/.ccache" + export "CCACHE_COMPILERCHECK=content" + ${{ matrix.command }} -DPORTABLE=1 -DWITH_GFLAGS=1 \ + -DWITH_ZLIB=1 -DWITH_SNAPPY=1 -DWITH_BZ2=1 -DWITH_LZ4=1 -DWITH_ZSTD=1 \ + -DWITH_JNI=1 -DJAVA_HOME=/usr/lib/jvm/default-jvm \ + -DWITH_BENCHMARK_TOOLS=1 -DWITH_CORE_TOOLS=1 -DWITH_TOOLS=1 \ + -DWITH_TESTS=1 -DWITH_ALL_TESTS=1 -DWITH_EXAMPLES=1 + ninja + + Sanity: + uses: speedb-io/speedb/.github/workflows/sanity_check.yml@main + + Unit_Black_White_box: + needs: [Build] + uses: speedb-io/speedb/.github/workflows/full-tests.yml@main + + Fuzz: + needs: [Build] + uses: speedb-io/speedb/.github/workflows/fuzz.yml@main From 9fd9c54abae4d322f4b5f5faccb5065149acba43 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 5 Jul 2022 19:16:41 +0300 Subject: [PATCH 102/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index d66c946cc3..abe0e0fd2a 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -18,7 +18,7 @@ env: jobs: test: - runs-on: [self-hosted, linux, x64, myrunner] + runs-on: [perftest] container: image: ubuntu:18.04 strategy: From 18552f003a0352cc1c1802a4dc8ef96875c8306c Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 5 Jul 2022 19:17:42 +0300 Subject: [PATCH 103/226] Update full-tests.yml --- .github/workflows/full-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/full-tests.yml index abe0e0fd2a..d66c946cc3 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/full-tests.yml @@ -18,7 +18,7 @@ env: jobs: test: - runs-on: [perftest] + runs-on: [self-hosted, linux, x64, myrunner] container: image: ubuntu:18.04 strategy: From a4e27cece1b3a55c79949218cc2a958218315655 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 11 Jul 2022 15:26:21 +0300 Subject: [PATCH 104/226] added manual trigger to sanity --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index a29e4163b3..e2cbed2090 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -1,5 +1,5 @@ name: Check buck targets and code format -on: [push, pull_request, workflow_call] +on: [push, pull_request, workflow_call, workflow_dispatch] jobs: check: name: Check TARGETS file and code format From 1d50d9cb6693b70e462dfd41fb38fbbed8892fb2 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 12 Jul 2022 17:11:15 +0300 Subject: [PATCH 105/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index bfa87cc311..f465d07e81 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -1,5 +1,5 @@ name: Check buck targets and code format -on: [push, pull_request, workflow_call] +on: [push, pull_request, workflow_call, workflow_dispatch] jobs: check: name: Check TARGETS file and code format From 2780c242310cdd725522fe11a21288f54b1818dd Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 12 Jul 2022 17:12:53 +0300 Subject: [PATCH 106/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index f465d07e81..48bca0c6ce 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -3,8 +3,8 @@ on: [push, pull_request, workflow_call, workflow_dispatch] jobs: check: name: Check TARGETS file and code format - runs-on: ubuntu:20.04 - #runs-on: [self-hosted, linux, x64, myrunner] + #runs-on: ubuntu:20.04 + runs-on: [self-hosted, linux, x64, myrunner] container: image: ubuntu:latest steps: From 7f424b76ea1f7f7dffb90b42ecac5caf8ca19e5e Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Tue, 12 Jul 2022 17:49:58 +0300 Subject: [PATCH 107/226] SPDB-270: db_bench: add SeekRandomWriteRandom test combination of seek random and overwrite random. all threads are doing seek and write interchangeably. --- tools/db_bench_tool.cc | 161 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/tools/db_bench_tool.cc b/tools/db_bench_tool.cc index 73e1425ae5..ccc3e8b481 100644 --- a/tools/db_bench_tool.cc +++ b/tools/db_bench_tool.cc @@ -121,6 +121,7 @@ DEFINE_string( "newiterator," "newiteratorwhilewriting," "seekrandom," + "seekrandomwriterandom," "seekrandomwhilewriting," "seekrandomwhilemerging," "readseq," @@ -207,6 +208,8 @@ IF_ROCKSDB_LITE("", "\tnewiterator -- repeated iterator creation\n" "\tseekrandom -- N random seeks, call Next seek_nexts times " "per seek\n" + "\tseekrandomwriterandom -- N threads doing random overwrite and " + "random seek\n" "\tseekrandomwhilewriting -- seekrandom and 1 thread doing " "overwrite\n" "\tseekrandomwhilemerging -- seekrandom and 1 thread doing " @@ -3291,6 +3294,8 @@ class Benchmark { method = &Benchmark::IteratorCreationWhileWriting; } else if (name == "seekrandom") { method = &Benchmark::SeekRandom; + } else if (name == "seekrandomwriterandom") { + method = &Benchmark::SeekRandomWriteRandom; } else if (name == "seekrandomwhilewriting") { num_threads++; // Add extra thread for writing method = &Benchmark::SeekRandomWhileWriting; @@ -6958,6 +6963,162 @@ class Benchmark { thread->stats.AddMessage(msg); } + // Each thread does #iterations of either seek or write + // use readwritepercent to set ratio of seek/write + // number of iterations = duration ? duration : readwrites_ + // readwrites_ = max(reads_, writes) or num if zero. + // can pass: seek_nexts, reverse_iterator, max_scan_distance and + // use_tailing_iterator. seek was taken from SeekRandom and write from + // ReadRandomWriteRandom + void SeekRandomWriteRandom(ThreadState* thread) { + // Seek preparation + int64_t seeks = 0; + int64_t found = 0; + int64_t bytes = 0; + ReadOptions options(FLAGS_verify_checksum, true); + options.total_order_seek = FLAGS_total_order_seek; + options.prefix_same_as_start = FLAGS_prefix_same_as_start; + options.tailing = FLAGS_use_tailing_iterator; + options.readahead_size = FLAGS_readahead_size; + + std::unique_ptr single_iter; + std::vector> multi_iters; + if (db_.db != nullptr) { + single_iter.reset(db_.db->NewIterator(options)); + } else { + for (const auto& db_with_cfh : multi_dbs_) { + multi_iters.emplace_back(db_with_cfh.db->NewIterator(options)); + } + } + + std::unique_ptr upper_bound_key_guard; + Slice upper_bound = AllocateKey(&upper_bound_key_guard); + std::unique_ptr lower_bound_key_guard; + Slice lower_bound = AllocateKey(&lower_bound_key_guard); + + // Write preparation + RandomGenerator gen; + int64_t writes_done = 0; + Duration duration(FLAGS_duration, readwrites_); + + std::unique_ptr key_guard; + Slice key = AllocateKey(&key_guard); + + std::unique_ptr ts_guard; + if (user_timestamp_size_ > 0) { + ts_guard.reset(new char[user_timestamp_size_]); + } + + // the number of iterations is the larger of read_ or write_ + while (!duration.Done(1)) { + int prob_op = thread->rand.Uniform(100); + + // Seek + if (prob_op >= 0 && prob_op < static_cast(FLAGS_readwritepercent)) { + Slice ts; + if (user_timestamp_size_ > 0) { + ts = mock_app_clock_->GetTimestampForRead(thread->rand, + ts_guard.get()); + options.timestamp = &ts; + } + + int64_t seek_pos = thread->rand.Next() % FLAGS_num; + GenerateKeyFromIntForSeek(static_cast(seek_pos), FLAGS_num, + &key); + if (FLAGS_max_scan_distance != 0) { + if (FLAGS_reverse_iterator) { + GenerateKeyFromInt(static_cast(std::max( + static_cast(0), + seek_pos - FLAGS_max_scan_distance)), + FLAGS_num, &lower_bound); + options.iterate_lower_bound = &lower_bound; + } else { + auto min_num = + std::min(FLAGS_num, seek_pos + FLAGS_max_scan_distance); + GenerateKeyFromInt(static_cast(min_num), FLAGS_num, + &upper_bound); + options.iterate_upper_bound = &upper_bound; + } + } + + if (!FLAGS_use_tailing_iterator) { + if (db_.db != nullptr) { + single_iter.reset(db_.db->NewIterator(options)); + } else { + multi_iters.clear(); + for (const auto& db_with_cfh : multi_dbs_) { + multi_iters.emplace_back(db_with_cfh.db->NewIterator(options)); + } + } + } + + // Pick an Iterator to use + Iterator* iter_to_use = single_iter.get(); + if (iter_to_use == nullptr) { + iter_to_use = + multi_iters[thread->rand.Next() % multi_iters.size()].get(); + } + + iter_to_use->Seek(key); + seeks++; + if (iter_to_use->Valid() && iter_to_use->key().compare(key) == 0) { + found++; + } + + for (int j = 0; j < FLAGS_seek_nexts && iter_to_use->Valid(); ++j) { + // Copy out iterator's value to make sure we read them. + bytes += iter_to_use->key().size() + iter_to_use->value().size(); + + if (!FLAGS_reverse_iterator) { + iter_to_use->Next(); + } else { + iter_to_use->Prev(); + } + assert(iter_to_use->status().ok()); + } + + if (thread->shared->read_rate_limiter.get() != nullptr && + seeks % 256 == 255) { + thread->shared->read_rate_limiter->Request( + 256, Env::IO_HIGH, nullptr /* stats */, + RateLimiter::OpType::kRead); + } + + thread->stats.FinishedOps(&db_, db_.db, 1, kSeek); + // Write + } else { + DB* db = SelectDB(thread); + GenerateKeyFromInt(thread->rand.Next() % FLAGS_num, FLAGS_num, &key); + + Status s; + if (user_timestamp_size_ > 0) { + Slice ts = mock_app_clock_->Allocate(ts_guard.get()); + s = db->Put(write_options_, key, ts, gen.Generate()); + } else { + s = db->Put(write_options_, key, gen.Generate()); + } + + if (!s.ok()) { + fprintf(stderr, "put error: %s\n", s.ToString().c_str()); + ErrorExit(); + } + writes_done++; + thread->stats.FinishedOps(nullptr, db, 1, kWrite); + } + } + + char msg[100]; + snprintf(msg, sizeof(msg), + "( seeks:%" PRIu64 " writes:%" PRIu64 " found:%" PRIu64 ")", seeks, + writes_done, found); + thread->stats.AddBytes(bytes); + thread->stats.AddMessage(msg); + if (FLAGS_perf_level > ROCKSDB_NAMESPACE::PerfLevel::kDisable) { + thread->stats.AddMessage(std::string("PERF_CONTEXT:\n") + + get_perf_context()->ToString()); + } + } + // // Read-modify-write for random keys void UpdateRandom(ThreadState* thread) { From b1a647f1d4b02ca4fbbcaef26008f8ea85367b01 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 13 Jul 2022 10:17:33 +0300 Subject: [PATCH 108/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index e2cbed2090..7fdb032a9a 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -9,7 +9,7 @@ jobs: steps: - name: pre - run: apt update && apt install -y sudo git make + run: apt update && apt install -y sudo git make clang build-essential clang-format - name: Checkout feature branch uses: actions/checkout@v2 @@ -20,13 +20,11 @@ jobs: run: | git remote add upstream https://github.com/speedb-io/speedb.git && git fetch upstream git config --global --add safe.directory $GITHUB_WORKSPACE - - name: Where am I run: | echo git status && git status echo "git remote -v" && git remote -v echo git branch && git branch - - name: Setup Python uses: actions/setup-python@v4 with: From b826defaa6f2428ae116b5f6ff24feb9d6f11788 Mon Sep 17 00:00:00 2001 From: Amnon Hanuhov Date: Mon, 20 Jun 2022 21:12:06 +0300 Subject: [PATCH 109/226] Update README to contain a quick start guide for speedb --- README.md | 89 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 66 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 22ad6d838d..09d7acc56c 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,75 @@ -## RocksDB: A Persistent Key-Value Store for Flash and RAM Storage +# Speedb: A drop in replacement embedded solution for RocksDB -[![CircleCI Status](https://circleci.com/gh/facebook/rocksdb.svg?style=svg)](https://circleci.com/gh/facebook/rocksdb) -[![TravisCI Status](https://api.travis-ci.com/facebook/rocksdb.svg?branch=main)](https://travis-ci.com/github/facebook/rocksdb) -[![Appveyor Build status](https://ci.appveyor.com/api/projects/status/fbgfu0so3afcno78/branch/main?svg=true)](https://ci.appveyor.com/project/Facebook/rocksdb/branch/main) -[![PPC64le Build Status](http://140-211-168-68-openstack.osuosl.org:8080/buildStatus/icon?job=rocksdb&style=plastic)](http://140-211-168-68-openstack.osuosl.org:8080/job/rocksdb) +## Checking out the source -RocksDB is developed and maintained by Facebook Database Engineering Team. -It is built on earlier work on [LevelDB](https://github.com/google/leveldb) by Sanjay Ghemawat (sanjay@google.com) -and Jeff Dean (jeff@google.com) + git clone https://github.com/speedb-io/speedb.git -This code is a library that forms the core building block for a fast -key-value server, especially suited for storing data on flash drives. -It has a Log-Structured-Merge-Database (LSM) design with flexible tradeoffs -between Write-Amplification-Factor (WAF), Read-Amplification-Factor (RAF) -and Space-Amplification-Factor (SAF). It has multi-threaded compactions, -making it especially suitable for storing multiple terabytes of data in a -single database. +## Dynamically linking Speedb +If speedb is in your default library path: -Start with example usage here: https://github.com/facebook/rocksdb/tree/main/examples +In your `CMakeLists.txt` add: -See the [github wiki](https://github.com/facebook/rocksdb/wiki) for more explanation. + target_link_libraries(${PROJECT_NAME} speedb) +where `PROJECT_NAME` is the name of your target application which uses speedb -The public interface is in `include/`. Callers should not include or -rely on the details of any other header files in this package. Those -internal APIs may be changed without warning. +Otherwise, you have to include the path to the folder the library is in like so: + + target_link_libraries(${PROJECT_NAME} /path/to/speedb/library/folder) -Questions and discussions are welcome on the [RocksDB Developers Public](https://www.facebook.com/groups/rocksdb.dev/) Facebook group and [email list](https://groups.google.com/g/rocksdb) on Google Groups. +## Usage +Usage of the library in your code is the same, regardless of whether you statically linked the library or dynamically linked it, and examples can be found under the [examples](examples) directory. +The public interface is in [include](include/rocksdb). Callers should not include or rely on the details of any other header files in this package. Those internal APIs may be changed without warning. -## License +## Build dependencies +Please refer to the file [INSTALL.md](INSTALL.md) for a list of all the dependencies and how to install them across different platforms. + +## Building Speedb +Debug: + + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Debug [cmake options] + make rocksdb + +By default the build type is Debug. + +Release: + + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Release [cmake options] + make rocksdb + +This will build the static library. +If you want to build the dynammic library, use: + + make rocksdb-shared + +If you want `make` to increase the number of cores used for building, simply use the `-j` option. + +If you want to build a specific target: -RocksDB is dual-licensed under both the GPLv2 (found in the COPYING file in the root directory) and Apache 2.0 License (found in the LICENSE.Apache file in the root directory). You may select, at your option, one of the above-listed licenses. + make [target name] + +For development and functional testing, go with the debug version which includes +more assertions and debug prints. +Otherwise, for production or performance testing, we recommend building a release version +which is more optimized. + +## Running tests + + cd build + make rocksdb + ./[test name] --db=/path/to/db + +for example, `db_blob_basic_test`: + + cd build + make rocksdb + ./db_blob_basic_test --db=/tmp/example_db + +The test will generate a random DB at the specified path. This is also where speedb will store the LOG files. + +## Contributing code +`TODO:` This section should point the reader to a dedicated file explaining how to contribute + +## License +Speedb is licensed under Apache 2.0 \ No newline at end of file From 1b012130a42b977598db2373078e37f9af8d496b Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Thu, 14 Jul 2022 13:29:48 +0300 Subject: [PATCH 110/226] customizable_test: revert the offsetof() build-related fixes (#55) They were made because the original version failed to compile with Clang 12 and 13, complaining about `offsetof()` being applied to a non-standard-layout type. The error is no longer emitted with Clang 14, so this is likely a compiler bug that was fixed, and there's no need for this dirty hack. --- options/customizable_test.cc | 59 ++++++++++++------------------------ 1 file changed, 20 insertions(+), 39 deletions(-) diff --git a/options/customizable_test.cc b/options/customizable_test.cc index d3c9ea9055..2447f60041 100644 --- a/options/customizable_test.cc +++ b/options/customizable_test.cc @@ -9,11 +9,9 @@ #include "rocksdb/customizable.h" -#include #include #include #include -#include #include #include "db/db_test_util.h" @@ -210,49 +208,32 @@ struct SimpleOptions { TestCustomizable* cp = nullptr; }; -static std::unordered_map simple_option_info; - -template -static int dynamic_unsafe_offsetof(const T& instance, const F& field) { - const char* instance_addr = - reinterpret_cast(std::addressof(instance)); - const char* field_addr = reinterpret_cast(std::addressof(field)); - assert(field_addr >= instance_addr); - const size_t offset = field_addr - instance_addr; - assert(offset < sizeof(instance)); - return offset; -} +static std::unordered_map simple_option_info = { +#ifndef ROCKSDB_LITE + {"bool", + {offsetof(struct SimpleOptions, b), OptionType::kBoolean, + OptionVerificationType::kNormal, OptionTypeFlags::kNone}}, + {"unique", + OptionTypeInfo::AsCustomUniquePtr( + offsetof(struct SimpleOptions, cu), OptionVerificationType::kNormal, + OptionTypeFlags::kAllowNull)}, + {"shared", + OptionTypeInfo::AsCustomSharedPtr( + offsetof(struct SimpleOptions, cs), OptionVerificationType::kNormal, + OptionTypeFlags::kAllowNull)}, + {"pointer", + OptionTypeInfo::AsCustomRawPtr( + offsetof(struct SimpleOptions, cp), OptionVerificationType::kNormal, + OptionTypeFlags::kAllowNull)}, +#endif // ROCKSDB_LITE +}; class SimpleConfigurable : public Configurable { private: SimpleOptions simple_; public: - SimpleConfigurable() { -#ifndef ROCKSDB_LITE - SimpleOptions so; - simple_option_info.emplace( - "bool", OptionTypeInfo{ - dynamic_unsafe_offsetof(so, so.b), OptionType::kBoolean, - OptionVerificationType::kNormal, OptionTypeFlags::kNone}); - simple_option_info.emplace( - "unique", - OptionTypeInfo::AsCustomUniquePtr( - dynamic_unsafe_offsetof(so, so.cu), OptionVerificationType::kNormal, - OptionTypeFlags::kAllowNull)); - simple_option_info.emplace( - "shared", - OptionTypeInfo::AsCustomSharedPtr( - dynamic_unsafe_offsetof(so, so.cs), OptionVerificationType::kNormal, - OptionTypeFlags::kAllowNull)); - simple_option_info.emplace( - "pointer", - OptionTypeInfo::AsCustomRawPtr( - dynamic_unsafe_offsetof(so, so.cp), OptionVerificationType::kNormal, - OptionTypeFlags::kAllowNull)); -#endif // ROCKSDB_LITE - RegisterOptions(&simple_, &simple_option_info); - } + SimpleConfigurable() { RegisterOptions(&simple_, &simple_option_info); } explicit SimpleConfigurable( const std::unordered_map* map) { From 0082f15062c0121084a4c9a43b1a880d8a8668c0 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 11:01:23 +0300 Subject: [PATCH 111/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index 48bca0c6ce..a88ab8f714 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -4,7 +4,7 @@ jobs: check: name: Check TARGETS file and code format #runs-on: ubuntu:20.04 - runs-on: [self-hosted, linux, x64, myrunner] + runs-on: [self-hosted, ubuntu, asrunner] container: image: ubuntu:latest steps: From d49deef5c91ec7e6d2b5501cf42ea539cab3bdf2 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:09:25 +0300 Subject: [PATCH 112/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 146 +++++++++++++++++++++++++++--- 1 file changed, 133 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 16ccc38593..bd24ec7bb0 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -1,12 +1,23 @@ name: CI -on: [pull_request, workflow_dispatch] -# on: -# workflow_dispatch: +on: + push: + workflow_dispatch: + workflow_call: + pull_request_review: + types: [submitted] + + +permissions: write-all jobs: - build: - runs-on: [self-hosted, linux, x64, myrunner] + Sanity: + uses: speedb-io/devops-sandbox/.github/workflows/sanity_check.yml@main + + Build: + needs: [Sanity] + if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} + runs-on: [self-hosted, ubuntu, asrunner] strategy: matrix: include: @@ -22,9 +33,10 @@ jobs: steps: - name: Pre-build run: | + env rm -rf /usr/share/dotnet || echo "" df -h - apk add git util-linux bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ + apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar python3 -m pip install lint-diffs flake8 - name: Checkout @@ -50,10 +62,6 @@ jobs: - name: ${{ matrix.name }} run: | - lscpu - df -h - ls /etc/apk/world - git config --global --add safe.directory $GITHUB_WORKSPACE if [ -d "$GITHUB_WORKSPACE/build" ]; then echo >&2 "error: the build directory should not exist" && false NIK fi @@ -79,6 +87,118 @@ jobs: -DWITH_TESTS=1 -DWITH_ALL_TESTS=1 -DWITH_EXAMPLES=1 ninja - sanity: - needs: [build] - uses: speedb-io/speedb/.github/workflows/sanity_check.yml@main + Performance: + if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} + needs: [Build] + uses: speedb-io/devops-sandbox/.github/workflows/perf-test.yml@main + + Unit_Black_White_box: + if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} + needs: [Build] + uses: speedb-io/devops-sandbox/.github/workflows/full-tests.yml@main + + Fuzz: + if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} + needs: [Build] + runs-on: [self-hosted, linux, x64, myrunner] + container: + image: ubuntu:18.04 + strategy: + matrix: + include: + - name: db_fuzzer + - name: db_map_fuzzer + + steps: + - uses: actions/checkout@v3 + + - name: Pre-build + run: | + apt update && apt install -y sudo python3 git clang-tools cmake make automake ucommon-utils libtool gettext pkg-config build-essential clang-10 zlib1g-dev libbz2-dev ninja-build liblzma-dev autoconf libsnappy-dev libzstd-dev liblz4-dev binutils m4 g++-10 unzip + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + + - name: Configure AWS credentials from Test account + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-2 + + - name: ${{ matrix.name }} + run: | + echo 'git clone https://github.com/google/libprotobuf-mutator.git \n + cd libprotobuf-mutator \n + git checkout ffd86a32874e5c08a143019aad1aaf0907294c9f \n + cd .. \n + export CC=clang && export CXX=clang++ && mkdir LPM && cd LPM \n + ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so \n + ln -s /usr/bin/clang-10 /usr/bin/clang \n + ln -s /usr/bin/clang++-10 /usr/bin/clang++ \n + cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release \n + ninja \n + ninja install \n + export PKG_CONFIG_PATH=$PWD:$PWD/external.protobuf/lib/pkgconfig/ \n + export PATH=$PWD/external.protobuf/bin:$PATH \n + cd $GITHUB_WORKSPACE \n + COMPILE_WITH_ASAN=1 PORTABLE=1 make -j2 static_lib \n + cd $GITHUB_WORKSPACE/fuzz \n + make ${{ matrix.name }} \n + ls -alFh $GITHUB_WORKSPACE/fuzz/ \n + echo ASAN_OPTIONS=detect_leaks=0 ./db_fuzzer \n' > prepfuz.sh + chmod +x prepfuz.sh + bash -xv prepfuz.sh + mkdir -p $GITHUB_WORKSPACE/out/ + ASAN_OPTIONS=detect_odr_violation=0 $GITHUB_WORKSPACE/fuzz/${{ matrix.name }} 2>&1 | sudo tee $GITHUB_WORKSPACE/out/${{ matrix.name }}.log + tail -20 $GITHUB_WORKSPACE/out/${{ matrix.name }}.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "${{ matrix.name }} failed!" + + - name: Copy ${{ matrix.name }} logs to S3 + run: | + aws s3 cp $GITHUB_WORKSPACE/out/${{ matrix.name }}.log s3://spdb-github-ci/ + + fuzzer_sum: + runs-on: [self-hosted, linux, x64, myrunner] + container: + image: ubuntu:18.04 + needs: [ Fuzz ] + + steps: + - uses: actions/checkout@v3 + + - name: pre + run: | + apt update && apt install -y sudo unzip curl + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + + - name: Configure AWS credentials from Test account + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-2 + + - name: download db_fuzzer.log from s3 + run: | + mkdir -p $GITHUB_WORKSPACE/out + aws s3 cp s3://spdb-github-ci/db_fuzzer.log $GITHUB_WORKSPACE/out/db_fuzzer.log || echo "db_fuzzer.log not found" + ls -alFh $GITHUB_WORKSPACE/out + + - name: download db_map_fuzzer.log from s3 + run: | + mkdir -p $GITHUB_WORKSPACE/out + aws s3 cp s3://spdb-github-ci/db_map_fuzzer.log $GITHUB_WORKSPACE/out/db_map_fuzzer.log || echo "db_map_fuzzer.log not found" + ls -alFh $GITHUB_WORKSPACE/out + + - name: fuzzersum + run: | + echo "~~~~ db_map_fuzzer LOGS ~~~~~" + tail -20 $GITHUB_WORKSPACE/out/db_map_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "db_map_fuzzer failed!" + echo "~~~~ db_fuzzer LOGS ~~~~~" + tail -20 $GITHUB_WORKSPACE/out/db_fuzzer.log | grep "==AddressSanitizer. Thread limit (4194304 threads) exceeded\. Dying\." || echo "db_fuzzer failed!" + + - name: clear s3 bucket + run: | + aws s3 rm s3://spdb-github-ci/ --recursive --include "*" From 8449449d143836011b87ad136af3c816a749d060 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:16:15 +0300 Subject: [PATCH 113/226] Update and rename full-tests.yml to qa-tests.yml --- .../{full-tests.yml => qa-tests.yml} | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) rename .github/workflows/{full-tests.yml => qa-tests.yml} (62%) diff --git a/.github/workflows/full-tests.yml b/.github/workflows/qa-tests.yml similarity index 62% rename from .github/workflows/full-tests.yml rename to .github/workflows/qa-tests.yml index d66c946cc3..42e90df5e8 100644 --- a/.github/workflows/full-tests.yml +++ b/.github/workflows/qa-tests.yml @@ -1,7 +1,8 @@ -name: Tests +name: QA Tests on: workflow_dispatch: + workflow_call: env: GTEST_THROW_ON_FAILURE: 0 @@ -25,11 +26,14 @@ jobs: matrix: include: - name: unit-test - command: make clean && make -j2 check && echo $? || echo $? - - mame: black-box - command: make clean && CRASH_TEST_EXT_ARGS=" --duration=500" make -j2 blackbox_asan_crash_test && echo $? || echo $? - - mame: white-box - command: make clean && CRASH_TEST_EXT_ARGS="--duration=500" make -j2 whitebox_asan_crash_test && echo $? || echo $? + short_test: TMPD=\home\ubuntu make -j2 check + long_test: TMPD=\home\ubuntu make -j2 check + - name: black-box + short_test: CRASH_TEST_EXT_ARGS="--duration=500" make -j2 blackbox_asan_crash_test + long_test: CRASH_TEST_EXT_ARGS="--duration=10000" make -j2 blackbox_asan_crash_test + - name: white-box + short_test: CRASH_TEST_EXT_ARGS="--duration=500" make -j2 whitebox_asan_crash_test + long_test: CRASH_TEST_EXT_ARGS="--duration=10000" make -j2 whitebox_asan_crash_test steps: @@ -42,7 +46,15 @@ jobs: apt-get update -y && apt-get install -y sudo default-jre default-jdk clang-format parallel moreutils g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" sudo mv /usr/bin/parallel /usr/bin/gnu_parallel sudo rm -rf /etc/parallel/config || echo "" + - name: ${{ matrix.name }} run: | - ${{ matrix.command }} + echo $GITHUB_REF_NAME + if echo $GITHUB_REF_NAME | grep -Eq 'release/'; then + echo long + make clean && ${{ matrix.long_test }} && echo $? || echo $? + else + echo short + make clean && ${{ matrix.short_test }} && echo $? || echo $? + fi df -H From 2de182d7da81778f5d115fc649983bb24e414a27 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:17:00 +0300 Subject: [PATCH 114/226] Update qa-tests.yml --- .github/workflows/qa-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/qa-tests.yml b/.github/workflows/qa-tests.yml index 42e90df5e8..15a0fd8de4 100644 --- a/.github/workflows/qa-tests.yml +++ b/.github/workflows/qa-tests.yml @@ -19,7 +19,7 @@ env: jobs: test: - runs-on: [self-hosted, linux, x64, myrunner] + runs-on: [self-hosted, ubuntu, asrunner] container: image: ubuntu:18.04 strategy: From d2130f9b54b92e4fae725c2c4bc6c52525db2f0f Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:24:17 +0300 Subject: [PATCH 115/226] Update and rename release_to_qa.yml to perf-test.yml --- .github/workflows/perf-test.yml | 21 ++++++ .github/workflows/release_to_qa.yml | 100 ---------------------------- 2 files changed, 21 insertions(+), 100 deletions(-) create mode 100644 .github/workflows/perf-test.yml delete mode 100644 .github/workflows/release_to_qa.yml diff --git a/.github/workflows/perf-test.yml b/.github/workflows/perf-test.yml new file mode 100644 index 0000000000..1395070382 --- /dev/null +++ b/.github/workflows/perf-test.yml @@ -0,0 +1,21 @@ +name: Performance Test + +on: + workflow_call: + workflow_dispatch: + + +jobs: + perf_test: + runs-on: perftest + + steps: + + - name: Run autoperf script via remotnic + run: | + echo Run auto perf test + #echo ${{ github.sender.login }} + #ssh -i ~/remo.k remo@9.148.1.183 /home/remo/tremotnic.sh main HG_auto_T1 ${{ github.event.pusher.name }} + ssh -i ~/remo.k remo@9.148.1.183 /home/remo/tremotnic.sh main HG_auto_T1 ${{ github.actor }} run_db_bench_large_obj + #ssh -i ~/remo.k remo@9.148.1.183 /home/remo/tremotnic.sh main HG_auto_T1 ${{ github.event.pusher.name }} run_db_bench_small_obj + #ssh -i ~/remo.k remo@9.148.1.183 /home/remo/tremotnic.sh main HG_auto_T1 ${{ github.event.pusher.name }} run_db_bench_huge_memtable diff --git a/.github/workflows/release_to_qa.yml b/.github/workflows/release_to_qa.yml deleted file mode 100644 index d89b0700f2..0000000000 --- a/.github/workflows/release_to_qa.yml +++ /dev/null @@ -1,100 +0,0 @@ -name: Release - -on: - - push: - branches: [ release/*, main ] - workflow_dispatch: - workflow_call: - -permissions: write-all - -jobs: - - Build: - runs-on: ubuntu-latest - strategy: - matrix: - include: - - name: verify build - command: cmake .. -GNinja - - name: optimized build - command: cmake .. -DCMAKE_BUILD_TYPE=Release -GNinja - - mame: clang build - command: CC=clang CXX=clang++ cmake .. -GNinja - container: - image: alpine:3.14 - - steps: - - name: Pre-build - run: | - env - rm -rf /usr/share/dotnet || echo "" - df -h - apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ - openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar - python3 -m pip install lint-diffs flake8 - - name: Checkout - uses: actions/checkout@v2 - - - - name: Prepare ccache timestamp - id: ccache_cache_timestamp - shell: cmake -P {0} - run: | - string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) - message("::set-output name=timestamp::${current_date}") - - - - name: ccache cache files - uses: actions/cache@v2 - with: - path: ~/.ccache - key: ${{runner.os}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} - restore-keys: | - ${{runner.os}}-ccache- - - - - name: ${{ matrix.name }} - run: | - df -h - ls /etc/apk/world - git config --global --add safe.directory $GITHUB_WORKSPACE - git config user.name "GitHub Actions Bot" - git config user.email "<>" - git pull - if [ -d "$GITHUB_WORKSPACE/build" ]; then - echo >&2 "error: the build directory should not exist" && false NIK - fi - if [ -d "~/.ccache" ]; then - echo "Already exists" - else - mkdir -p ~/.ccache - ls ~ | grep cache || echo "" - touch ~/.ccache/ccache.txt - echo "aaa" > ~/.ccache/ccache.txt - ls ~/.ccache - cat ~/.ccache/ccache.txt - fi - mkdir -p "$GITHUB_WORKSPACE/build" - cd "$GITHUB_WORKSPACE/build" - export "CCACHE_BASEDIR=$HOME" - export "CCACHE_DIR=$HOME/.ccache" - export "CCACHE_COMPILERCHECK=content" - ${{ matrix.command }} -DPORTABLE=1 -DWITH_GFLAGS=1 \ - -DWITH_ZLIB=1 -DWITH_SNAPPY=1 -DWITH_BZ2=1 -DWITH_LZ4=1 -DWITH_ZSTD=1 \ - -DWITH_JNI=1 -DJAVA_HOME=/usr/lib/jvm/default-jvm \ - -DWITH_BENCHMARK_TOOLS=1 -DWITH_CORE_TOOLS=1 -DWITH_TOOLS=1 \ - -DWITH_TESTS=1 -DWITH_ALL_TESTS=1 -DWITH_EXAMPLES=1 - ninja - - Sanity: - uses: speedb-io/speedb/.github/workflows/sanity_check.yml@main - - Unit_Black_White_box: - needs: [Build] - uses: speedb-io/speedb/.github/workflows/full-tests.yml@main - - Fuzz: - needs: [Build] - uses: speedb-io/speedb/.github/workflows/fuzz.yml@main From 6fd043a448c18e4b615e510b676c9919b3818723 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:26:07 +0300 Subject: [PATCH 116/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index bd24ec7bb0..784c0991b9 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -90,12 +90,12 @@ jobs: Performance: if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] - uses: speedb-io/devops-sandbox/.github/workflows/perf-test.yml@main + uses: speedb-io/speedb/.github/workflows/perf-test.yml@devops-dev Unit_Black_White_box: if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] - uses: speedb-io/devops-sandbox/.github/workflows/full-tests.yml@main + uses: speedb-io/speedb/.github/workflows/qa-tests.yml@devops-dev Fuzz: if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} From bc476d62f39616310be33556cd8b151160fed4a6 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:26:28 +0300 Subject: [PATCH 117/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 784c0991b9..1c3d9036a2 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -12,7 +12,7 @@ permissions: write-all jobs: Sanity: - uses: speedb-io/devops-sandbox/.github/workflows/sanity_check.yml@main + uses: speedb-io/speedb/.github/workflows/sanity_check.yml@main Build: needs: [Sanity] From f0a21b70df14c913a6eeb876f632b7724757a929 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:41:55 +0300 Subject: [PATCH 118/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 1c3d9036a2..5fe03b2f48 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -16,7 +16,7 @@ jobs: Build: needs: [Sanity] - if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} + if: ${{ github.event.review.state == 'approved' || github.event.name == workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} runs-on: [self-hosted, ubuntu, asrunner] strategy: matrix: From 2dc341bd2f619f71bf763455e7873799a14ce881 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:42:24 +0300 Subject: [PATCH 119/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 5fe03b2f48..37fe954e2e 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -16,7 +16,7 @@ jobs: Build: needs: [Sanity] - if: ${{ github.event.review.state == 'approved' || github.event.name == workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} + if: ${{ github.event.review.state == 'approved' || github.event.name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} runs-on: [self-hosted, ubuntu, asrunner] strategy: matrix: From 907f035c50e2f8b07f100115dad8aa10019f5344 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:45:22 +0300 Subject: [PATCH 120/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 37fe954e2e..46dab6dc84 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -16,7 +16,7 @@ jobs: Build: needs: [Sanity] - if: ${{ github.event.review.state == 'approved' || github.event.name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} + if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} runs-on: [self-hosted, ubuntu, asrunner] strategy: matrix: From 841a09590626253eb5c40b76efa6570f01c80f6d Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 13:53:28 +0300 Subject: [PATCH 121/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 46dab6dc84..f0586aad08 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -39,8 +39,9 @@ jobs: apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar python3 -m pip install lint-diffs flake8 + - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Prepare ccache timestamp From 9bf839de57cec2709c58fa2f9185fada1c3628c8 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 15:58:54 +0300 Subject: [PATCH 122/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index f0586aad08..4e54df0e55 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -33,6 +33,8 @@ jobs: steps: - name: Pre-build run: | + git config --global --unset http.proxy + git config --global --unset https.proxy env rm -rf /usr/share/dotnet || echo "" df -h From 74c0faa5e59db03f4565da43cbe269fef7308269 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 16:02:00 +0300 Subject: [PATCH 123/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 4e54df0e55..1ff38de784 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -12,7 +12,7 @@ permissions: write-all jobs: Sanity: - uses: speedb-io/speedb/.github/workflows/sanity_check.yml@main + uses: speedb-io/speedb/.github/workflows/sanity_check.yml@devops-dev Build: needs: [Sanity] From a7d74321d79a35159fd66862bc7b43fa7706742a Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 16:04:23 +0300 Subject: [PATCH 124/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 1ff38de784..bb28a2a39b 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -33,14 +33,14 @@ jobs: steps: - name: Pre-build run: | - git config --global --unset http.proxy - git config --global --unset https.proxy env rm -rf /usr/share/dotnet || echo "" df -h apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar python3 -m pip install lint-diffs flake8 + git config --global --unset http.proxy + git config --global --unset https.proxy - name: Checkout uses: actions/checkout@v3 From 053859f834d6ff9cceaf2f8b2b44d4d70e69b947 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 16:11:15 +0300 Subject: [PATCH 125/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index bb28a2a39b..1e437db2a7 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -39,8 +39,8 @@ jobs: apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar python3 -m pip install lint-diffs flake8 - git config --global --unset http.proxy - git config --global --unset https.proxy + #git config --global --unset http.proxy + #git config --global --unset https.proxy - name: Checkout uses: actions/checkout@v3 From 2184a0f2eb9cdd06340374aec27d049a89bef039 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 16:14:16 +0300 Subject: [PATCH 126/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 1e437db2a7..09f8bf3774 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -39,8 +39,9 @@ jobs: apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar python3 -m pip install lint-diffs flake8 - #git config --global --unset http.proxy - #git config --global --unset https.proxy + echo aaa + git config --global --unset http.proxy + git config --global --unset https.proxy - name: Checkout uses: actions/checkout@v3 From d1f910abeb1f1fcf0c722dc707b4f45c56cc8867 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 16:19:24 +0300 Subject: [PATCH 127/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 09f8bf3774..5fa4749631 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -39,7 +39,7 @@ jobs: apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar python3 -m pip install lint-diffs flake8 - echo aaa + sleep 3600 git config --global --unset http.proxy git config --global --unset https.proxy From 38c0a6ec0191d9f66d861f4ee59389992111f167 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 16:24:55 +0300 Subject: [PATCH 128/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 5fa4749631..11f12a0fa1 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -36,12 +36,14 @@ jobs: env rm -rf /usr/share/dotnet || echo "" df -h - apk add git bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ - openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar - python3 -m pip install lint-diffs flake8 - sleep 3600 + apk add git git config --global --unset http.proxy git config --global --unset https.proxy + apt add bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ + openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar + python3 -m pip install lint-diffs flake8 + #sleep 3600 + - name: Checkout uses: actions/checkout@v3 From 390bbfd773036ac7a4f561b5f0a8fa594e7216cc Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 17 Jul 2022 16:27:30 +0300 Subject: [PATCH 129/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 11f12a0fa1..3af0d84acc 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -37,12 +37,12 @@ jobs: rm -rf /usr/share/dotnet || echo "" df -h apk add git - git config --global --unset http.proxy - git config --global --unset https.proxy - apt add bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ + #git config --global --unset http.proxy + #git config --global --unset https.proxy + apk add bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar python3 -m pip install lint-diffs flake8 - #sleep 3600 + sleep 3600 - name: Checkout From 11ef20c46c16528ab19655c7651f4849e6fc3e9b Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Thu, 8 Jul 2021 16:10:59 +0300 Subject: [PATCH 130/226] SPDB-180: general: avoid comparing Status using == as it only compares status code This breaks when comparing against e.g. `Status::NoSpace()` because it has a status code of `Code::kIOError` and only a subcode of `SubCode::kNoSpace`. --- cache/cache_reservation_manager.cc | 2 +- db/db_impl/db_impl_compaction_flush.cc | 4 +- db/error_handler.cc | 4 +- include/rocksdb/utilities/env_mirror.h | 39 ++++++++++------ trace_replay/trace_replay.cc | 2 +- utilities/env_mirror.cc | 64 +++++++++++++++++--------- 6 files changed, 74 insertions(+), 41 deletions(-) diff --git a/cache/cache_reservation_manager.cc b/cache/cache_reservation_manager.cc index 3cc149b432..29192d3872 100644 --- a/cache/cache_reservation_manager.cc +++ b/cache/cache_reservation_manager.cc @@ -118,7 +118,7 @@ Status CacheReservationManagerImpl::IncreaseCacheReservation( return_status = cache_->Insert(GetNextCacheKey(), nullptr, kSizeDummyEntry, GetNoopDeleterForRole(), &handle); - if (return_status != Status::OK()) { + if (!return_status.ok()) { return return_status; } diff --git a/db/db_impl/db_impl_compaction_flush.cc b/db/db_impl/db_impl_compaction_flush.cc index 7808de8de8..3efe1e1c82 100644 --- a/db/db_impl/db_impl_compaction_flush.cc +++ b/db/db_impl/db_impl_compaction_flush.cc @@ -318,7 +318,7 @@ Status DBImpl::FlushMemTableToOutputFile( error_handler_.SetBGError(s, BackgroundErrorReason::kFlushNoWAL); } } else { - assert(s == log_io_s); + assert(s.code() == log_io_s.code() && s.subcode() == log_io_s.subcode()); Status new_bg_error = s; error_handler_.SetBGError(new_bg_error, BackgroundErrorReason::kFlush); } @@ -782,7 +782,7 @@ Status DBImpl::AtomicFlushMemTablesToOutputFiles( error_handler_.SetBGError(s, BackgroundErrorReason::kFlushNoWAL); } } else { - assert(s == log_io_s); + assert(s.code() == log_io_s.code() && s.subcode() == log_io_s.subcode()); Status new_bg_error = s; error_handler_.SetBGError(new_bg_error, BackgroundErrorReason::kFlush); } diff --git a/db/error_handler.cc b/db/error_handler.cc index b00611ac92..4ba8c131e9 100644 --- a/db/error_handler.cc +++ b/db/error_handler.cc @@ -518,8 +518,8 @@ Status ErrorHandler::OverrideNoSpaceError(const Status& bg_error, { uint64_t free_space; - if (db_options_.env->GetFreeSpace(db_options_.db_paths[0].path, - &free_space) == Status::NotSupported()) { + if (db_options_.env->GetFreeSpace(db_options_.db_paths[0].path, &free_space) + .IsNotSupported()) { *auto_recovery = false; } } diff --git a/include/rocksdb/utilities/env_mirror.h b/include/rocksdb/utilities/env_mirror.h index 8e96ac4108..b604baa799 100644 --- a/include/rocksdb/utilities/env_mirror.h +++ b/include/rocksdb/utilities/env_mirror.h @@ -60,13 +60,15 @@ class EnvMirror : public EnvWrapper { std::unique_ptr br; Status as = a_->NewDirectory(name, result); Status bs = b_->NewDirectory(name, &br); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status FileExists(const std::string& f) override { Status as = a_->FileExists(f); Status bs = b_->FileExists(f); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } #if defined(_MSC_VER) @@ -79,7 +81,8 @@ class EnvMirror : public EnvWrapper { std::vector ar, br; Status as = a_->GetChildren(dir, &ar); Status bs = b_->GetChildren(dir, &br); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); std::sort(ar.begin(), ar.end()); std::sort(br.begin(), br.end()); if (!as.ok() || ar != br) { @@ -94,32 +97,37 @@ class EnvMirror : public EnvWrapper { Status DeleteFile(const std::string& f) override { Status as = a_->DeleteFile(f); Status bs = b_->DeleteFile(f); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status CreateDir(const std::string& d) override { Status as = a_->CreateDir(d); Status bs = b_->CreateDir(d); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status CreateDirIfMissing(const std::string& d) override { Status as = a_->CreateDirIfMissing(d); Status bs = b_->CreateDirIfMissing(d); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status DeleteDir(const std::string& d) override { Status as = a_->DeleteDir(d); Status bs = b_->DeleteDir(d); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status GetFileSize(const std::string& f, uint64_t* s) override { uint64_t asize, bsize; Status as = a_->GetFileSize(f, &asize); Status bs = b_->GetFileSize(f, &bsize); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); assert(!as.ok() || asize == bsize); *s = asize; return as; @@ -130,7 +138,8 @@ class EnvMirror : public EnvWrapper { uint64_t amtime, bmtime; Status as = a_->GetFileModificationTime(fname, &amtime); Status bs = b_->GetFileModificationTime(fname, &bmtime); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); assert(!as.ok() || amtime - bmtime < 10000 || bmtime - amtime < 10000); *file_mtime = amtime; return as; @@ -139,14 +148,16 @@ class EnvMirror : public EnvWrapper { Status RenameFile(const std::string& s, const std::string& t) override { Status as = a_->RenameFile(s, t); Status bs = b_->RenameFile(s, t); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status LinkFile(const std::string& s, const std::string& t) override { Status as = a_->LinkFile(s, t); Status bs = b_->LinkFile(s, t); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } @@ -160,7 +171,8 @@ class EnvMirror : public EnvWrapper { FileLock *al, *bl; Status as = a_->LockFile(f, &al); Status bs = b_->LockFile(f, &bl); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); if (as.ok()) *l = new FileLockMirror(al, bl); return as; } @@ -169,7 +181,8 @@ class EnvMirror : public EnvWrapper { FileLockMirror* ml = static_cast(l); Status as = a_->UnlockFile(ml->a_); Status bs = b_->UnlockFile(ml->b_); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); delete ml; return as; } diff --git a/trace_replay/trace_replay.cc b/trace_replay/trace_replay.cc index 37b95852b7..bd3211025c 100644 --- a/trace_replay/trace_replay.cc +++ b/trace_replay/trace_replay.cc @@ -73,7 +73,7 @@ Status TracerHelper::ParseTraceHeader(const Trace& header, int* trace_version, Status s; s = ParseVersionStr(t_v_str, trace_version); - if (s != Status::OK()) { + if (!s.ok()) { return s; } s = ParseVersionStr(db_v_str, db_version); diff --git a/utilities/env_mirror.cc b/utilities/env_mirror.cc index 3ea323b429..627ce0664c 100644 --- a/utilities/env_mirror.cc +++ b/utilities/env_mirror.cc @@ -24,7 +24,7 @@ class SequentialFileMirror : public SequentialFile { Status Read(size_t n, Slice* result, char* scratch) override { Slice aslice; Status as = a_->Read(n, &aslice, scratch); - if (as == Status::OK()) { + if (as.ok()) { char* bscratch = new char[n]; Slice bslice; #ifndef NDEBUG @@ -34,7 +34,8 @@ class SequentialFileMirror : public SequentialFile { while (left) { Status bs = b_->Read(left, &bslice, bscratch); #ifndef NDEBUG - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); assert(memcmp(bscratch, scratch + off, bslice.size()) == 0); off += bslice.size(); #endif @@ -44,7 +45,8 @@ class SequentialFileMirror : public SequentialFile { *result = aslice; } else { Status bs = b_->Read(n, result, scratch); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); } return as; } @@ -52,13 +54,15 @@ class SequentialFileMirror : public SequentialFile { Status Skip(uint64_t n) override { Status as = a_->Skip(n); Status bs = b_->Skip(n); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status InvalidateCache(size_t offset, size_t length) override { Status as = a_->InvalidateCache(offset, length); Status bs = b_->InvalidateCache(offset, length); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; }; }; @@ -72,14 +76,15 @@ class RandomAccessFileMirror : public RandomAccessFile { Status Read(uint64_t offset, size_t n, Slice* result, char* scratch) const override { Status as = a_->Read(offset, n, result, scratch); - if (as == Status::OK()) { + if (as.ok()) { char* bscratch = new char[n]; Slice bslice; size_t off = 0; size_t left = result->size(); while (left) { Status bs = b_->Read(offset + off, left, &bslice, bscratch); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); assert(memcmp(bscratch, scratch + off, bslice.size()) == 0); off += bslice.size(); left -= bslice.size(); @@ -87,7 +92,8 @@ class RandomAccessFileMirror : public RandomAccessFile { delete[] bscratch; } else { Status bs = b_->Read(offset, n, result, scratch); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); } return as; } @@ -108,7 +114,8 @@ class WritableFileMirror : public WritableFile { Status Append(const Slice& data) override { Status as = a_->Append(data); Status bs = b_->Append(data); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status Append(const Slice& data, @@ -118,7 +125,8 @@ class WritableFileMirror : public WritableFile { Status PositionedAppend(const Slice& data, uint64_t offset) override { Status as = a_->PositionedAppend(data, offset); Status bs = b_->PositionedAppend(data, offset); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status PositionedAppend( @@ -129,31 +137,36 @@ class WritableFileMirror : public WritableFile { Status Truncate(uint64_t size) override { Status as = a_->Truncate(size); Status bs = b_->Truncate(size); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status Close() override { Status as = a_->Close(); Status bs = b_->Close(); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status Flush() override { Status as = a_->Flush(); Status bs = b_->Flush(); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status Sync() override { Status as = a_->Sync(); Status bs = b_->Sync(); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status Fsync() override { Status as = a_->Fsync(); Status bs = b_->Fsync(); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } bool IsSyncThreadSafe() const override { @@ -186,7 +199,8 @@ class WritableFileMirror : public WritableFile { Status InvalidateCache(size_t offset, size_t length) override { Status as = a_->InvalidateCache(offset, length); Status bs = b_->InvalidateCache(offset, length); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } @@ -194,13 +208,15 @@ class WritableFileMirror : public WritableFile { Status Allocate(uint64_t offset, uint64_t length) override { Status as = a_->Allocate(offset, length); Status bs = b_->Allocate(offset, length); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } Status RangeSync(uint64_t offset, uint64_t nbytes) override { Status as = a_->RangeSync(offset, nbytes); Status bs = b_->RangeSync(offset, nbytes); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); return as; } }; @@ -214,7 +230,8 @@ Status EnvMirror::NewSequentialFile(const std::string& f, SequentialFileMirror* mf = new SequentialFileMirror(f); Status as = a_->NewSequentialFile(f, &mf->a_, options); Status bs = b_->NewSequentialFile(f, &mf->b_, options); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); if (as.ok()) r->reset(mf); else @@ -231,7 +248,8 @@ Status EnvMirror::NewRandomAccessFile(const std::string& f, RandomAccessFileMirror* mf = new RandomAccessFileMirror(f); Status as = a_->NewRandomAccessFile(f, &mf->a_, options); Status bs = b_->NewRandomAccessFile(f, &mf->b_, options); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); if (as.ok()) r->reset(mf); else @@ -246,7 +264,8 @@ Status EnvMirror::NewWritableFile(const std::string& f, WritableFileMirror* mf = new WritableFileMirror(f, options); Status as = a_->NewWritableFile(f, &mf->a_, options); Status bs = b_->NewWritableFile(f, &mf->b_, options); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); if (as.ok()) r->reset(mf); else @@ -263,7 +282,8 @@ Status EnvMirror::ReuseWritableFile(const std::string& fname, WritableFileMirror* mf = new WritableFileMirror(fname, options); Status as = a_->ReuseWritableFile(fname, old_fname, &mf->a_, options); Status bs = b_->ReuseWritableFile(fname, old_fname, &mf->b_, options); - assert(as == bs); + assert(as.code() == bs.code()); + assert(as.subcode() == bs.subcode()); if (as.ok()) r->reset(mf); else From 2c6de6dd20a92413bfe7494c2cafafc5315cae5d Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 13 Jul 2022 15:04:43 +0300 Subject: [PATCH 131/226] SPDB-180: tests: avoid comparing Status using == as it only compares status code This breaks in cases such as `Status::NoSpace()`, which has a status code of `Code::kIOError`, and a subcode of `SubCode::kNoSpace`, but the comparison ends up checking only if a general IO error happened. --- cache/cache_reservation_manager_test.cc | 44 ++++++------- db/blob/db_blob_index_test.cc | 3 +- db/compact_files_test.cc | 2 +- db/db_basic_test.cc | 43 +++++++------ db/db_compaction_test.cc | 64 +++++++++---------- db/db_flush_test.cc | 2 +- db/db_sst_test.cc | 2 +- db/db_test.cc | 8 +-- db/db_test2.cc | 6 +- db/db_test_util.cc | 13 ++-- db/db_wal_test.cc | 2 +- db/db_with_timestamp_basic_test.cc | 13 ++-- db/error_handler_fs_test.cc | 4 +- db/external_sst_file_basic_test.cc | 2 +- db/fault_injection_test.cc | 2 +- db/import_column_family_test.cc | 57 +++++++++++------ db/write_batch_test.cc | 2 +- db_stress_tool/db_stress_test_base.cc | 3 +- env/env_basic_test.cc | 8 +-- logging/auto_roll_logger_test.cc | 4 +- logging/env_logger_test.cc | 16 ++--- .../block_cache_trace_analyzer_test.cc | 2 +- utilities/backup/backup_engine_test.cc | 42 ++++++------ utilities/checkpoint/checkpoint_test.cc | 18 ++++-- utilities/transactions/transaction_test.cc | 38 +++++------ utilities/transactions/transaction_test.h | 7 +- .../write_prepared_transaction_test.cc | 6 +- 27 files changed, 219 insertions(+), 194 deletions(-) diff --git a/cache/cache_reservation_manager_test.cc b/cache/cache_reservation_manager_test.cc index 87af653bc2..e56cc1a556 100644 --- a/cache/cache_reservation_manager_test.cc +++ b/cache/cache_reservation_manager_test.cc @@ -40,7 +40,7 @@ class CacheReservationManagerTest : public ::testing::Test { TEST_F(CacheReservationManagerTest, GenerateCacheKey) { std::size_t new_mem_used = 1 * kSizeDummyEntry; Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_GE(cache->GetPinnedUsage(), 1 * kSizeDummyEntry); ASSERT_LT(cache->GetPinnedUsage(), 1 * kSizeDummyEntry + kMetaDataChargeOverhead); @@ -66,7 +66,7 @@ TEST_F(CacheReservationManagerTest, GenerateCacheKey) { TEST_F(CacheReservationManagerTest, KeepCacheReservationTheSame) { std::size_t new_mem_used = 1 * kSizeDummyEntry; Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 1 * kSizeDummyEntry); ASSERT_EQ(test_cache_rev_mng->GetTotalMemoryUsed(), new_mem_used); @@ -76,7 +76,7 @@ TEST_F(CacheReservationManagerTest, KeepCacheReservationTheSame) { 1 * kSizeDummyEntry + kMetaDataChargeOverhead); s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) + EXPECT_OK(s) << "Failed to keep cache reservation the same when new_mem_used equals " "to current cache reservation"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), @@ -95,8 +95,7 @@ TEST_F(CacheReservationManagerTest, IncreaseCacheReservationByMultiplesOfDummyEntrySize) { std::size_t new_mem_used = 2 * kSizeDummyEntry; Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) - << "Failed to increase cache reservation correctly"; + EXPECT_OK(s) << "Failed to increase cache reservation correctly"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 2 * kSizeDummyEntry) << "Failed to bookkeep cache reservation increase correctly"; @@ -113,8 +112,7 @@ TEST_F(CacheReservationManagerTest, IncreaseCacheReservationNotByMultiplesOfDummyEntrySize) { std::size_t new_mem_used = 2 * kSizeDummyEntry + kSizeDummyEntry / 2; Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) - << "Failed to increase cache reservation correctly"; + EXPECT_OK(s) << "Failed to increase cache reservation correctly"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 3 * kSizeDummyEntry) << "Failed to bookkeep cache reservation increase correctly"; @@ -147,7 +145,7 @@ TEST(CacheReservationManagerIncreaseReservcationOnFullCacheTest, std::size_t new_mem_used = kSmallCacheCapacity + 1; Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::Incomplete()) + EXPECT_TRUE(s.IsIncomplete()) << "Failed to return status to indicate failure of dummy entry insertion " "during cache reservation on full cache"; EXPECT_GE(test_cache_rev_mng->GetTotalReservedCacheSize(), @@ -170,7 +168,7 @@ TEST(CacheReservationManagerIncreaseReservcationOnFullCacheTest, new_mem_used = kSmallCacheCapacity / 2; // 2 dummy entries s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) + EXPECT_OK(s) << "Failed to decrease cache reservation after encountering cache " "reservation failure due to full cache"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), @@ -192,7 +190,7 @@ TEST(CacheReservationManagerIncreaseReservcationOnFullCacheTest, // Create cache full again for subsequent tests new_mem_used = kSmallCacheCapacity + 1; s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::Incomplete()) + EXPECT_TRUE(s.IsIncomplete()) << "Failed to return status to indicate failure of dummy entry insertion " "during cache reservation on full cache"; EXPECT_GE(test_cache_rev_mng->GetTotalReservedCacheSize(), @@ -218,7 +216,7 @@ TEST(CacheReservationManagerIncreaseReservcationOnFullCacheTest, cache->SetCapacity(kBigCacheCapacity); new_mem_used = kSmallCacheCapacity + 1; s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) + EXPECT_OK(s) << "Failed to increase cache reservation after increasing cache capacity " "and mitigating cache full error"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), @@ -240,7 +238,7 @@ TEST_F(CacheReservationManagerTest, DecreaseCacheReservationByMultiplesOfDummyEntrySize) { std::size_t new_mem_used = 2 * kSizeDummyEntry; Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 2 * kSizeDummyEntry); ASSERT_EQ(test_cache_rev_mng->GetTotalMemoryUsed(), new_mem_used); @@ -250,8 +248,7 @@ TEST_F(CacheReservationManagerTest, new_mem_used = 1 * kSizeDummyEntry; s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) - << "Failed to decrease cache reservation correctly"; + EXPECT_OK(s) << "Failed to decrease cache reservation correctly"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 1 * kSizeDummyEntry) << "Failed to bookkeep cache reservation decrease correctly"; @@ -268,7 +265,7 @@ TEST_F(CacheReservationManagerTest, DecreaseCacheReservationNotByMultiplesOfDummyEntrySize) { std::size_t new_mem_used = 2 * kSizeDummyEntry; Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 2 * kSizeDummyEntry); ASSERT_EQ(test_cache_rev_mng->GetTotalMemoryUsed(), new_mem_used); @@ -278,8 +275,7 @@ TEST_F(CacheReservationManagerTest, new_mem_used = kSizeDummyEntry / 2; s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) - << "Failed to decrease cache reservation correctly"; + EXPECT_OK(s) << "Failed to decrease cache reservation correctly"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 1 * kSizeDummyEntry) << "Failed to bookkeep cache reservation decrease correctly"; @@ -309,7 +305,7 @@ TEST(CacheReservationManagerWithDelayedDecreaseTest, std::size_t new_mem_used = 8 * kSizeDummyEntry; Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 8 * kSizeDummyEntry); ASSERT_EQ(test_cache_rev_mng->GetTotalMemoryUsed(), new_mem_used); @@ -320,7 +316,7 @@ TEST(CacheReservationManagerWithDelayedDecreaseTest, new_mem_used = 6 * kSizeDummyEntry; s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) << "Failed to delay decreasing cache reservation"; + EXPECT_OK(s) << "Failed to delay decreasing cache reservation"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 8 * kSizeDummyEntry) << "Failed to bookkeep correctly when delaying cache reservation " @@ -332,7 +328,7 @@ TEST(CacheReservationManagerWithDelayedDecreaseTest, new_mem_used = 7 * kSizeDummyEntry; s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) << "Failed to delay decreasing cache reservation"; + EXPECT_OK(s) << "Failed to delay decreasing cache reservation"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), 8 * kSizeDummyEntry) << "Failed to bookkeep correctly when delaying cache reservation " @@ -344,7 +340,7 @@ TEST(CacheReservationManagerWithDelayedDecreaseTest, new_mem_used = 6 * kSizeDummyEntry - 1; s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - EXPECT_EQ(s, Status::OK()) + EXPECT_OK(s) << "Failed to decrease cache reservation correctly when new_mem_used < " "GetTotalReservedCacheSize() * 3 / 4 on delayed decrease mode"; EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), @@ -381,7 +377,7 @@ TEST(CacheReservationManagerDestructorTest, cache); std::size_t new_mem_used = 1 * kSizeDummyEntry; Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_GE(cache->GetPinnedUsage(), 1 * kSizeDummyEntry); ASSERT_LT(cache->GetPinnedUsage(), 1 * kSizeDummyEntry + kMetaDataChargeOverhead); @@ -417,7 +413,7 @@ TEST(CacheReservationHandleTest, HandleTest) { Status s = test_cache_rev_mng->MakeCacheReservation( incremental_mem_used_handle_1, &handle_1); mem_used = mem_used + incremental_mem_used_handle_1; - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); EXPECT_TRUE(handle_1 != nullptr); EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), mem_used); EXPECT_EQ(test_cache_rev_mng->GetTotalMemoryUsed(), mem_used); @@ -427,7 +423,7 @@ TEST(CacheReservationHandleTest, HandleTest) { s = test_cache_rev_mng->MakeCacheReservation(incremental_mem_used_handle_2, &handle_2); mem_used = mem_used + incremental_mem_used_handle_2; - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); EXPECT_TRUE(handle_2 != nullptr); EXPECT_EQ(test_cache_rev_mng->GetTotalReservedCacheSize(), mem_used); EXPECT_EQ(test_cache_rev_mng->GetTotalMemoryUsed(), mem_used); diff --git a/db/blob/db_blob_index_test.cc b/db/blob/db_blob_index_test.cc index d93aa6bbcc..6bf5e899b1 100644 --- a/db/blob/db_blob_index_test.cc +++ b/db/blob/db_blob_index_test.cc @@ -506,7 +506,8 @@ TEST_F(DBBlobIndexTest, IntegratedBlobIterate) { auto check_iterator = [&](Iterator* iterator, Status expected_status, const Slice& expected_value) { - ASSERT_EQ(expected_status, iterator->status()); + ASSERT_EQ(expected_status.code(), iterator->status().code()); + ASSERT_EQ(expected_status.subcode(), iterator->status().subcode()); if (expected_status.ok()) { ASSERT_TRUE(iterator->Valid()); ASSERT_EQ(expected_value, iterator->value()); diff --git a/db/compact_files_test.cc b/db/compact_files_test.cc index 29e3494eaa..a3d4a44b09 100644 --- a/db/compact_files_test.cc +++ b/db/compact_files_test.cc @@ -228,7 +228,7 @@ TEST_F(CompactFilesTest, ObsoleteFiles) { // verify all compaction input files are deleted for (auto fname : l0_files) { - ASSERT_EQ(Status::NotFound(), env_->FileExists(fname)); + ASSERT_TRUE(env_->FileExists(fname).IsNotFound()); } delete db; } diff --git a/db/db_basic_test.cc b/db/db_basic_test.cc index 3833066dd9..671127b248 100644 --- a/db/db_basic_test.cc +++ b/db/db_basic_test.cc @@ -1125,7 +1125,7 @@ TEST_F(DBBasicTest, DBClose) { s = db->Close(); ASSERT_EQ(env->GetCloseCount(), 1); - ASSERT_EQ(s, Status::IOError()); + ASSERT_TRUE(s.IsIOError()); delete db; ASSERT_EQ(env->GetCloseCount(), 1); @@ -1145,7 +1145,7 @@ TEST_F(DBBasicTest, DBClose) { ASSERT_TRUE(db != nullptr); s = db->Close(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); delete db; ASSERT_EQ(env->GetCloseCount(), 2); options.info_log.reset(); @@ -1168,15 +1168,15 @@ TEST_F(DBBasicTest, DBCloseFlushError) { ASSERT_OK(Put("key3", "value3")); fault_injection_env->SetFilesystemActive(false); Status s = dbfull()->Close(); - ASSERT_NE(s, Status::OK()); + ASSERT_NOK(s); // retry should return the same error s = dbfull()->Close(); - ASSERT_NE(s, Status::OK()); + ASSERT_NOK(s); fault_injection_env->SetFilesystemActive(true); // retry close() is no-op even the system is back. Could be improved if // Close() is retry-able: #9029 s = dbfull()->Close(); - ASSERT_NE(s, Status::OK()); + ASSERT_NOK(s); Destroy(options); } @@ -2247,7 +2247,7 @@ TEST_F(DBBasicTest, MultiGetIOBufferOverrun) { // Make the value compressible. A purely random string doesn't compress // and the resultant data block will not be compressed std::string value(rnd.RandomString(128) + zero_str); - assert(Put(Key(i), value) == Status::OK()); + ASSERT_OK(Put(Key(i), value)); } ASSERT_OK(Flush()); @@ -2789,8 +2789,11 @@ class DBBasicTestMultiGet : public DBTestBase { // Make the value compressible. A purely random string doesn't compress // and the resultant data block will not be compressed values_.emplace_back(rnd.RandomString(128) + zero_str); - assert(((num_cfs == 1) ? Put(Key(i), values_[i]) - : Put(cf, Key(i), values_[i])) == Status::OK()); + if (num_cfs == 1) { + assert(Put(Key(i), values_[i]).ok()); + } else { + assert(Put(cf, Key(i), values_[i]).ok()); + } } if (num_cfs == 1) { EXPECT_OK(Flush()); @@ -2802,9 +2805,11 @@ class DBBasicTestMultiGet : public DBTestBase { // block cannot gain space by compression uncompressable_values_.emplace_back(rnd.RandomString(256) + '\0'); std::string tmp_key = "a" + Key(i); - assert(((num_cfs == 1) ? Put(tmp_key, uncompressable_values_[i]) - : Put(cf, tmp_key, uncompressable_values_[i])) == - Status::OK()); + if (num_cfs == 1) { + assert(Put(tmp_key, uncompressable_values_[i]).ok()); + } else { + assert(Put(cf, tmp_key, uncompressable_values_[i]).ok()); + } } if (num_cfs == 1) { EXPECT_OK(Flush()); @@ -3229,8 +3234,8 @@ TEST_P(DBBasicTestWithParallelIO, MultiGetWithChecksumMismatch) { keys.data(), values.data(), statuses.data(), true); ASSERT_TRUE(CheckValue(0, values[0].ToString())); // ASSERT_TRUE(CheckValue(50, values[1].ToString())); - ASSERT_EQ(statuses[0], Status::OK()); - ASSERT_EQ(statuses[1], Status::Corruption()); + ASSERT_OK(statuses[0]); + ASSERT_TRUE(statuses[1].IsCorruption()); SyncPoint::GetInstance()->DisableProcessing(); } @@ -3275,8 +3280,8 @@ TEST_P(DBBasicTestWithParallelIO, MultiGetWithMissingFile) { dbfull()->MultiGet(ro, dbfull()->DefaultColumnFamily(), keys.size(), keys.data(), values.data(), statuses.data(), true); - ASSERT_EQ(statuses[0], Status::IOError()); - ASSERT_EQ(statuses[1], Status::IOError()); + ASSERT_TRUE(statuses[0].IsIOError()); + ASSERT_TRUE(statuses[1].IsIOError()); SyncPoint::GetInstance()->DisableProcessing(); } @@ -3484,9 +3489,7 @@ class DBBasicTestMultiGetDeadline : public DBBasicTestMultiGet { if (i < num_ok) { EXPECT_OK(statuses[i]); } else { - if (statuses[i] != Status::TimedOut()) { - EXPECT_EQ(statuses[i], Status::TimedOut()); - } + EXPECT_TRUE(statuses[i].IsTimedOut()); } } } @@ -3811,7 +3814,7 @@ TEST_P(DBBasicTestDeadline, PointLookupDeadline) { std::string value; Status s = dbfull()->Get(ro, "k50", &value); if (fs->TimedOut()) { - ASSERT_EQ(s, Status::TimedOut()); + ASSERT_TRUE(s.IsTimedOut()); } else { timedout = false; ASSERT_OK(s); @@ -3898,7 +3901,7 @@ TEST_P(DBBasicTestDeadline, IteratorDeadline) { } if (fs->TimedOut()) { ASSERT_FALSE(iter->Valid()); - ASSERT_EQ(iter->status(), Status::TimedOut()); + ASSERT_TRUE(iter->status().IsTimedOut()); } else { timedout = false; ASSERT_OK(iter->status()); diff --git a/db/db_compaction_test.cc b/db/db_compaction_test.cc index 0de7e4f662..bc1d060d8d 100644 --- a/db/db_compaction_test.cc +++ b/db/db_compaction_test.cc @@ -6633,12 +6633,12 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff1) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); Destroy(options); Reopen(options); @@ -6649,7 +6649,7 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff1) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency( {{"DBImpl::FlushMemTable:FlushMemTableFinished", "BackgroundCallCompaction:0"}}); @@ -6660,7 +6660,7 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff1) { ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing(); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); ASSERT_EQ(s.severity(), ROCKSDB_NAMESPACE::Status::Severity::kUnrecoverableError); @@ -6674,12 +6674,12 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff1) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); // Each write will be similated as corrupted. // Since the file system returns IOStatus::Corruption, it is an @@ -6688,7 +6688,7 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff1) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency( {{"DBImpl::FlushMemTable:FlushMemTableFinished", "BackgroundCallCompaction:0"}}); @@ -6698,7 +6698,7 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff1) { ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing(); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); ASSERT_EQ(s.severity(), ROCKSDB_NAMESPACE::Status::Severity::kUnrecoverableError); @@ -6727,12 +6727,12 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff2) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); Destroy(options); Reopen(options); @@ -6740,7 +6740,7 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff2) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency( {{"DBImpl::FlushMemTable:FlushMemTableFinished", "BackgroundCallCompaction:0"}}); @@ -6751,9 +6751,9 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff2) { ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing(); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); SyncPoint::GetInstance()->DisableProcessing(); Destroy(options); Reopen(options); @@ -6764,19 +6764,19 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff2) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); // options is not set, the checksum handoff will not be triggered fault_fs->SetChecksumHandoffFuncType(ChecksumType::kCRC32c); ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency( {{"DBImpl::FlushMemTable:FlushMemTableFinished", "BackgroundCallCompaction:0"}}); @@ -6786,9 +6786,9 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoff2) { ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing(); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); Destroy(options); } @@ -6814,12 +6814,12 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoffManifest1) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); Destroy(options); Reopen(options); @@ -6830,7 +6830,7 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoffManifest1) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency( {{"DBImpl::FlushMemTable:FlushMemTableFinished", "BackgroundCallCompaction:0"}}); @@ -6841,7 +6841,7 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoffManifest1) { ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing(); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); ASSERT_EQ(s.severity(), ROCKSDB_NAMESPACE::Status::Severity::kFatalError); SyncPoint::GetInstance()->DisableProcessing(); @@ -6871,12 +6871,12 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoffManifest2) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); // Each write will be similated as corrupted. // Since the file system returns IOStatus::Corruption, it is mapped to @@ -6885,7 +6885,7 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoffManifest2) { ASSERT_OK(Put(Key(0), "value1")); ASSERT_OK(Put(Key(2), "value2")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency( {{"DBImpl::FlushMemTable:FlushMemTableFinished", "BackgroundCallCompaction:0"}}); @@ -6895,7 +6895,7 @@ TEST_F(DBCompactionTest, CompactionWithChecksumHandoffManifest2) { ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing(); ASSERT_OK(Put(Key(1), "value3")); s = Flush(); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); s = dbfull()->TEST_WaitForCompact(); ASSERT_EQ(s.severity(), ROCKSDB_NAMESPACE::Status::Severity::kFatalError); SyncPoint::GetInstance()->DisableProcessing(); diff --git a/db/db_flush_test.cc b/db/db_flush_test.cc index 76442086d6..a53ce21b24 100644 --- a/db/db_flush_test.cc +++ b/db/db_flush_test.cc @@ -1549,7 +1549,7 @@ TEST_F(DBFlushTest, FlushError) { Status s = dbfull()->TEST_SwitchMemtable(); fault_injection_env->SetFilesystemActive(true); Destroy(options); - ASSERT_NE(s, Status::OK()); + ASSERT_NOK(s); } TEST_F(DBFlushTest, ManualFlushFailsInReadOnlyMode) { diff --git a/db/db_sst_test.cc b/db/db_sst_test.cc index fac924d311..b57e46ac51 100644 --- a/db/db_sst_test.cc +++ b/db/db_sst_test.cc @@ -276,7 +276,7 @@ TEST_F(DBSSTTest, DeleteObsoleteFilesPendingOutputs) { ASSERT_EQ(metadata.size(), 2U); // This file should have been deleted during last compaction - ASSERT_EQ(Status::NotFound(), env_->FileExists(dbname_ + file_on_L2)); + ASSERT_TRUE(env_->FileExists(dbname_ + file_on_L2).IsNotFound()); listener->VerifyMatchedCount(1); } diff --git a/db/db_test.cc b/db/db_test.cc index a8f74d8ca4..4243974a96 100644 --- a/db/db_test.cc +++ b/db/db_test.cc @@ -6744,7 +6744,7 @@ TEST_F(DBTest, PinnableSliceAndRowCache) { { PinnableSlice pin_slice; - ASSERT_EQ(Get("foo", &pin_slice), Status::OK()); + ASSERT_OK(Get("foo", &pin_slice)); ASSERT_EQ(pin_slice.ToString(), "bar"); // Entry is already in cache, lookup will remove the element from lru ASSERT_EQ( @@ -6957,7 +6957,7 @@ TEST_F(DBTest, CreationTimeOfOldestFile) { uint64_t creation_time; Status s1 = dbfull()->GetCreationTimeOfOldestFile(&creation_time); ASSERT_EQ(0, creation_time); - ASSERT_EQ(s1, Status::OK()); + ASSERT_OK(s1); // Testing with non-zero file creation time. set_file_creation_time_to_zero = false; @@ -6982,14 +6982,14 @@ TEST_F(DBTest, CreationTimeOfOldestFile) { uint64_t ctime; Status s2 = dbfull()->GetCreationTimeOfOldestFile(&ctime); ASSERT_EQ(uint_time_1, ctime); - ASSERT_EQ(s2, Status::OK()); + ASSERT_OK(s2); // Testing with max_open_files != -1 options = CurrentOptions(); options.max_open_files = 10; DestroyAndReopen(options); Status s3 = dbfull()->GetCreationTimeOfOldestFile(&ctime); - ASSERT_EQ(s3, Status::NotSupported()); + ASSERT_TRUE(s3.IsNotSupported()); ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing(); } diff --git a/db/db_test2.cc b/db/db_test2.cc index 4ff979962f..95599637d4 100644 --- a/db/db_test2.cc +++ b/db/db_test2.cc @@ -5218,7 +5218,7 @@ TEST_F(DBTest2, PinnableSliceAndMmapReads) { ASSERT_OK(Flush()); PinnableSlice pinned_value; - ASSERT_EQ(Get("foo", &pinned_value), Status::OK()); + ASSERT_OK(Get("foo", &pinned_value)); // It is not safe to pin mmap files as they might disappear by compaction ASSERT_FALSE(pinned_value.IsPinned()); ASSERT_EQ(pinned_value.ToString(), "bar"); @@ -5236,7 +5236,7 @@ TEST_F(DBTest2, PinnableSliceAndMmapReads) { // Unsafe to pin mmap files when they could be kicked out of table cache Close(); ASSERT_OK(ReadOnlyReopen(options)); - ASSERT_EQ(Get("foo", &pinned_value), Status::OK()); + ASSERT_OK(Get("foo", &pinned_value)); ASSERT_FALSE(pinned_value.IsPinned()); ASSERT_EQ(pinned_value.ToString(), "bar"); @@ -5246,7 +5246,7 @@ TEST_F(DBTest2, PinnableSliceAndMmapReads) { Close(); options.max_open_files = -1; ASSERT_OK(ReadOnlyReopen(options)); - ASSERT_EQ(Get("foo", &pinned_value), Status::OK()); + ASSERT_OK(Get("foo", &pinned_value)); ASSERT_TRUE(pinned_value.IsPinned()); ASSERT_EQ(pinned_value.ToString(), "bar"); #endif diff --git a/db/db_test_util.cc b/db/db_test_util.cc index 2cae1b6eff..af62858533 100644 --- a/db/db_test_util.cc +++ b/db/db_test_util.cc @@ -965,8 +965,7 @@ std::string DBTestBase::AllEntriesFor(const Slice& user_key, int cf) { bool first = true; while (iter->Valid()) { ParsedInternalKey ikey(Slice(), 0, kTypeValue); - if (ParseInternalKey(iter->key(), &ikey, true /* log_err_key */) != - Status::OK()) { + if (!ParseInternalKey(iter->key(), &ikey, true /* log_err_key */).ok()) { result += "CORRUPTED"; } else { if (!last_options_.comparator->Equal(ikey.user_key, user_key)) { @@ -1515,7 +1514,9 @@ void DBTestBase::VerifyDBFromMap(std::map true_data, ASSERT_EQ(Get(kv.first), kv.second); } else { std::string value; - ASSERT_EQ(s, db_->Get(ReadOptions(), kv.first, &value)); + Status ref_s = db_->Get(ReadOptions(), kv.first, &value); + ASSERT_EQ(s.code(), ref_s.code()); + ASSERT_EQ(s.subcode(), ref_s.subcode()); } total_reads++; } @@ -1536,7 +1537,8 @@ void DBTestBase::VerifyDBFromMap(std::map true_data, if (!current_status.ok()) { s = current_status; } - ASSERT_EQ(iter->status(), s); + ASSERT_EQ(iter->status().code(), s.code()); + ASSERT_EQ(iter->status().subcode(), s.subcode()); if (current_status.ok()) { ASSERT_EQ(iter->value().ToString(), data_iter->second); } @@ -1559,7 +1561,8 @@ void DBTestBase::VerifyDBFromMap(std::map true_data, if (!current_status.ok()) { s = current_status; } - ASSERT_EQ(iter->status(), s); + ASSERT_EQ(iter->status().code(), s.code()); + ASSERT_EQ(iter->status().subcode(), s.subcode()); if (current_status.ok()) { ASSERT_EQ(iter->value().ToString(), data_rev->second); } diff --git a/db/db_wal_test.cc b/db/db_wal_test.cc index 9a953a178a..f681ec3be6 100644 --- a/db/db_wal_test.cc +++ b/db/db_wal_test.cc @@ -37,7 +37,7 @@ class DBWALTestBase : public DBTestBase { int alloc_status = fallocate(fd, 0, 0, 1); int err_number = errno; close(fd); - assert(env_->DeleteFile(fname_test_fallocate) == Status::OK()); + assert(env_->DeleteFile(fname_test_fallocate).ok()); if (err_number == ENOSYS || err_number == EOPNOTSUPP) { fprintf(stderr, "Skipped preallocated space check: %s\n", errnoStr(err_number).c_str()); diff --git a/db/db_with_timestamp_basic_test.cc b/db/db_with_timestamp_basic_test.cc index 0c14e43338..93d954a98c 100644 --- a/db/db_with_timestamp_basic_test.cc +++ b/db/db_with_timestamp_basic_test.cc @@ -520,30 +520,30 @@ TEST_F(DBBasicTestWithTimestamp, UpdateFullHistoryTsLowWithPublicAPI) { std::string ts_low_str_back = Timestamp(8, 0); auto s = db_->IncreaseFullHistoryTsLow(db_->DefaultColumnFamily(), ts_low_str_back); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // test IncreaseFullHistoryTsLow with a timestamp whose length is longger // than the cf's timestamp size std::string ts_low_str_long(Timestamp(0, 0).size() + 1, 'a'); s = db_->IncreaseFullHistoryTsLow(db_->DefaultColumnFamily(), ts_low_str_long); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // test IncreaseFullHistoryTsLow with a timestamp which is null std::string ts_low_str_null = ""; s = db_->IncreaseFullHistoryTsLow(db_->DefaultColumnFamily(), ts_low_str_null); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // test IncreaseFullHistoryTsLow for a column family that does not enable // timestamp options.comparator = BytewiseComparator(); DestroyAndReopen(options); ts_low_str = Timestamp(10, 0); s = db_->IncreaseFullHistoryTsLow(db_->DefaultColumnFamily(), ts_low_str); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // test GetFullHistoryTsLow for a column family that does not enable // timestamp std::string current_ts_low; s = db_->GetFullHistoryTsLow(db_->DefaultColumnFamily(), ¤t_ts_low); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); Close(); } @@ -719,7 +719,8 @@ TEST_F(DBBasicTestWithTimestamp, TrimHistoryTest) { ropts.timestamp = &ts; std::string value; Status s = db->Get(ropts, key, &value); - ASSERT_TRUE(s == status); + ASSERT_EQ(s.code(), status.code()); + ASSERT_EQ(s.subcode(), status.subcode()); if (s.ok()) { ASSERT_EQ(checkValue, value); } diff --git a/db/error_handler_fs_test.cc b/db/error_handler_fs_test.cc index 547d087322..040744e48a 100644 --- a/db/error_handler_fs_test.cc +++ b/db/error_handler_fs_test.cc @@ -1305,7 +1305,7 @@ TEST_F(DBErrorHandlingFSTest, WALWriteError) { WriteOptions wopts; wopts.sync = true; s = dbfull()->Write(wopts, &batch); - ASSERT_EQ(s, s.NoSpace()); + ASSERT_TRUE(s.IsNoSpace()); } SyncPoint::GetInstance()->DisableProcessing(); fault_fs_->SetFilesystemActive(true); @@ -2461,7 +2461,7 @@ TEST_F(DBErrorHandlingFSTest, FLushWritRetryableErrorAbortRecovery) { s = Flush(); ASSERT_EQ(s.severity(), ROCKSDB_NAMESPACE::Status::Severity::kSoftError); ASSERT_EQ(listener->WaitForRecovery(5000000), true); - ASSERT_EQ(listener->new_bg_error(), Status::Aborted()); + ASSERT_TRUE(listener->new_bg_error().IsAborted()); SyncPoint::GetInstance()->DisableProcessing(); fault_fs_->SetFilesystemActive(true); diff --git a/db/external_sst_file_basic_test.cc b/db/external_sst_file_basic_test.cc index b6f05a846e..d66d85f5b1 100644 --- a/db/external_sst_file_basic_test.cc +++ b/db/external_sst_file_basic_test.cc @@ -683,7 +683,7 @@ TEST_F(ExternalSSTFileBasicTest, NoCopy) { s = DeprecatedAddFile({file1}, true /* move file */); ASSERT_OK(s) << s.ToString(); - ASSERT_EQ(Status::NotFound(), env_->FileExists(file1)); + ASSERT_TRUE(env_->FileExists(file1).IsNotFound()); s = DeprecatedAddFile({file2}, false /* copy file */); ASSERT_OK(s) << s.ToString(); diff --git a/db/fault_injection_test.cc b/db/fault_injection_test.cc index de675e6912..917839afa1 100644 --- a/db/fault_injection_test.cc +++ b/db/fault_injection_test.cc @@ -543,7 +543,7 @@ TEST_P(FaultInjectionTest, WriteBatchWalTerminationTest) { std::string val; ASSERT_OK(db_->Get(ro, "cats", &val)); ASSERT_EQ("dogs", val); - ASSERT_EQ(db_->Get(ro, "boys", &val), Status::NotFound()); + ASSERT_TRUE(db_->Get(ro, "boys", &val).IsNotFound()); } TEST_P(FaultInjectionTest, NoDuplicateTrailingEntries) { diff --git a/db/import_column_family_test.cc b/db/import_column_family_test.cc index e459e935ed..f3d8a7e46b 100644 --- a/db/import_column_family_test.cc +++ b/db/import_column_family_test.cc @@ -502,22 +502,30 @@ TEST_F(ImportColumnFamilyTest, ImportColumnFamilyNegativeTest) { { // Create column family with existing cf name. ExportImportFilesMetaData metadata; + metadata.db_comparator_name = options.comparator->Name(); - ASSERT_EQ(db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "koko", - ImportColumnFamilyOptions(), - metadata, &import_cfh_), - Status::InvalidArgument("Column family already exists")); + Status s = db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "koko", + ImportColumnFamilyOptions(), + metadata, &import_cfh_); + ASSERT_TRUE(s.IsInvalidArgument()); + ASSERT_NE(s.getState(), nullptr); + EXPECT_NE(strstr(s.getState(), "Column family already exists"), nullptr) + << s.getState(); ASSERT_EQ(import_cfh_, nullptr); } { // Import with no files specified. ExportImportFilesMetaData metadata; + metadata.db_comparator_name = options.comparator->Name(); - ASSERT_EQ(db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "yoyo", - ImportColumnFamilyOptions(), - metadata, &import_cfh_), - Status::InvalidArgument("The list of files is empty")); + Status s = db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "yoyo", + ImportColumnFamilyOptions(), + metadata, &import_cfh_); + ASSERT_TRUE(s.IsInvalidArgument()); + ASSERT_NE(s.getState(), nullptr); + EXPECT_NE(strstr(s.getState(), "The list of files is empty"), nullptr) + << s.getState(); ASSERT_EQ(import_cfh_, nullptr); } @@ -544,10 +552,13 @@ TEST_F(ImportColumnFamilyTest, ImportColumnFamilyNegativeTest) { LiveFileMetaDataInit(file2_sst_name, sst_files_dir_, 1, 10, 19)); metadata.db_comparator_name = options.comparator->Name(); - ASSERT_EQ(db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "yoyo", - ImportColumnFamilyOptions(), - metadata, &import_cfh_), - Status::InvalidArgument("Files have overlapping ranges")); + Status s = db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "yoyo", + ImportColumnFamilyOptions(), + metadata, &import_cfh_); + ASSERT_TRUE(s.IsInvalidArgument()); + ASSERT_NE(s.getState(), nullptr); + EXPECT_NE(strstr(s.getState(), "Files have overlapping ranges"), nullptr) + << s.getState(); ASSERT_EQ(import_cfh_, nullptr); } @@ -568,10 +579,13 @@ TEST_F(ImportColumnFamilyTest, ImportColumnFamilyNegativeTest) { LiveFileMetaDataInit(file1_sst_name, sst_files_dir_, 1, 10, 19)); metadata.db_comparator_name = mismatch_options.comparator->Name(); - ASSERT_EQ(db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "coco", - ImportColumnFamilyOptions(), - metadata, &import_cfh_), - Status::InvalidArgument("Comparator name mismatch")); + Status s = db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "coco", + ImportColumnFamilyOptions(), + metadata, &import_cfh_); + ASSERT_TRUE(s.IsInvalidArgument()); + ASSERT_NE(s.getState(), nullptr); + EXPECT_NE(strstr(s.getState(), "Comparator name mismatch"), nullptr) + << s.getState(); ASSERT_EQ(import_cfh_, nullptr); } @@ -593,10 +607,13 @@ TEST_F(ImportColumnFamilyTest, ImportColumnFamilyNegativeTest) { LiveFileMetaDataInit(file3_sst_name, sst_files_dir_, 1, 10, 19)); metadata.db_comparator_name = options.comparator->Name(); - ASSERT_EQ(db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "yoyo", - ImportColumnFamilyOptions(), - metadata, &import_cfh_), - Status::IOError("No such file or directory")); + Status s = db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "yoyo", + ImportColumnFamilyOptions(), + metadata, &import_cfh_); + ASSERT_TRUE(s.IsIOError()); + ASSERT_NE(s.getState(), nullptr); + EXPECT_NE(strstr(s.getState(), "No such file or directory"), nullptr) + << s.getState(); ASSERT_EQ(import_cfh_, nullptr); // Test successful import after a failure with the same CF name. Ensures diff --git a/db/write_batch_test.cc b/db/write_batch_test.cc index 6e6ad5578a..fb9e6b09c1 100644 --- a/db/write_batch_test.cc +++ b/db/write_batch_test.cc @@ -422,7 +422,7 @@ TEST_F(WriteBatchTest, PrepareCommit) { batch.SetSavePoint(); ASSERT_OK(WriteBatchInternal::MarkEndPrepare(&batch, Slice("xid1"))); Status s = batch.RollbackToSavePoint(); - ASSERT_EQ(s, Status::NotFound()); + ASSERT_TRUE(s.IsNotFound()); ASSERT_OK(WriteBatchInternal::MarkCommit(&batch, Slice("xid1"))); ASSERT_OK(WriteBatchInternal::MarkRollback(&batch, Slice("xid1"))); ASSERT_EQ(2u, batch.Count()); diff --git a/db_stress_tool/db_stress_test_base.cc b/db_stress_tool/db_stress_test_base.cc index 141a5762e4..56820234b7 100644 --- a/db_stress_tool/db_stress_test_base.cc +++ b/db_stress_tool/db_stress_test_base.cc @@ -453,7 +453,8 @@ Status StressTest::AssertSame(DB* db, ColumnFamilyHandle* cf, if (!s.ok() && !s.IsNotFound()) { return s; } - if (snap_state.status != s) { + if (snap_state.status.code() != s.code() || + snap_state.status.subcode() != s.subcode()) { return Status::Corruption( "The snapshot gave inconsistent results for key " + ToString(Hash(snap_state.key.c_str(), snap_state.key.size(), 0)) + diff --git a/env/env_basic_test.cc b/env/env_basic_test.cc index 40413b569f..fc26e7cf64 100644 --- a/env/env_basic_test.cc +++ b/env/env_basic_test.cc @@ -156,7 +156,7 @@ TEST_P(EnvBasicTestWithParam, Basics) { std::vector children; // Check that the directory is empty. - ASSERT_EQ(Status::NotFound(), env_->FileExists(test_dir_ + "/non_existent")); + ASSERT_TRUE(env_->FileExists(test_dir_ + "/non_existent").IsNotFound()); ASSERT_TRUE(!env_->GetFileSize(test_dir_ + "/non_existent", &file_size).ok()); ASSERT_OK(env_->GetChildren(test_dir_, &children)); ASSERT_EQ(0U, children.size()); @@ -194,7 +194,7 @@ TEST_P(EnvBasicTestWithParam, Basics) { ASSERT_TRUE( !env_->RenameFile(test_dir_ + "/non_existent", test_dir_ + "/g").ok()); ASSERT_OK(env_->RenameFile(test_dir_ + "/f1", test_dir_ + "/g")); - ASSERT_EQ(Status::NotFound(), env_->FileExists(test_dir_ + "/f1")); + ASSERT_TRUE(env_->FileExists(test_dir_ + "/f1").IsNotFound()); ASSERT_OK(env_->FileExists(test_dir_ + "/g")); ASSERT_OK(env_->GetFileSize(test_dir_ + "/g", &file_size)); ASSERT_EQ(3U, file_size); @@ -218,7 +218,7 @@ TEST_P(EnvBasicTestWithParam, Basics) { // Check that deleting works. ASSERT_NOK(env_->DeleteFile(test_dir_ + "/non_existent")); ASSERT_OK(env_->DeleteFile(test_dir_ + "/g")); - ASSERT_EQ(Status::NotFound(), env_->FileExists(test_dir_ + "/g")); + ASSERT_TRUE(env_->FileExists(test_dir_ + "/g").IsNotFound()); ASSERT_OK(env_->GetChildren(test_dir_, &children)); ASSERT_EQ(0U, children.size()); Status s = env_->GetChildren(test_dir_ + "/non_existent", &children); @@ -324,7 +324,7 @@ TEST_P(EnvMoreTestWithParam, MakeDir) { ASSERT_TRUE(!env_->CreateDir(test_dir_ + "/j").ok()); ASSERT_OK(env_->CreateDirIfMissing(test_dir_ + "/j")); ASSERT_OK(env_->DeleteDir(test_dir_ + "/j")); - ASSERT_EQ(Status::NotFound(), env_->FileExists(test_dir_ + "/j")); + ASSERT_TRUE(env_->FileExists(test_dir_ + "/j").IsNotFound()); } TEST_P(EnvMoreTestWithParam, GetChildren) { diff --git a/logging/auto_roll_logger_test.cc b/logging/auto_roll_logger_test.cc index 19e7ea43f5..7810aeedb1 100644 --- a/logging/auto_roll_logger_test.cc +++ b/logging/auto_roll_logger_test.cc @@ -210,7 +210,7 @@ TEST_F(AutoRollLoggerTest, RollLogFileByTime) { InitTestDb(); // -- Test the existence of file during the server restart. - ASSERT_EQ(Status::NotFound(), default_env->FileExists(kLogFile)); + ASSERT_TRUE(default_env->FileExists(kLogFile).IsNotFound()); AutoRollLogger logger(default_env->GetFileSystem(), nsc, kTestDir, "", log_size, time, keep_log_file_num); ASSERT_OK(default_env->FileExists(kLogFile)); @@ -554,7 +554,7 @@ TEST_F(AutoRollLoggerTest, Close) { ROCKS_LOG_FATAL(&logger, "%s", kSampleMessage.c_str()); log_lines += InfoLogLevel::HEADER_LEVEL - log_level + 1; } - ASSERT_EQ(logger.Close(), Status::OK()); + ASSERT_OK(logger.Close()); std::ifstream inFile(AutoRollLoggerTest::kLogFile.c_str()); size_t lines = std::count(std::istreambuf_iterator(inFile), diff --git a/logging/env_logger_test.cc b/logging/env_logger_test.cc index b06e785889..692e71675b 100644 --- a/logging/env_logger_test.cc +++ b/logging/env_logger_test.cc @@ -56,11 +56,11 @@ const std::string EnvLoggerTest::kLogFile = test::PerThreadDBPath("log_file"); TEST_F(EnvLoggerTest, EmptyLogFile) { auto logger = CreateLogger(); - ASSERT_EQ(logger->Close(), Status::OK()); + ASSERT_OK(logger->Close()); // Check the size of the log file. uint64_t file_size; - ASSERT_EQ(env_->GetFileSize(kLogFile, &file_size), Status::OK()); + ASSERT_OK(env_->GetFileSize(kLogFile, &file_size)); ASSERT_EQ(file_size, 0); DeleteLogFile(); } @@ -74,7 +74,7 @@ TEST_F(EnvLoggerTest, LogMultipleLines) { // Flush the logs. logger->Flush(); - ASSERT_EQ(logger->Close(), Status::OK()); + ASSERT_OK(logger->Close()); // Validate whether the log file has 'kNumIter' number of lines. ASSERT_EQ(test::GetLinesCount(kLogFile, kSampleMessage), kNumIter); @@ -89,7 +89,7 @@ TEST_F(EnvLoggerTest, Overwrite) { const int kNumIter = 10; WriteLogs(logger, kSampleMessage, kNumIter); - ASSERT_EQ(logger->Close(), Status::OK()); + ASSERT_OK(logger->Close()); // Validate whether the log file has 'kNumIter' number of lines. ASSERT_EQ(test::GetLinesCount(kLogFile, kSampleMessage), kNumIter); @@ -101,10 +101,10 @@ TEST_F(EnvLoggerTest, Overwrite) { // File should be empty. uint64_t file_size; - ASSERT_EQ(env_->GetFileSize(kLogFile, &file_size), Status::OK()); + ASSERT_OK(env_->GetFileSize(kLogFile, &file_size)); ASSERT_EQ(file_size, 0); ASSERT_EQ(logger->GetLogFileSize(), 0); - ASSERT_EQ(logger->Close(), Status::OK()); + ASSERT_OK(logger->Close()); } DeleteLogFile(); } @@ -116,7 +116,7 @@ TEST_F(EnvLoggerTest, Close) { const int kNumIter = 10; WriteLogs(logger, kSampleMessage, kNumIter); - ASSERT_EQ(logger->Close(), Status::OK()); + ASSERT_OK(logger->Close()); // Validate whether the log file has 'kNumIter' number of lines. ASSERT_EQ(test::GetLinesCount(kLogFile, kSampleMessage), kNumIter); @@ -145,7 +145,7 @@ TEST_F(EnvLoggerTest, ConcurrentLogging) { th.join(); } - ASSERT_EQ(logger->Close(), Status::OK()); + ASSERT_OK(logger->Close()); // Verfiy the log file. ASSERT_EQ(test::GetLinesCount(kLogFile, kSampleMessage), diff --git a/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc b/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc index 896a6ced16..bb275ff468 100644 --- a/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +++ b/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc @@ -652,7 +652,7 @@ TEST_F(BlockCacheTracerTest, MixedBlocks) { /*is_block_cache_human_readable_trace=*/false, /*simulator=*/nullptr); // The analyzer ends when it detects an incomplete access record. - ASSERT_EQ(Status::Incomplete(""), analyzer.Analyze()); + ASSERT_TRUE(analyzer.Analyze().IsIncomplete()); const uint64_t expected_num_cfs = 1; std::vector expected_fds{kSSTStoringOddKeys, kSSTStoringEvenKeys}; const std::vector expected_types{ diff --git a/utilities/backup/backup_engine_test.cc b/utilities/backup/backup_engine_test.cc index 8585dbf121..e93ec5bd0c 100644 --- a/utilities/backup/backup_engine_test.cc +++ b/utilities/backup/backup_engine_test.cc @@ -1256,8 +1256,8 @@ TEST_F(BackupEngineTest, NoDoubleCopy_And_AutoGC) { ASSERT_OK(test_backup_env_->FileExists(backupdir_ + "/shared/00010.sst")); // 00011.sst was only in backup 1, should be deleted - ASSERT_EQ(Status::NotFound(), - test_backup_env_->FileExists(backupdir_ + "/shared/00011.sst")); + ASSERT_TRUE(test_backup_env_->FileExists(backupdir_ + "/shared/00011.sst") + .IsNotFound()); ASSERT_OK(test_backup_env_->FileExists(backupdir_ + "/shared/00015.sst")); // MANIFEST file size should be only 100 @@ -1293,16 +1293,16 @@ TEST_F(BackupEngineTest, NoDoubleCopy_And_AutoGC) { // Make sure dangling sst file has been removed (somewhere along this // process). GarbageCollect should not be needed. - ASSERT_EQ(Status::NotFound(), - test_backup_env_->FileExists(backupdir_ + "/shared/00015.sst")); + ASSERT_TRUE(test_backup_env_->FileExists(backupdir_ + "/shared/00015.sst") + .IsNotFound()); ASSERT_OK(test_backup_env_->FileExists(backupdir_ + "/shared/00017.sst")); ASSERT_OK(test_backup_env_->FileExists(backupdir_ + "/shared/00019.sst")); // Now actually purge a good one ASSERT_OK(backup_engine_->PurgeOldBackups(1)); - ASSERT_EQ(Status::NotFound(), - test_backup_env_->FileExists(backupdir_ + "/shared/00017.sst")); + ASSERT_TRUE(test_backup_env_->FileExists(backupdir_ + "/shared/00017.sst") + .IsNotFound()); ASSERT_OK(test_backup_env_->FileExists(backupdir_ + "/shared/00019.sst")); CloseDBAndBackupEngine(); @@ -1389,22 +1389,18 @@ TEST_F(BackupEngineTest, CorruptionsTest) { ASSERT_OK(backup_engine_->DeleteBackup(2)); // Should not be needed anymore with auto-GC on DeleteBackup //(void)backup_engine_->GarbageCollect(); - ASSERT_EQ(Status::NotFound(), - file_manager_->FileExists(backupdir_ + "/meta/5")); - ASSERT_EQ(Status::NotFound(), - file_manager_->FileExists(backupdir_ + "/private/5")); - ASSERT_EQ(Status::NotFound(), - file_manager_->FileExists(backupdir_ + "/meta/4")); - ASSERT_EQ(Status::NotFound(), - file_manager_->FileExists(backupdir_ + "/private/4")); - ASSERT_EQ(Status::NotFound(), - file_manager_->FileExists(backupdir_ + "/meta/3")); - ASSERT_EQ(Status::NotFound(), - file_manager_->FileExists(backupdir_ + "/private/3")); - ASSERT_EQ(Status::NotFound(), - file_manager_->FileExists(backupdir_ + "/meta/2")); - ASSERT_EQ(Status::NotFound(), - file_manager_->FileExists(backupdir_ + "/private/2")); + ASSERT_TRUE(file_manager_->FileExists(backupdir_ + "/meta/5").IsNotFound()); + ASSERT_TRUE( + file_manager_->FileExists(backupdir_ + "/private/5").IsNotFound()); + ASSERT_TRUE(file_manager_->FileExists(backupdir_ + "/meta/4").IsNotFound()); + ASSERT_TRUE( + file_manager_->FileExists(backupdir_ + "/private/4").IsNotFound()); + ASSERT_TRUE(file_manager_->FileExists(backupdir_ + "/meta/3").IsNotFound()); + ASSERT_TRUE( + file_manager_->FileExists(backupdir_ + "/private/3").IsNotFound()); + ASSERT_TRUE(file_manager_->FileExists(backupdir_ + "/meta/2").IsNotFound()); + ASSERT_TRUE( + file_manager_->FileExists(backupdir_ + "/private/2").IsNotFound()); CloseBackupEngine(); AssertBackupConsistency(0, 0, keys_iteration * 1, keys_iteration * 5); @@ -2546,7 +2542,7 @@ TEST_F(BackupEngineTest, DeleteTmpFiles) { } CloseDBAndBackupEngine(); for (std::string file_or_dir : tmp_files_and_dirs) { - if (file_manager_->FileExists(file_or_dir) != Status::NotFound()) { + if (!file_manager_->FileExists(file_or_dir).IsNotFound()) { FAIL() << file_or_dir << " was expected to be deleted." << cleanup_fn; } } diff --git a/utilities/checkpoint/checkpoint_test.cc b/utilities/checkpoint/checkpoint_test.cc index 18c437dbbc..5bbcf57d8c 100644 --- a/utilities/checkpoint/checkpoint_test.cc +++ b/utilities/checkpoint/checkpoint_test.cc @@ -449,16 +449,22 @@ TEST_F(CheckpointTest, ExportColumnFamilyNegativeTest) { // Export onto existing directory ASSERT_OK(env_->CreateDirIfMissing(export_path_)); - ASSERT_EQ(checkpoint->ExportColumnFamily(db_->DefaultColumnFamily(), - export_path_, &metadata_), - Status::InvalidArgument("Specified export_dir exists")); + Status s = checkpoint->ExportColumnFamily(db_->DefaultColumnFamily(), + export_path_, &metadata_); + ASSERT_TRUE(s.IsInvalidArgument()); + ASSERT_NE(s.getState(), nullptr); + ASSERT_NE(strstr(s.getState(), "Specified export_dir exists"), nullptr) + << s.getState(); ASSERT_OK(DestroyDir(env_, export_path_)); // Export with invalid directory specification export_path_ = ""; - ASSERT_EQ(checkpoint->ExportColumnFamily(db_->DefaultColumnFamily(), - export_path_, &metadata_), - Status::InvalidArgument("Specified export_dir invalid")); + s = checkpoint->ExportColumnFamily(db_->DefaultColumnFamily(), export_path_, + &metadata_); + ASSERT_TRUE(s.IsInvalidArgument()); + ASSERT_NE(s.getState(), nullptr); + ASSERT_NE(strstr(s.getState(), "Specified export_dir invalid"), nullptr) + << s.getState(); delete checkpoint; } diff --git a/utilities/transactions/transaction_test.cc b/utilities/transactions/transaction_test.cc index 798fb2ad08..42883f0e65 100644 --- a/utilities/transactions/transaction_test.cc +++ b/utilities/transactions/transaction_test.cc @@ -941,7 +941,7 @@ TEST_P(TransactionTest, CommitTimeBatchFailTest) { // fails due to non-empty commit-time batch s = txn1->Commit(); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); delete txn1; } @@ -1058,7 +1058,7 @@ TEST_P(TransactionTest, SimpleTwoPhaseTransactionTest) { // we already committed s = txn->Commit(); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // no longer is prepared results db->GetAllPreparedTransactions(&prepared_trans); @@ -1131,15 +1131,15 @@ TEST_P(TransactionTest, TwoPhaseNameTest) { // cant prepare txn without name s = txn1->Prepare(); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // name too short s = txn1->SetName(""); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // name too long s = txn1->SetName(std::string(513, 'x')); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // valid set name s = txn1->SetName("name1"); @@ -1147,11 +1147,11 @@ TEST_P(TransactionTest, TwoPhaseNameTest) { // cant have duplicate name s = txn2->SetName("name1"); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // shouldn't be able to prepare s = txn2->Prepare(); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // valid name set s = txn2->SetName("name2"); @@ -1159,7 +1159,7 @@ TEST_P(TransactionTest, TwoPhaseNameTest) { // cant reset name s = txn2->SetName("name3"); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); ASSERT_EQ(txn1->GetName(), "name1"); ASSERT_EQ(txn2->GetName(), "name2"); @@ -1169,7 +1169,7 @@ TEST_P(TransactionTest, TwoPhaseNameTest) { // can't rename after prepare s = txn1->SetName("name4"); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); ASSERT_OK(txn1->Rollback()); ASSERT_OK(txn2->Rollback()); @@ -1272,7 +1272,7 @@ TEST_P(TransactionStressTest, TwoPhaseExpirationTest) { ASSERT_OK(s); s = txn2->Prepare(); - ASSERT_EQ(s, Status::Expired()); + ASSERT_TRUE(s.IsExpired()); delete txn1; delete txn2; @@ -1338,11 +1338,11 @@ TEST_P(TransactionTest, TwoPhaseRollbackTest) { // make commit s = txn->Commit(); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // try rollback again s = txn->Rollback(); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); delete txn; } @@ -1437,7 +1437,7 @@ TEST_P(TransactionTest, PersistentTwoPhaseTransactionTest) { // we already committed s = txn->Commit(); - ASSERT_EQ(s, Status::InvalidArgument()); + ASSERT_TRUE(s.IsInvalidArgument()); // no longer is prepared results prepared_trans.clear(); @@ -1618,7 +1618,7 @@ TEST_P(TransactionStressTest, TwoPhaseLongPrepareTest) { // verify data txn data s = db->Get(read_options, "foo", &value); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(value, "bar"); // verify non txn data @@ -1626,7 +1626,7 @@ TEST_P(TransactionStressTest, TwoPhaseLongPrepareTest) { std::string key(i, 'k'); std::string val(1000, 'v'); s = db->Get(read_options, key, &value); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(value, val); } @@ -1675,7 +1675,7 @@ TEST_P(TransactionTest, TwoPhaseSequenceTest) { // value is now available s = db->Get(read_options, "foo4", &value); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(value, "bar4"); } #endif // !defined(ROCKSDB_VALGRIND_RUN) || defined(ROCKSDB_FULL_VALGRIND_RUN) @@ -1718,7 +1718,7 @@ TEST_P(TransactionTest, TwoPhaseDoubleRecoveryTest) { ASSERT_OK(s); s = db->Get(read_options, "foo", &value); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(value, "bar"); delete txn; @@ -1745,11 +1745,11 @@ TEST_P(TransactionTest, TwoPhaseDoubleRecoveryTest) { // value is now available s = db->Get(read_options, "foo", &value); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(value, "bar"); s = db->Get(read_options, "foo2", &value); - ASSERT_EQ(s, Status::OK()); + ASSERT_OK(s); ASSERT_EQ(value, "bar2"); } diff --git a/utilities/transactions/transaction_test.h b/utilities/transactions/transaction_test.h index 2780cf24de..67f32907da 100644 --- a/utilities/transactions/transaction_test.h +++ b/utilities/transactions/transaction_test.h @@ -223,12 +223,11 @@ class TransactionTestBase : public ::testing::Test { std::atomic expected_commits = {0}; // Without Prepare, the commit does not write to WAL std::atomic with_empty_commits = {0}; - std::function txn_t0_with_status = [&](size_t index, - Status exp_s) { + std::function txn_t0_ok = [&](size_t index) { // Test DB's internal txn. It involves no prepare phase nor a commit marker. WriteOptions wopts; auto s = db->Put(wopts, "key" + std::to_string(index), "value"); - ASSERT_EQ(exp_s, s); + ASSERT_OK(s); if (txn_db_options.write_policy == TxnDBWritePolicy::WRITE_COMMITTED) { // Consume one seq per key exp_seq++; @@ -243,7 +242,7 @@ class TransactionTestBase : public ::testing::Test { with_empty_commits++; }; std::function txn_t0 = [&](size_t index) { - return txn_t0_with_status(index, Status::OK()); + return txn_t0_ok(index); }; std::function txn_t1 = [&](size_t index) { // Testing directly writing a write batch. Functionality-wise it is diff --git a/utilities/transactions/write_prepared_transaction_test.cc b/utilities/transactions/write_prepared_transaction_test.cc index f1f65e17a9..0dd39a2c41 100644 --- a/utilities/transactions/write_prepared_transaction_test.cc +++ b/utilities/transactions/write_prepared_transaction_test.cc @@ -2193,7 +2193,8 @@ void ASSERT_SAME(ReadOptions roptions, TransactionDB* db, Status exp_s, Status s; PinnableSlice v; s = db->Get(roptions, db->DefaultColumnFamily(), key, &v); - ASSERT_EQ(exp_s, s); + ASSERT_EQ(exp_s.code(), s.code()); + ASSERT_EQ(exp_s.subcode(), s.subcode()); ASSERT_TRUE(s.ok() || s.IsNotFound()); if (s.ok()) { ASSERT_TRUE(exp_v == v); @@ -2206,7 +2207,8 @@ void ASSERT_SAME(ReadOptions roptions, TransactionDB* db, Status exp_s, ASSERT_EQ(1, values.size()); ASSERT_EQ(1, s_vec.size()); s = s_vec[0]; - ASSERT_EQ(exp_s, s); + ASSERT_EQ(exp_s.code(), s.code()); + ASSERT_EQ(exp_s.subcode(), s.subcode()); ASSERT_TRUE(s.ok() || s.IsNotFound()); if (s.ok()) { ASSERT_TRUE(exp_v == values[0]); From ad14ca2ae3ee2cdffce579b195f9b5dcc6afd26f Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Tue, 17 May 2022 08:30:12 +0300 Subject: [PATCH 132/226] SPDB-156: db_test: add test for - forward the incomplete status on no_io --- db/db_test.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/db/db_test.cc b/db/db_test.cc index 4243974a96..1f4e64ae59 100644 --- a/db/db_test.cc +++ b/db/db_test.cc @@ -706,6 +706,34 @@ TEST_F(DBTest, DISABLED_SanitizeVeryVeryLargeValue) { ASSERT_TRUE(wb.Merge(sp_key, sp_value).IsInvalidArgument()); } +TEST_F(DBTest, GetFromBlockCacheWithDisabledCache) { + Options options = CurrentOptions(); + BlockBasedTableOptions table_options; + table_options.no_block_cache = true; + options.table_factory.reset(NewBlockBasedTableFactory(table_options)); + + DestroyAndReopen(options); + + const std::string key = "key"; + const std::string value = "value"; + + ASSERT_OK(Put(key, value)); + ASSERT_OK(Flush()); + + std::string result; + ASSERT_OK(db_->Get(ReadOptions(), key, &result)); + ASSERT_EQ(result, value); + result.clear(); + + // Disallow I/O + ReadOptions read_options; + read_options.read_tier = kBlockCacheTier; + + Status s = db_->Get(read_options, key, &result); + ASSERT_TRUE(result.empty()); + ASSERT_TRUE(s.IsIncomplete()); +} + // Disable because not all platform can run it. // It requires more than 9GB memory to run it, With single allocation // of more than 3GB. From 06f6610f547dd698559b73fd8c9b2df02cb03210 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Tue, 16 Nov 2021 12:40:00 +0200 Subject: [PATCH 133/226] SPDB-341: optimistic_transaction_example: fix snapshots leak The example acquires snapshots but doesn't release them, resulting in a memory leak error when run under ASan. --- examples/optimistic_transaction_example.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/optimistic_transaction_example.cc b/examples/optimistic_transaction_example.cc index e0398f66e5..9f1c399ff5 100644 --- a/examples/optimistic_transaction_example.cc +++ b/examples/optimistic_transaction_example.cc @@ -158,6 +158,7 @@ int main() { // Set a new snapshot in the transaction txn->SetSnapshot(); + db->ReleaseSnapshot(read_options.snapshot); read_options.snapshot = db->GetSnapshot(); // Do some reads and writes to key "y" @@ -172,6 +173,7 @@ int main() { assert(s.ok()); delete txn; // Clear snapshot from read options since it is no longer valid + db->ReleaseSnapshot(read_options.snapshot); read_options.snapshot = nullptr; // txn is committed, read the latest values. From 1b8e0f3348266fcba7e80ca432e851a702deda35 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Tue, 27 Apr 2021 15:57:12 +0300 Subject: [PATCH 134/226] SPDB-96: ldb: fix get to print the entire value --- tools/ldb_cmd.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/ldb_cmd.cc b/tools/ldb_cmd.cc index 2a0bd59854..6ebf36c6c1 100644 --- a/tools/ldb_cmd.cc +++ b/tools/ldb_cmd.cc @@ -2681,8 +2681,10 @@ void GetCommand::DoCommand() { std::string value; Status st = db_->Get(ReadOptions(), GetCfHandle(), key_, &value); if (st.ok()) { - fprintf(stdout, "%s\n", - (is_value_hex_ ? StringToHex(value) : value).c_str()); + if (is_value_hex_) { + value = StringToHex(value); + } + fprintf(stdout, "%*s\n", int(value.size()), value.c_str()); } else { std::stringstream oss; oss << "Get failed: " << st.ToString(); From aee8d91fb92fbb4e9dd0430ce870d84fe136e083 Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Wed, 23 Feb 2022 20:14:22 +0200 Subject: [PATCH 135/226] SPDB-534: db_bench: fix rocksdb bug of last_ref assertion test doesnt delete db properly. --- tools/db_bench_tool.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/db_bench_tool.cc b/tools/db_bench_tool.cc index ccc3e8b481..3fc3b8c19f 100644 --- a/tools/db_bench_tool.cc +++ b/tools/db_bench_tool.cc @@ -2975,7 +2975,9 @@ class Benchmark { } void DeleteDBs() { - db_.DeleteDBs(); + if (db_.db != nullptr) { + db_.DeleteDBs(); + } for (const DBWithColumnFamilies& dbwcf : multi_dbs_) { delete dbwcf.db; } @@ -3449,7 +3451,7 @@ class Benchmark { } Options options = open_options_; for (size_t i = 0; i < multi_dbs_.size(); i++) { - delete multi_dbs_[i].db; + multi_dbs_[i].DeleteDBs(); if (!open_options_.wal_dir.empty()) { options.wal_dir = GetPathForMultiple(open_options_.wal_dir, i); } From bc23e1584d6628b9c7286fb1229b95d74711db5e Mon Sep 17 00:00:00 2001 From: Yuval Ariel Date: Mon, 20 Jun 2022 19:37:25 +0300 Subject: [PATCH 136/226] SPDB 521: db_bench: fix SeekRandom and ReadRandomWriteRandom fix both these tests to operate not only on the default cf --- tools/db_bench_tool.cc | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/tools/db_bench_tool.cc b/tools/db_bench_tool.cc index 3fc3b8c19f..f2f506406f 100644 --- a/tools/db_bench_tool.cc +++ b/tools/db_bench_tool.cc @@ -4592,7 +4592,13 @@ class Benchmark { } #endif // ROCKSDB_LITE } else { - s = DB::Open(options, db_name, &db->db); + std::vector column_families; + column_families.push_back(ColumnFamilyDescriptor( + kDefaultColumnFamilyName, ColumnFamilyOptions(options))); + s = DB::Open(options, db_name, column_families, &db->cfh, &db->db); + db->cfh.resize(1); + db->num_created = 1; + db->num_hot = 1; } if (FLAGS_report_open_timing) { std::cout << "OpenDb: " @@ -6381,6 +6387,7 @@ class Benchmark { int64_t found = 0; int64_t bytes = 0; ReadOptions options = read_options_; + int64_t key_rand = 0; std::unique_ptr ts_guard; Slice ts; if (user_timestamp_size_ > 0) { @@ -6411,7 +6418,9 @@ class Benchmark { Duration duration(FLAGS_duration, reads_); char value_buffer[256]; while (!duration.Done(1)) { - int64_t seek_pos = thread->rand.Next() % FLAGS_num; + key_rand = GetRandomKey(&thread->rand); + DBWithColumnFamilies* db_with_cfh = SelectDBWithCfh(key_rand); + int64_t seek_pos = key_rand; GenerateKeyFromIntForSeek(static_cast(seek_pos), FLAGS_num, &key); if (FLAGS_max_scan_distance != 0) { @@ -6433,18 +6442,15 @@ class Benchmark { // Pick a Iterator to use uint64_t db_idx_to_use = (db_.db == nullptr) - ? (uint64_t{thread->rand.Next()} % multi_dbs_.size()) + ? (static_cast(key_rand) % multi_dbs_.size()) : 0; std::unique_ptr single_iter; Iterator* iter_to_use; if (FLAGS_use_tailing_iterator) { iter_to_use = tailing_iters[db_idx_to_use]; } else { - if (db_.db != nullptr) { - single_iter.reset(db_.db->NewIterator(options)); - } else { - single_iter.reset(multi_dbs_[db_idx_to_use].db->NewIterator(options)); - } + single_iter.reset(db_with_cfh->db->NewIterator( + options, db_with_cfh->GetCfh(key_rand))); iter_to_use = single_iter.get(); } @@ -6896,6 +6902,7 @@ class Benchmark { ReadOptions options = read_options_; RandomGenerator gen; std::string value; + int64_t key_rand = 0; int64_t found = 0; int get_weight = 0; int put_weight = 0; @@ -6913,8 +6920,10 @@ class Benchmark { // the number of iterations is the larger of read_ or write_ while (!duration.Done(1)) { - DB* db = SelectDB(thread); - GenerateKeyFromInt(thread->rand.Next() % FLAGS_num, FLAGS_num, &key); + key_rand = GetRandomKey(&thread->rand); + DBWithColumnFamilies* db_with_cfh = SelectDBWithCfh(key_rand); + DB* db = db_with_cfh->db; + GenerateKeyFromInt(key_rand, FLAGS_num, &key); if (get_weight == 0 && put_weight == 0) { // one batch completed, reinitialize for next batch get_weight = FLAGS_readwritepercent; @@ -6928,7 +6937,7 @@ class Benchmark { ts_guard.get()); options.timestamp = &ts; } - Status s = db->Get(options, key, &value); + Status s = db->Get(options, db_with_cfh->GetCfh(key_rand), key, &value); if (!s.ok() && !s.IsNotFound()) { fprintf(stderr, "get error: %s\n", s.ToString().c_str()); // we continue after error rather than exiting so that we can @@ -6938,16 +6947,18 @@ class Benchmark { } get_weight--; reads_done++; - thread->stats.FinishedOps(nullptr, db, 1, kRead); + thread->stats.FinishedOps(db_with_cfh, db, 1, kRead); } else if (put_weight > 0) { // then do all the corresponding number of puts // for all the gets we have done earlier Status s; if (user_timestamp_size_ > 0) { Slice ts = mock_app_clock_->Allocate(ts_guard.get()); - s = db->Put(write_options_, key, ts, gen.Generate()); + s = db->Put(write_options_, db_with_cfh->GetCfh(key_rand), key, ts, + gen.Generate()); } else { - s = db->Put(write_options_, key, gen.Generate()); + s = db->Put(write_options_, db_with_cfh->GetCfh(key_rand), key, + gen.Generate()); } if (!s.ok()) { fprintf(stderr, "put error: %s\n", s.ToString().c_str()); @@ -6955,7 +6966,7 @@ class Benchmark { } put_weight--; writes_done++; - thread->stats.FinishedOps(nullptr, db, 1, kWrite); + thread->stats.FinishedOps(db_with_cfh, db, 1, kWrite); } } char msg[100]; From d78228d28e67984d65ba5cc0e09749ddd59a7fed Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Thu, 14 Jul 2022 13:55:56 +0300 Subject: [PATCH 137/226] mutable_db_options: fix a Clang 14 build error (#57) Clang 14 fails to compile with the following error: ``` options/db_options.h:120:21: error: definition of implicit copy constructor for 'MutableDBOptions' is deprecated because it has a user-declared copy assignment operator [-Werror,-Wdeprecated-copy] MutableDBOptions& operator=(const MutableDBOptions&) = default; ^ db/compaction/compaction_job.cc:439:7: note: in implicit copy constructor for 'rocksdb::MutableDBOptions' first required here mutable_db_options_copy_(mutable_db_options), ^ ``` This is caused by the introduction of an assignment operator in #7 due to a diagnostic emitted by Clang 13 which isn't emitted by Clang 14, so this was probably a compiler bug, and we just need to remove the assignment operator. --- options/db_options.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/options/db_options.h b/options/db_options.h index 4c2589a735..a00399e677 100644 --- a/options/db_options.h +++ b/options/db_options.h @@ -117,8 +117,6 @@ struct MutableDBOptions { MutableDBOptions(); explicit MutableDBOptions(const DBOptions& options); - MutableDBOptions& operator=(const MutableDBOptions&) = default; - void Dump(Logger* log) const; int max_background_jobs; From cd39c7b89043b59c366b39df9ec235acbc548d07 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 18 Jul 2022 20:07:46 +0300 Subject: [PATCH 138/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 3af0d84acc..682b8d3ea4 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -37,12 +37,10 @@ jobs: rm -rf /usr/share/dotnet || echo "" df -h apk add git - #git config --global --unset http.proxy - #git config --global --unset https.proxy + echo “nameserver 8.8.8.8" > /etc/resolv.conf apk add bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar python3 -m pip install lint-diffs flake8 - sleep 3600 - name: Checkout From aefc637fab3c4b61893121d0a73ad1cd28b86cbc Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 18 Jul 2022 22:39:55 +0300 Subject: [PATCH 139/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 682b8d3ea4..4cee49352d 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -37,7 +37,7 @@ jobs: rm -rf /usr/share/dotnet || echo "" df -h apk add git - echo “nameserver 8.8.8.8" > /etc/resolv.conf + echo "nameserver 8.8.8.8" > /etc/resolv.conf apk add bash python3 py3-pip clang clang-extra-tools shellcheck gcc g++ cmake ninja ccache \ openjdk10 gflags-dev snappy-dev lz4-dev bzip2-dev zstd-dev zlib-dev linux-headers openssh-client tar python3 -m pip install lint-diffs flake8 From 8d35687665ad9c54c9bade854f6a4537a404936e Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 19 Jul 2022 00:40:10 +0300 Subject: [PATCH 140/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 4cee49352d..81ed1348c1 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -92,17 +92,17 @@ jobs: ninja Performance: - if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} + if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] uses: speedb-io/speedb/.github/workflows/perf-test.yml@devops-dev Unit_Black_White_box: - if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} + if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] uses: speedb-io/speedb/.github/workflows/qa-tests.yml@devops-dev Fuzz: - if: ${{ github.event.review.state == 'approved' || github.event.issue.workflow_dispatch || startsWith(github.ref, 'refs/heads/release') }} + if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] runs-on: [self-hosted, linux, x64, myrunner] container: @@ -114,15 +114,16 @@ jobs: - name: db_map_fuzzer steps: - - uses: actions/checkout@v3 - - name: Pre-build run: | apt update && apt install -y sudo python3 git clang-tools cmake make automake ucommon-utils libtool gettext pkg-config build-essential clang-10 zlib1g-dev libbz2-dev ninja-build liblzma-dev autoconf libsnappy-dev libzstd-dev liblz4-dev binutils m4 g++-10 unzip curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install + echo "nameserver 8.8.8.8" > /etc/resolv.conf + - uses: actions/checkout@v3 + - name: Configure AWS credentials from Test account uses: aws-actions/configure-aws-credentials@v1 with: From f7768c3f50543eb6747dcd90be31d80e7852d221 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 19 Jul 2022 00:40:58 +0300 Subject: [PATCH 141/226] Update qa-tests.yml --- .github/workflows/qa-tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/qa-tests.yml b/.github/workflows/qa-tests.yml index 15a0fd8de4..034de18caf 100644 --- a/.github/workflows/qa-tests.yml +++ b/.github/workflows/qa-tests.yml @@ -36,6 +36,8 @@ jobs: long_test: CRASH_TEST_EXT_ARGS="--duration=10000" make -j2 whitebox_asan_crash_test steps: + - name: Network hotfix + run: echo "nameserver 8.8.8.8" > /etc/resolv.conf - name: Checkout uses: actions/checkout@v3 From 4e068dcc2d69f6d0bf186d8b4b7276f948c885d9 Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Tue, 19 Jul 2022 14:21:54 +0300 Subject: [PATCH 142/226] Update issue templates --- .github/ISSUE_TEMPLATE/feature_request.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index bbcbbe7d61..da2327a4c6 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -7,6 +7,8 @@ assignees: '' --- +Owner: + **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] From 8abae02de5bac0767d3631b93a8a5307c6a52b66 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Tue, 19 Jul 2022 14:44:10 +0300 Subject: [PATCH 143/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 81ed1348c1..65a4477ee5 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -96,7 +96,7 @@ jobs: needs: [Build] uses: speedb-io/speedb/.github/workflows/perf-test.yml@devops-dev - Unit_Black_White_box: + QA-Tests: if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] uses: speedb-io/speedb/.github/workflows/qa-tests.yml@devops-dev From 1d161e49e2fd6ac6824ceedbd094768933a05700 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 10:39:00 +0300 Subject: [PATCH 144/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 65a4477ee5..516f35ba55 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -91,10 +91,10 @@ jobs: -DWITH_TESTS=1 -DWITH_ALL_TESTS=1 -DWITH_EXAMPLES=1 ninja - Performance: - if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} - needs: [Build] - uses: speedb-io/speedb/.github/workflows/perf-test.yml@devops-dev + #Performance: + #if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} + #needs: [Build] + #uses: speedb-io/speedb/.github/workflows/perf-test.yml@devops-dev QA-Tests: if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} From d4a09f75d3876e9a0ceb0e44dcb9592e50668da8 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:25:11 +0300 Subject: [PATCH 145/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 516f35ba55..651844d342 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -11,11 +11,11 @@ on: permissions: write-all jobs: - Sanity: - uses: speedb-io/speedb/.github/workflows/sanity_check.yml@devops-dev + #Sanity: + #uses: speedb-io/speedb/.github/workflows/sanity_check.yml@main Build: - needs: [Sanity] + #needs: [Sanity] if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} runs-on: [self-hosted, ubuntu, asrunner] strategy: @@ -94,12 +94,12 @@ jobs: #Performance: #if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} #needs: [Build] - #uses: speedb-io/speedb/.github/workflows/perf-test.yml@devops-dev + #uses: speedb-io/speedb/.github/workflows/perf-test.yml@main QA-Tests: if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] - uses: speedb-io/speedb/.github/workflows/qa-tests.yml@devops-dev + uses: speedb-io/speedb/.github/workflows/qa-tests.yml@main Fuzz: if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} From 9b3f7e0df5902ac8fc3a2714448df5559e1af052 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:37:41 +0300 Subject: [PATCH 146/226] Create versioning.yml --- .github/workflows/versioning.yml | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/versioning.yml diff --git a/.github/workflows/versioning.yml b/.github/workflows/versioning.yml new file mode 100644 index 0000000000..d4892d6b04 --- /dev/null +++ b/.github/workflows/versioning.yml @@ -0,0 +1,51 @@ +name: versioning + +on: + push: + workflow_dispatch: + workflow_call: + +jobs: + UpdateFullVer: + runs-on: [self-hosted, linux, x64, myrunner] + container: + image: ubuntu:latest + steps: + + - name: Checkout + uses: actions/checkout@v2 + + - name: Update version + run: | + git config --global --add safe.directory $GITHUB_WORKSPACE + git config user.name "GitHub Actions Bot" + git config user.email "<>" + git pull + git fetch --tags + echo $GITHUB_HEAD_REF + echo $GITHUB_REF_NAME + major=$(cat $GITHUB_WORKSPACE/include/rocksdb/version.h | grep '#define ROCKSDB_MAJOR' | grep -o '[^,]\+$' | tr ' ' '\n' | tail -n1) + minor=$(cat $GITHUB_WORKSPACE/include/rocksdb/version.h | grep '#define ROCKSDB_MINOR' | grep -o '[^,]\+$' | tr ' ' '\n' | tail -n1) + patch=$(cat $GITHUB_WORKSPACE/include/rocksdb/version.h | grep '#define ROCKSDB_PATCH' | grep -o '[^,]\+$' | tr ' ' '\n' | tail -n1) + if [ $GITHUB_REF_NAME == "main" ]; then + new_patch=$(echo $patch + 1 | bc) + sed -i -e "s/#define ROCKSDB_PATCH.*/#define ROCKSDB_PATCH $new_patch/g" include/rocksdb/version.h + sed -i -e "s/#define ROCKSDB_BRANCH.*/#define ROCKSDB_BRANCH $GITHUB_REF_NAME/g" include/rocksdb/version.h + git commit -am "updated version.h version" + git push + git tag "v$major.$minor.$new_patch-$GITHUB_REF_NAME" + git push --tags + elif echo $GITHUB_REF_NAME | grep -Eq 'release/'; then + echo "##### FEATURE BRANCH, SKIPPING #####" + else + if ( git tag -l --sort=-version:refname | grep "v$major.$minor.$patch" | grep -E -i "v([0-9]+).([0-9]+).([0-9]+).([0-9]+)" ); then + current_feature=$(git tag -l --sort=-version:refname | grep "v$major.$minor.$patch" | grep -E -i "v([0-9]+).([0-9]+).([0-9]+).([0-9]+)" | head -1 | tr '.' '\n' | tail -n1) + new_patch=$(echo $patch + 1 | bc) + new_feature=$(echo $current_feature + 1 | bc) + git tag "v$major.$minor.$patch.$new_feature" + git push --tags + else + git tag "v$major.$minor.$patch.0" + git push --tags + fi + fi From 916ec97871c8a6e2e419a73f9106ff21c1300199 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:41:38 +0300 Subject: [PATCH 147/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 651844d342..fd8995eaa3 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -104,7 +104,7 @@ jobs: Fuzz: if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] - runs-on: [self-hosted, linux, x64, myrunner] + runs-on: [self-hosted, ubuntu, asrunner] container: image: ubuntu:18.04 strategy: @@ -163,7 +163,7 @@ jobs: aws s3 cp $GITHUB_WORKSPACE/out/${{ matrix.name }}.log s3://spdb-github-ci/ fuzzer_sum: - runs-on: [self-hosted, linux, x64, myrunner] + runs-on: [self-hosted, ubuntu, asrunner] container: image: ubuntu:18.04 needs: [ Fuzz ] From a7344b2a71c4e4bf4490885af33878ccedaf7304 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:41:54 +0300 Subject: [PATCH 148/226] Update new_release_line.yml --- .github/workflows/new_release_line.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml index 4a60817dc7..5571cb31f7 100644 --- a/.github/workflows/new_release_line.yml +++ b/.github/workflows/new_release_line.yml @@ -11,7 +11,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: [self-hosted, ubuntu, asrunner] container: image: alpine:3.14 From 19d47b3dceeca7255fd4e5a3077ad58a97fb6b86 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:42:30 +0300 Subject: [PATCH 149/226] Update test_fuzz.yml --- .github/workflows/test_fuzz.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_fuzz.yml b/.github/workflows/test_fuzz.yml index 4e71964066..eef11add05 100644 --- a/.github/workflows/test_fuzz.yml +++ b/.github/workflows/test_fuzz.yml @@ -6,7 +6,7 @@ on: jobs: fuzz: - runs-on: [self-hosted, linux, x64, myrunner] + runs-on: [self-hosted, ubuntu, asrunner] container: image: ubuntu:18.04 strategy: From 744d655ba97e81179e50ada2e98c6b0c1c2387bd Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:42:48 +0300 Subject: [PATCH 150/226] Update versioning.yml --- .github/workflows/versioning.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/versioning.yml b/.github/workflows/versioning.yml index d4892d6b04..e775726eb6 100644 --- a/.github/workflows/versioning.yml +++ b/.github/workflows/versioning.yml @@ -7,7 +7,7 @@ on: jobs: UpdateFullVer: - runs-on: [self-hosted, linux, x64, myrunner] + runs-on: [self-hosted, ubuntu, asrunner] container: image: ubuntu:latest steps: From a85196c6cc82f0e30274e967bdff3b213ab9eb5b Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:43:31 +0300 Subject: [PATCH 151/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index fd8995eaa3..28776f63af 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -12,7 +12,7 @@ permissions: write-all jobs: #Sanity: - #uses: speedb-io/speedb/.github/workflows/sanity_check.yml@main + #uses: speedb-io/speedb/.github/workflows/sanity_check.yml@devops-dev Build: #needs: [Sanity] @@ -94,12 +94,12 @@ jobs: #Performance: #if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} #needs: [Build] - #uses: speedb-io/speedb/.github/workflows/perf-test.yml@main + #uses: speedb-io/speedb/.github/workflows/perf-test.yml@devops-dev QA-Tests: if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] - uses: speedb-io/speedb/.github/workflows/qa-tests.yml@main + uses: speedb-io/speedb/.github/workflows/qa-tests.yml@devops-dev Fuzz: if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} From 2edae5253cd7379f33bb6d2a6588088b7c3e6422 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:45:48 +0300 Subject: [PATCH 152/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 28776f63af..2327d87fb8 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -1,7 +1,7 @@ name: CI on: - push: + #push: workflow_dispatch: workflow_call: pull_request_review: From 1960018bf7e9f65ec83db2aab2e1fcb7b7cd9a88 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 21:13:18 +0300 Subject: [PATCH 153/226] Update versioning.yml --- .github/workflows/versioning.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/versioning.yml b/.github/workflows/versioning.yml index e775726eb6..45c5d73718 100644 --- a/.github/workflows/versioning.yml +++ b/.github/workflows/versioning.yml @@ -1,7 +1,7 @@ name: versioning on: - push: + #push: workflow_dispatch: workflow_call: From 4f0a57c599e457a31ad2eb8c2cd5713e107658db Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 20 Jul 2022 21:14:43 +0300 Subject: [PATCH 154/226] Update ci_pipeline.yml --- .github/workflows/ci_pipeline.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 2327d87fb8..aa38fd7701 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -12,7 +12,7 @@ permissions: write-all jobs: #Sanity: - #uses: speedb-io/speedb/.github/workflows/sanity_check.yml@devops-dev + #uses: speedb-io/speedb/.github/workflows/sanity_check.yml@main Build: #needs: [Sanity] @@ -94,12 +94,12 @@ jobs: #Performance: #if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} #needs: [Build] - #uses: speedb-io/speedb/.github/workflows/perf-test.yml@devops-dev + #uses: speedb-io/speedb/.github/workflows/perf-test.yml@main QA-Tests: if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} needs: [Build] - uses: speedb-io/speedb/.github/workflows/qa-tests.yml@devops-dev + uses: speedb-io/speedb/.github/workflows/qa-tests.yml@main Fuzz: if: ${{ github.event.review.state == 'approved' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/heads/release') }} From 7115af743c80f504a15f051e303ba4d94aadaa32 Mon Sep 17 00:00:00 2001 From: Ayelet Shani Date: Tue, 28 Jun 2022 13:48:08 +0300 Subject: [PATCH 155/226] optimize memtable switch latency With the new speedb memtable, each memtable switch needs to wait for the allocation and initialization of ~8MiB, which creates spikes in latency when switching memtables. Add a thread per CF to allocate new memtables in the background so that they'll be ready to be used when a switch happens. In case memtable is not ready when switch occor the memtable will be created immediately pending memtable shouldnt be calculate as used --- db/column_family.cc | 61 +++++++++++++++++++++++++++++++++++-- db/column_family.h | 13 +++++++- db/db_impl/db_impl_write.cc | 2 +- db/memtable.cc | 19 +++++++++--- db/memtable.h | 11 ++++++- memory/allocator.h | 9 ++++-- memory/arena.cc | 6 ++++ memory/arena.h | 2 ++ memory/concurrent_arena.h | 4 +++ memtable/alloc_tracker.cc | 27 +++++++++++----- 10 files changed, 134 insertions(+), 20 deletions(-) diff --git a/db/column_family.cc b/db/column_family.cc index 4c38546eb7..2e1b8af45b 100644 --- a/db/column_family.cc +++ b/db/column_family.cc @@ -542,7 +542,9 @@ ColumnFamilyData::ColumnFamilyData( prev_compaction_needed_bytes_(0), allow_2pc_(db_options.allow_2pc), last_memtable_id_(0), - db_paths_registered_(false) { + db_paths_registered_(false), + terminate_switch_memtable_(false), + switch_mem_(nullptr) { if (id_ != kDummyColumnFamilyDataId) { // TODO(cc): RegisterDbPaths can be expensive, considering moving it // outside of this constructor which might be called with db mutex held. @@ -612,11 +614,44 @@ ColumnFamilyData::ColumnFamilyData( } RecalculateWriteStallConditions(mutable_cf_options_); + switch_memtable_thread_ = + std::thread(&ColumnFamilyData::PrepareSwitchMemTable, this); +} + +void ColumnFamilyData::PrepareSwitchMemTable() { + for (;;) { + { + std::unique_lock lck(switch_memtable_thread_mutex_); + while (switch_mem_.load(std::memory_order_acquire) != nullptr) { + if (terminate_switch_memtable_) { + return; + } + + switch_memtable_thread_cv_.wait(lck); + } + } + + // Construct new memtable with an empty initial sequence + switch_mem_.store(ConstructNewMemtable(mutable_cf_options_, 0, true), + std::memory_order_release); + } } // DB mutex held ColumnFamilyData::~ColumnFamilyData() { assert(refs_.load(std::memory_order_relaxed) == 0); + { + std::unique_lock lck(switch_memtable_thread_mutex_); + terminate_switch_memtable_ = true; + } + switch_memtable_thread_cv_.notify_one(); + switch_memtable_thread_.join(); + + const MemTable* memtable = switch_mem_.exchange(nullptr); + if (memtable != nullptr) { + delete memtable; + } + // remove from linked list auto prev = prev_; auto next = next_; @@ -1059,10 +1094,30 @@ uint64_t ColumnFamilyData::GetLiveSstFilesSize() const { return current_->GetSstFilesSize(); } +MemTable* ColumnFamilyData::GetSwitchMemtable(SequenceNumber sn) { + MemTable* switch_mem = nullptr; + + { + std::unique_lock lck(switch_memtable_thread_mutex_); + switch_mem = switch_mem_.exchange(nullptr, std::memory_order_release); + } + switch_memtable_thread_cv_.notify_one(); + + if (switch_mem == nullptr) { + // No point in suspending, just construct the memtable here + switch_mem = ConstructNewMemtable(mutable_cf_options_, sn, false); + } else { + switch_mem->Activate(sn); + } + + return switch_mem; +} + MemTable* ColumnFamilyData::ConstructNewMemtable( - const MutableCFOptions& mutable_cf_options, SequenceNumber earliest_seq) { + const MutableCFOptions& mutable_cf_options, SequenceNumber earliest_seq, + bool pending) { return new MemTable(internal_comparator_, ioptions_, mutable_cf_options, - write_buffer_manager_, earliest_seq, id_); + write_buffer_manager_, earliest_seq, id_, pending); } void ColumnFamilyData::CreateNewMemtable( diff --git a/db/column_family.h b/db/column_family.h index c374303662..4b0b178983 100644 --- a/db/column_family.h +++ b/db/column_family.h @@ -368,9 +368,12 @@ class ColumnFamilyData { // calculate the oldest log needed for the durability of this column family uint64_t OldestLogToKeep(); + MemTable* GetSwitchMemtable(SequenceNumber sn); + // See Memtable constructor for explanation of earliest_seq param. MemTable* ConstructNewMemtable(const MutableCFOptions& mutable_cf_options, - SequenceNumber earliest_seq); + SequenceNumber earliest_seq, + bool pending = false); void CreateNewMemtable(const MutableCFOptions& mutable_cf_options, SequenceNumber earliest_seq); @@ -538,6 +541,8 @@ class ColumnFamilyData { std::vector GetDbPaths() const; + void PrepareSwitchMemTable(); + uint32_t id_; const std::string name_; Version* dummy_versions_; // Head of circular doubly-linked list of versions. @@ -618,6 +623,12 @@ class ColumnFamilyData { bool db_paths_registered_; std::string full_history_ts_low_; + + std::thread switch_memtable_thread_; + std::mutex switch_memtable_thread_mutex_; + std::condition_variable switch_memtable_thread_cv_; + bool terminate_switch_memtable_; + std::atomic switch_mem_; }; // ColumnFamilySet has interesting thread-safety requirements diff --git a/db/db_impl/db_impl_write.cc b/db/db_impl/db_impl_write.cc index 39657d4623..18bde1ddf2 100644 --- a/db/db_impl/db_impl_write.cc +++ b/db/db_impl/db_impl_write.cc @@ -1952,7 +1952,7 @@ Status DBImpl::SwitchMemtable(ColumnFamilyData* cfd, WriteContext* context) { } if (s.ok()) { SequenceNumber seq = versions_->LastSequence(); - new_mem = cfd->ConstructNewMemtable(mutable_cf_options, seq); + new_mem = cfd->GetSwitchMemtable(seq); context->superversion_context.NewSuperVersion(); } ROCKS_LOG_INFO(immutable_db_options_.info_log, diff --git a/db/memtable.cc b/db/memtable.cc index 3ce44ea1d5..7a49f37d02 100644 --- a/db/memtable.cc +++ b/db/memtable.cc @@ -69,12 +69,13 @@ MemTable::MemTable(const InternalKeyComparator& cmp, const ImmutableOptions& ioptions, const MutableCFOptions& mutable_cf_options, WriteBufferManager* write_buffer_manager, - SequenceNumber latest_seq, uint32_t column_family_id) + SequenceNumber latest_seq, uint32_t column_family_id, + bool pending) : comparator_(cmp), moptions_(ioptions, mutable_cf_options), refs_(0), kArenaBlockSize(OptimizeBlockSize(moptions_.arena_block_size)), - mem_tracker_(write_buffer_manager), + mem_tracker_(write_buffer_manager, pending), arena_(moptions_.arena_block_size, (write_buffer_manager != nullptr && (write_buffer_manager->enabled() || @@ -97,8 +98,6 @@ MemTable::MemTable(const InternalKeyComparator& cmp, flush_completed_(false), file_number_(0), first_seqno_(0), - earliest_seqno_(latest_seq), - creation_seq_(latest_seq), mem_next_logfile_number_(0), min_prep_log_referenced_(0), locks_(moptions_.inplace_update_support @@ -112,6 +111,7 @@ MemTable::MemTable(const InternalKeyComparator& cmp, oldest_key_time_(std::numeric_limits::max()), atomic_flush_seqno_(kMaxSequenceNumber), approximate_memory_usage_(0) { + SetInitialSeq(latest_seq); UpdateFlushState(); // something went wrong if we need to flush before inserting anything assert(!ShouldScheduleFlush()); @@ -131,6 +131,17 @@ MemTable::~MemTable() { assert(refs_ == 0); } +void MemTable::SetInitialSeq(SequenceNumber sn) { + earliest_seqno_ = sn; + creation_seq_ = sn; +} + +void MemTable::Activate(SequenceNumber sn) { + SetInitialSeq(sn); + arena_.Activate(); + +} + size_t MemTable::ApproximateMemoryUsage() { autovector usages = { arena_.ApproximateMemoryUsage(), table_->ApproximateMemoryUsage(), diff --git a/db/memtable.h b/db/memtable.h index 965404d25f..5fbd1e2aab 100644 --- a/db/memtable.h +++ b/db/memtable.h @@ -107,7 +107,8 @@ class MemTable { const ImmutableOptions& ioptions, const MutableCFOptions& mutable_cf_options, WriteBufferManager* write_buffer_manager, - SequenceNumber earliest_seq, uint32_t column_family_id); + SequenceNumber earliest_seq, uint32_t column_family_id, + bool pending = false); // No copying allowed MemTable(const MemTable&) = delete; MemTable& operator=(const MemTable&) = delete; @@ -403,6 +404,14 @@ class MemTable { void SetCreationSeq(SequenceNumber sn) { creation_seq_ = sn; } + // Sets the initial sequence number for lazy initialization of the memtable + // NOTE: should only be called once before any other operation on the memtable + void SetInitialSeq(SequenceNumber sn); + // Sets the initial sequence number for lazy initialization of the memtable + // and activate mem_tracker_ if needed + // NOTE: should only be called once before any other operation on the memtable + void Activate(SequenceNumber sn); + // Returns the next active logfile number when this memtable is about to // be flushed to storage // REQUIRES: external synchronization to prevent simultaneous diff --git a/memory/allocator.h b/memory/allocator.h index 002ad5f1d8..c4a41aa657 100644 --- a/memory/allocator.h +++ b/memory/allocator.h @@ -32,12 +32,15 @@ class Allocator { class AllocTracker { public: - explicit AllocTracker(WriteBufferManager* write_buffer_manager); + explicit AllocTracker(WriteBufferManager* write_buffer_manager, bool pending = false); // No copying allowed AllocTracker(const AllocTracker&) = delete; void operator=(const AllocTracker&) = delete; ~AllocTracker(); + + // Will be called ONLY on a pending memtable + void Activate(size_t bytes); void Allocate(size_t bytes); // Call when we're finished allocating memory so we can free it from // the write buffer's limit. @@ -46,12 +49,14 @@ class AllocTracker { void FreeMem(); bool is_freed() const { return write_buffer_manager_ == nullptr || freed_; } - + private: + bool AllocValid(); private: WriteBufferManager* write_buffer_manager_; std::atomic bytes_allocated_; bool done_allocating_; bool freed_; + bool pending_; }; } // namespace ROCKSDB_NAMESPACE diff --git a/memory/arena.cc b/memory/arena.cc index bcdad5c76f..e302e760e3 100644 --- a/memory/arena.cc +++ b/memory/arena.cc @@ -66,6 +66,12 @@ Arena::Arena(size_t block_size, AllocTracker* tracker, size_t huge_page_size) } } +void Arena::Activate() { + if (tracker_ != nullptr) { + tracker_->Activate(kInlineSize); + } +} + Arena::~Arena() { if (tracker_ != nullptr) { assert(tracker_->is_freed()); diff --git a/memory/arena.h b/memory/arena.h index 07fc435596..b6f06ce67a 100644 --- a/memory/arena.h +++ b/memory/arena.h @@ -42,6 +42,8 @@ class Arena : public Allocator { AllocTracker* tracker = nullptr, size_t huge_page_size = 0); ~Arena(); + void Activate(); + char* Allocate(size_t bytes) override; // huge_page_size: if >0, will try to allocate from huage page TLB. diff --git a/memory/concurrent_arena.h b/memory/concurrent_arena.h index 9c55587e63..807213ce74 100644 --- a/memory/concurrent_arena.h +++ b/memory/concurrent_arena.h @@ -48,6 +48,10 @@ class ConcurrentArena : public Allocator { AllocTracker* tracker = nullptr, size_t huge_page_size = 0); + void Activate() { + arena_.Activate(); + } + char* Allocate(size_t bytes) override { return AllocateImpl(bytes, false /*force_arena*/, [this, bytes]() { return arena_.Allocate(bytes); }); diff --git a/memtable/alloc_tracker.cc b/memtable/alloc_tracker.cc index fe21343471..79961528aa 100644 --- a/memtable/alloc_tracker.cc +++ b/memtable/alloc_tracker.cc @@ -14,18 +14,31 @@ namespace ROCKSDB_NAMESPACE { -AllocTracker::AllocTracker(WriteBufferManager* write_buffer_manager) +AllocTracker::AllocTracker(WriteBufferManager* write_buffer_manager, bool pending) : write_buffer_manager_(write_buffer_manager), bytes_allocated_(0), done_allocating_(false), - freed_(false) {} + freed_(false), + pending_(pending) {} AllocTracker::~AllocTracker() { FreeMem(); } +void AllocTracker::Activate(size_t bytes) { + assert(pending_); + pending_ = false; + Allocate(bytes); +} + +bool AllocTracker::AllocValid() { + return ((write_buffer_manager_->enabled() || + write_buffer_manager_->cost_to_cache()) && !pending_); + +} + void AllocTracker::Allocate(size_t bytes) { assert(write_buffer_manager_ != nullptr); - if (write_buffer_manager_->enabled() || - write_buffer_manager_->cost_to_cache()) { + + if (AllocValid()) { bytes_allocated_.fetch_add(bytes, std::memory_order_relaxed); write_buffer_manager_->ReserveMem(bytes); } @@ -33,8 +46,7 @@ void AllocTracker::Allocate(size_t bytes) { void AllocTracker::DoneAllocating() { if (write_buffer_manager_ != nullptr && !done_allocating_) { - if (write_buffer_manager_->enabled() || - write_buffer_manager_->cost_to_cache()) { + if (AllocValid()) { write_buffer_manager_->ScheduleFreeMem( bytes_allocated_.load(std::memory_order_relaxed)); } else { @@ -49,8 +61,7 @@ void AllocTracker::FreeMem() { DoneAllocating(); } if (write_buffer_manager_ != nullptr && !freed_) { - if (write_buffer_manager_->enabled() || - write_buffer_manager_->cost_to_cache()) { + if (AllocValid()) { write_buffer_manager_->FreeMem( bytes_allocated_.load(std::memory_order_relaxed)); } else { From ee70d7a42258a1d04a1bd0459c42edc138345fa1 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Sun, 24 Jul 2022 10:05:32 +0300 Subject: [PATCH 156/226] Update sanity_check.yml --- .github/workflows/sanity_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity_check.yml b/.github/workflows/sanity_check.yml index b001678601..52c4213a60 100644 --- a/.github/workflows/sanity_check.yml +++ b/.github/workflows/sanity_check.yml @@ -10,7 +10,7 @@ jobs: steps: - name: pre - run: apt update && apt install -y sudo git make + run: apt update && apt install -y sudo git make clang build-essential clang-format - name: Checkout feature branch uses: actions/checkout@v2 From 891cae9e3a493c88a1e31fbe298271cd2e2098fa Mon Sep 17 00:00:00 2001 From: Hilik Yochai Date: Sun, 10 Jul 2022 15:03:21 +0300 Subject: [PATCH 157/226] db_bench: reset the last operation time where rate limiting is applied This is relevant for not including the delay in latency calculation, and is already done for the write rate limiter. --- tools/db_bench_tool.cc | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tools/db_bench_tool.cc b/tools/db_bench_tool.cc index f2f506406f..be2b62dc24 100644 --- a/tools/db_bench_tool.cc +++ b/tools/db_bench_tool.cc @@ -5483,6 +5483,10 @@ class Benchmark { thread->shared->read_rate_limiter->Request(1024, Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kRead); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } } @@ -5534,6 +5538,10 @@ class Benchmark { read % 256 == 255) { thread->shared->read_rate_limiter->Request( 256, Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kRead); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } thread->stats.FinishedOps(db_with_cfh, db_with_cfh->db, 1, kRead); @@ -5575,6 +5583,10 @@ class Benchmark { thread->shared->read_rate_limiter->Request(1024, Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kRead); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } } delete iter; @@ -5630,6 +5642,10 @@ class Benchmark { if (thread->shared->read_rate_limiter.get() != nullptr) { thread->shared->read_rate_limiter->Request( 100, Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kRead); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } thread->stats.FinishedOps(nullptr, db, 100, kRead); @@ -5770,6 +5786,10 @@ class Benchmark { read % 256 == 255) { thread->shared->read_rate_limiter->Request( 256, Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kRead); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } thread->stats.FinishedOps(db_with_cfh, db_with_cfh->db, 1, kRead); @@ -5876,6 +5896,10 @@ class Benchmark { thread->shared->read_rate_limiter->Request( 256 * entries_per_batch_, Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kRead); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } thread->stats.FinishedOps(nullptr, db, entries_per_batch_, kRead); } @@ -6279,6 +6303,10 @@ class Benchmark { if (thread->shared->read_rate_limiter && (gets + seek) % 100 == 0) { thread->shared->read_rate_limiter->Request(100, Env::IO_HIGH, nullptr /*stats*/); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } thread->stats.FinishedOps(db_with_cfh, db_with_cfh->db, 1, kRead); } else if (query_type == 1) { @@ -6304,6 +6332,10 @@ class Benchmark { if (thread->shared->write_rate_limiter && puts % 100 == 0) { thread->shared->write_rate_limiter->Request(100, Env::IO_HIGH, nullptr /*stats*/); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } thread->stats.FinishedOps(db_with_cfh, db_with_cfh->db, 1, kWrite); } else if (query_type == 2) { @@ -6479,6 +6511,10 @@ class Benchmark { read % 256 == 255) { thread->shared->read_rate_limiter->Request( 256, Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kRead); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } thread->stats.FinishedOps(&db_, db_.db, 1, kSeek); @@ -6657,6 +6693,10 @@ class Benchmark { write_rate_limiter->Request( key.size() + val.size(), Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kWrite); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } } thread->stats.AddBytes(bytes); @@ -7173,6 +7213,10 @@ class Benchmark { thread->shared->write_rate_limiter->Request( key.size() + value.size(), Env::IO_HIGH, nullptr /*stats*/, RateLimiter::OpType::kWrite); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } Slice val = gen.Generate(); @@ -7851,6 +7895,10 @@ class Benchmark { if (thread->shared->read_rate_limiter.get() != nullptr) { thread->shared->read_rate_limiter->Request( 1, Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kRead); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } } delete iter; @@ -7923,6 +7971,10 @@ class Benchmark { write_rate_limiter->Request( key.size() + val.size(), Env::IO_HIGH, nullptr /* stats */, RateLimiter::OpType::kWrite); + // Set time at which last op finished to Now() to hide latency and + // sleep from rate limiter. Also, do the check once per batch, not + // once per write. + thread->stats.ResetLastOpTime(); } } } From 73d762f6d06e0afa0c63d4a694aea199b567b752 Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Tue, 26 Jul 2022 14:22:50 +0300 Subject: [PATCH 158/226] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index dd84ea7824..a1c6287841 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -12,27 +12,17 @@ A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error +1. +2. +3. +4. **Expected behavior** A clear and concise description of what you expected to happen. -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] +**System (please complete the following information):** + - OS: [e.g. RHEL8.6] + - Hardware [e.g. Intel Xeon Ice Lake, 64GB, NVMe] **Additional context** Add any other context about the problem here. From 7ce6ac43e5e0a080df9f71e3359a26d7452b3cb7 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 27 Jul 2022 12:28:29 +0300 Subject: [PATCH 159/226] memtable: revert the changes introduced in PR #25 (#76) The changes currently break some unit tests, so let's revert them for now and revisit when fixes are added. --- db/column_family.cc | 61 ++----------------------------------- db/column_family.h | 13 +------- db/db_impl/db_impl_write.cc | 2 +- db/memtable.cc | 19 +++--------- db/memtable.h | 11 +------ memory/allocator.h | 9 ++---- memory/arena.cc | 6 ---- memory/arena.h | 2 -- memory/concurrent_arena.h | 4 --- memtable/alloc_tracker.cc | 27 +++++----------- 10 files changed, 20 insertions(+), 134 deletions(-) diff --git a/db/column_family.cc b/db/column_family.cc index f1b5e83dba..7558d2f45b 100644 --- a/db/column_family.cc +++ b/db/column_family.cc @@ -542,9 +542,7 @@ ColumnFamilyData::ColumnFamilyData( prev_compaction_needed_bytes_(0), allow_2pc_(db_options.allow_2pc), last_memtable_id_(0), - db_paths_registered_(false), - terminate_switch_memtable_(false), - switch_mem_(nullptr) { + db_paths_registered_(false) { if (id_ != kDummyColumnFamilyDataId) { // TODO(cc): RegisterDbPaths can be expensive, considering moving it // outside of this constructor which might be called with db mutex held. @@ -614,44 +612,11 @@ ColumnFamilyData::ColumnFamilyData( } RecalculateWriteStallConditions(mutable_cf_options_); - switch_memtable_thread_ = - std::thread(&ColumnFamilyData::PrepareSwitchMemTable, this); -} - -void ColumnFamilyData::PrepareSwitchMemTable() { - for (;;) { - { - std::unique_lock lck(switch_memtable_thread_mutex_); - while (switch_mem_.load(std::memory_order_acquire) != nullptr) { - if (terminate_switch_memtable_) { - return; - } - - switch_memtable_thread_cv_.wait(lck); - } - } - - // Construct new memtable with an empty initial sequence - switch_mem_.store(ConstructNewMemtable(mutable_cf_options_, 0, true), - std::memory_order_release); - } } // DB mutex held ColumnFamilyData::~ColumnFamilyData() { assert(refs_.load(std::memory_order_relaxed) == 0); - { - std::unique_lock lck(switch_memtable_thread_mutex_); - terminate_switch_memtable_ = true; - } - switch_memtable_thread_cv_.notify_one(); - switch_memtable_thread_.join(); - - const MemTable* memtable = switch_mem_.exchange(nullptr); - if (memtable != nullptr) { - delete memtable; - } - // remove from linked list auto prev = prev_; auto next = next_; @@ -1094,30 +1059,10 @@ uint64_t ColumnFamilyData::GetLiveSstFilesSize() const { return current_->GetSstFilesSize(); } -MemTable* ColumnFamilyData::GetSwitchMemtable(SequenceNumber sn) { - MemTable* switch_mem = nullptr; - - { - std::unique_lock lck(switch_memtable_thread_mutex_); - switch_mem = switch_mem_.exchange(nullptr, std::memory_order_release); - } - switch_memtable_thread_cv_.notify_one(); - - if (switch_mem == nullptr) { - // No point in suspending, just construct the memtable here - switch_mem = ConstructNewMemtable(mutable_cf_options_, sn, false); - } else { - switch_mem->Activate(sn); - } - - return switch_mem; -} - MemTable* ColumnFamilyData::ConstructNewMemtable( - const MutableCFOptions& mutable_cf_options, SequenceNumber earliest_seq, - bool pending) { + const MutableCFOptions& mutable_cf_options, SequenceNumber earliest_seq) { return new MemTable(internal_comparator_, ioptions_, mutable_cf_options, - write_buffer_manager_, earliest_seq, id_, pending); + write_buffer_manager_, earliest_seq, id_); } void ColumnFamilyData::CreateNewMemtable( diff --git a/db/column_family.h b/db/column_family.h index 4b0b178983..c374303662 100644 --- a/db/column_family.h +++ b/db/column_family.h @@ -368,12 +368,9 @@ class ColumnFamilyData { // calculate the oldest log needed for the durability of this column family uint64_t OldestLogToKeep(); - MemTable* GetSwitchMemtable(SequenceNumber sn); - // See Memtable constructor for explanation of earliest_seq param. MemTable* ConstructNewMemtable(const MutableCFOptions& mutable_cf_options, - SequenceNumber earliest_seq, - bool pending = false); + SequenceNumber earliest_seq); void CreateNewMemtable(const MutableCFOptions& mutable_cf_options, SequenceNumber earliest_seq); @@ -541,8 +538,6 @@ class ColumnFamilyData { std::vector GetDbPaths() const; - void PrepareSwitchMemTable(); - uint32_t id_; const std::string name_; Version* dummy_versions_; // Head of circular doubly-linked list of versions. @@ -623,12 +618,6 @@ class ColumnFamilyData { bool db_paths_registered_; std::string full_history_ts_low_; - - std::thread switch_memtable_thread_; - std::mutex switch_memtable_thread_mutex_; - std::condition_variable switch_memtable_thread_cv_; - bool terminate_switch_memtable_; - std::atomic switch_mem_; }; // ColumnFamilySet has interesting thread-safety requirements diff --git a/db/db_impl/db_impl_write.cc b/db/db_impl/db_impl_write.cc index 18bde1ddf2..39657d4623 100644 --- a/db/db_impl/db_impl_write.cc +++ b/db/db_impl/db_impl_write.cc @@ -1952,7 +1952,7 @@ Status DBImpl::SwitchMemtable(ColumnFamilyData* cfd, WriteContext* context) { } if (s.ok()) { SequenceNumber seq = versions_->LastSequence(); - new_mem = cfd->GetSwitchMemtable(seq); + new_mem = cfd->ConstructNewMemtable(mutable_cf_options, seq); context->superversion_context.NewSuperVersion(); } ROCKS_LOG_INFO(immutable_db_options_.info_log, diff --git a/db/memtable.cc b/db/memtable.cc index 7a49f37d02..3ce44ea1d5 100644 --- a/db/memtable.cc +++ b/db/memtable.cc @@ -69,13 +69,12 @@ MemTable::MemTable(const InternalKeyComparator& cmp, const ImmutableOptions& ioptions, const MutableCFOptions& mutable_cf_options, WriteBufferManager* write_buffer_manager, - SequenceNumber latest_seq, uint32_t column_family_id, - bool pending) + SequenceNumber latest_seq, uint32_t column_family_id) : comparator_(cmp), moptions_(ioptions, mutable_cf_options), refs_(0), kArenaBlockSize(OptimizeBlockSize(moptions_.arena_block_size)), - mem_tracker_(write_buffer_manager, pending), + mem_tracker_(write_buffer_manager), arena_(moptions_.arena_block_size, (write_buffer_manager != nullptr && (write_buffer_manager->enabled() || @@ -98,6 +97,8 @@ MemTable::MemTable(const InternalKeyComparator& cmp, flush_completed_(false), file_number_(0), first_seqno_(0), + earliest_seqno_(latest_seq), + creation_seq_(latest_seq), mem_next_logfile_number_(0), min_prep_log_referenced_(0), locks_(moptions_.inplace_update_support @@ -111,7 +112,6 @@ MemTable::MemTable(const InternalKeyComparator& cmp, oldest_key_time_(std::numeric_limits::max()), atomic_flush_seqno_(kMaxSequenceNumber), approximate_memory_usage_(0) { - SetInitialSeq(latest_seq); UpdateFlushState(); // something went wrong if we need to flush before inserting anything assert(!ShouldScheduleFlush()); @@ -131,17 +131,6 @@ MemTable::~MemTable() { assert(refs_ == 0); } -void MemTable::SetInitialSeq(SequenceNumber sn) { - earliest_seqno_ = sn; - creation_seq_ = sn; -} - -void MemTable::Activate(SequenceNumber sn) { - SetInitialSeq(sn); - arena_.Activate(); - -} - size_t MemTable::ApproximateMemoryUsage() { autovector usages = { arena_.ApproximateMemoryUsage(), table_->ApproximateMemoryUsage(), diff --git a/db/memtable.h b/db/memtable.h index 5fbd1e2aab..965404d25f 100644 --- a/db/memtable.h +++ b/db/memtable.h @@ -107,8 +107,7 @@ class MemTable { const ImmutableOptions& ioptions, const MutableCFOptions& mutable_cf_options, WriteBufferManager* write_buffer_manager, - SequenceNumber earliest_seq, uint32_t column_family_id, - bool pending = false); + SequenceNumber earliest_seq, uint32_t column_family_id); // No copying allowed MemTable(const MemTable&) = delete; MemTable& operator=(const MemTable&) = delete; @@ -404,14 +403,6 @@ class MemTable { void SetCreationSeq(SequenceNumber sn) { creation_seq_ = sn; } - // Sets the initial sequence number for lazy initialization of the memtable - // NOTE: should only be called once before any other operation on the memtable - void SetInitialSeq(SequenceNumber sn); - // Sets the initial sequence number for lazy initialization of the memtable - // and activate mem_tracker_ if needed - // NOTE: should only be called once before any other operation on the memtable - void Activate(SequenceNumber sn); - // Returns the next active logfile number when this memtable is about to // be flushed to storage // REQUIRES: external synchronization to prevent simultaneous diff --git a/memory/allocator.h b/memory/allocator.h index c4a41aa657..002ad5f1d8 100644 --- a/memory/allocator.h +++ b/memory/allocator.h @@ -32,15 +32,12 @@ class Allocator { class AllocTracker { public: - explicit AllocTracker(WriteBufferManager* write_buffer_manager, bool pending = false); + explicit AllocTracker(WriteBufferManager* write_buffer_manager); // No copying allowed AllocTracker(const AllocTracker&) = delete; void operator=(const AllocTracker&) = delete; ~AllocTracker(); - - // Will be called ONLY on a pending memtable - void Activate(size_t bytes); void Allocate(size_t bytes); // Call when we're finished allocating memory so we can free it from // the write buffer's limit. @@ -49,14 +46,12 @@ class AllocTracker { void FreeMem(); bool is_freed() const { return write_buffer_manager_ == nullptr || freed_; } - private: - bool AllocValid(); + private: WriteBufferManager* write_buffer_manager_; std::atomic bytes_allocated_; bool done_allocating_; bool freed_; - bool pending_; }; } // namespace ROCKSDB_NAMESPACE diff --git a/memory/arena.cc b/memory/arena.cc index e302e760e3..bcdad5c76f 100644 --- a/memory/arena.cc +++ b/memory/arena.cc @@ -66,12 +66,6 @@ Arena::Arena(size_t block_size, AllocTracker* tracker, size_t huge_page_size) } } -void Arena::Activate() { - if (tracker_ != nullptr) { - tracker_->Activate(kInlineSize); - } -} - Arena::~Arena() { if (tracker_ != nullptr) { assert(tracker_->is_freed()); diff --git a/memory/arena.h b/memory/arena.h index b6f06ce67a..07fc435596 100644 --- a/memory/arena.h +++ b/memory/arena.h @@ -42,8 +42,6 @@ class Arena : public Allocator { AllocTracker* tracker = nullptr, size_t huge_page_size = 0); ~Arena(); - void Activate(); - char* Allocate(size_t bytes) override; // huge_page_size: if >0, will try to allocate from huage page TLB. diff --git a/memory/concurrent_arena.h b/memory/concurrent_arena.h index 807213ce74..9c55587e63 100644 --- a/memory/concurrent_arena.h +++ b/memory/concurrent_arena.h @@ -48,10 +48,6 @@ class ConcurrentArena : public Allocator { AllocTracker* tracker = nullptr, size_t huge_page_size = 0); - void Activate() { - arena_.Activate(); - } - char* Allocate(size_t bytes) override { return AllocateImpl(bytes, false /*force_arena*/, [this, bytes]() { return arena_.Allocate(bytes); }); diff --git a/memtable/alloc_tracker.cc b/memtable/alloc_tracker.cc index 79961528aa..fe21343471 100644 --- a/memtable/alloc_tracker.cc +++ b/memtable/alloc_tracker.cc @@ -14,31 +14,18 @@ namespace ROCKSDB_NAMESPACE { -AllocTracker::AllocTracker(WriteBufferManager* write_buffer_manager, bool pending) +AllocTracker::AllocTracker(WriteBufferManager* write_buffer_manager) : write_buffer_manager_(write_buffer_manager), bytes_allocated_(0), done_allocating_(false), - freed_(false), - pending_(pending) {} + freed_(false) {} AllocTracker::~AllocTracker() { FreeMem(); } -void AllocTracker::Activate(size_t bytes) { - assert(pending_); - pending_ = false; - Allocate(bytes); -} - -bool AllocTracker::AllocValid() { - return ((write_buffer_manager_->enabled() || - write_buffer_manager_->cost_to_cache()) && !pending_); - -} - void AllocTracker::Allocate(size_t bytes) { assert(write_buffer_manager_ != nullptr); - - if (AllocValid()) { + if (write_buffer_manager_->enabled() || + write_buffer_manager_->cost_to_cache()) { bytes_allocated_.fetch_add(bytes, std::memory_order_relaxed); write_buffer_manager_->ReserveMem(bytes); } @@ -46,7 +33,8 @@ void AllocTracker::Allocate(size_t bytes) { void AllocTracker::DoneAllocating() { if (write_buffer_manager_ != nullptr && !done_allocating_) { - if (AllocValid()) { + if (write_buffer_manager_->enabled() || + write_buffer_manager_->cost_to_cache()) { write_buffer_manager_->ScheduleFreeMem( bytes_allocated_.load(std::memory_order_relaxed)); } else { @@ -61,7 +49,8 @@ void AllocTracker::FreeMem() { DoneAllocating(); } if (write_buffer_manager_ != nullptr && !freed_) { - if (AllocValid()) { + if (write_buffer_manager_->enabled() || + write_buffer_manager_->cost_to_cache()) { write_buffer_manager_->FreeMem( bytes_allocated_.load(std::memory_order_relaxed)); } else { From be624e0b8f631fb51f7c4208d95fa968ef793f71 Mon Sep 17 00:00:00 2001 From: mrambacher Date: Tue, 26 Jul 2022 22:46:24 -0400 Subject: [PATCH 160/226] Add ability to create MemTableFactory from URI/string to tools Made use of the CreateFromString to pass an arbitrary URI to create a memtable factory to the tools that use it. --- db_stress_tool/db_stress_common.cc | 1 - db_stress_tool/db_stress_common.h | 18 --------- db_stress_tool/db_stress_test_base.cc | 57 +++++++++++---------------- db_stress_tool/db_stress_tool.cc | 2 - memtable/memtablerep_bench.cc | 9 +++-- memtable/write_buffer_manager.cc | 4 +- tools/db_bench_tool.cc | 18 ++++----- 7 files changed, 36 insertions(+), 73 deletions(-) diff --git a/db_stress_tool/db_stress_common.cc b/db_stress_tool/db_stress_common.cc index 0d5e07632a..8fb5d354f7 100644 --- a/db_stress_tool/db_stress_common.cc +++ b/db_stress_tool/db_stress_common.cc @@ -29,7 +29,6 @@ enum ROCKSDB_NAMESPACE::CompressionType bottommost_compression_type_e = ROCKSDB_NAMESPACE::kSnappyCompression; enum ROCKSDB_NAMESPACE::ChecksumType checksum_type_e = ROCKSDB_NAMESPACE::kCRC32c; -enum RepFactory FLAGS_rep_factory = kSkipList; std::vector sum_probs(100001); constexpr int64_t zipf_sum_size = 100000; diff --git a/db_stress_tool/db_stress_common.h b/db_stress_tool/db_stress_common.h index b5e0a964b2..c25b1be935 100644 --- a/db_stress_tool/db_stress_common.h +++ b/db_stress_tool/db_stress_common.h @@ -307,24 +307,6 @@ extern enum ROCKSDB_NAMESPACE::CompressionType compression_type_e; extern enum ROCKSDB_NAMESPACE::CompressionType bottommost_compression_type_e; extern enum ROCKSDB_NAMESPACE::ChecksumType checksum_type_e; -enum RepFactory { kSkipList, kHashSkipList, kVectorRep }; - -inline enum RepFactory StringToRepFactory(const char* ctype) { - assert(ctype); - - if (!strcasecmp(ctype, "skip_list")) - return kSkipList; - else if (!strcasecmp(ctype, "prefix_hash")) - return kHashSkipList; - else if (!strcasecmp(ctype, "vector")) - return kVectorRep; - - fprintf(stdout, "Cannot parse memreptable %s\n", ctype); - return kSkipList; -} - -extern enum RepFactory FLAGS_rep_factory; - namespace ROCKSDB_NAMESPACE { inline enum ROCKSDB_NAMESPACE::CompressionType StringToCompressionType( const char* ctype) { diff --git a/db_stress_tool/db_stress_test_base.cc b/db_stress_tool/db_stress_test_base.cc index 56820234b7..acfd78aff2 100644 --- a/db_stress_tool/db_stress_test_base.cc +++ b/db_stress_tool/db_stress_test_base.cc @@ -2263,20 +2263,8 @@ void StressTest::PrintEnv() const { fprintf(stdout, "Use MultiGet : %s\n", FLAGS_use_multiget ? "true" : "false"); - const char* memtablerep = ""; - switch (FLAGS_rep_factory) { - case kSkipList: - memtablerep = "skip_list"; - break; - case kHashSkipList: - memtablerep = "prefix_hash"; - break; - case kVectorRep: - memtablerep = "vector"; - break; - } - - fprintf(stdout, "Memtablerep : %s\n", memtablerep); + fprintf(stdout, "Memtablerep : %s\n", + FLAGS_memtablerep.c_str()); #ifndef NDEBUG KillPoint* kp = KillPoint::GetInstance(); @@ -2509,35 +2497,34 @@ void StressTest::Open() { exit(1); } } - - if (FLAGS_prefix_size == 0 && FLAGS_rep_factory == kHashSkipList) { + if (strcasecmp(FLAGS_memtablerep.c_str(), "prefix_hash") == 0) { + // Needed to use a different default (10K vs 1M) + FLAGS_memtablerep = "prefix_hash:10000"; + } + std::unique_ptr factory; + ConfigOptions config_options; + config_options.ignore_unknown_options = false; + config_options.ignore_unsupported_options = false; + Status status = MemTableRepFactory::CreateFromString( + config_options, FLAGS_memtablerep, &factory); + if (!status.ok() || !factory) { + fprintf(stderr, "MemTableFactory creation failed: %s\n", + status.ToString().c_str()); + exit(1); + } + options_.memtable_factory = std::move(factory); + if (FLAGS_prefix_size == 0 && + options_.memtable_factory->IsInstanceOf("prefix_hash")) { fprintf(stderr, "prefeix_size cannot be zero if memtablerep == prefix_hash\n"); exit(1); } - if (FLAGS_prefix_size != 0 && FLAGS_rep_factory != kHashSkipList) { + if (FLAGS_prefix_size != 0 && + !options_.memtable_factory->IsInstanceOf("prefix_hash")) { fprintf(stderr, "WARNING: prefix_size is non-zero but " "memtablerep != prefix_hash\n"); } - switch (FLAGS_rep_factory) { - case kSkipList: - // no need to do anything - break; -#ifndef ROCKSDB_LITE - case kHashSkipList: - options_.memtable_factory.reset(NewHashSkipListRepFactory(10000)); - break; - case kVectorRep: - options_.memtable_factory.reset(new VectorRepFactory()); - break; -#else - default: - fprintf(stderr, - "RocksdbLite only supports skip list mem table. Skip " - "--rep_factory\n"); -#endif // ROCKSDB_LITE - } if (FLAGS_use_full_merge_v1) { options_.merge_operator = MergeOperators::CreateDeprecatedPutOperator(); diff --git a/db_stress_tool/db_stress_tool.cc b/db_stress_tool/db_stress_tool.cc index 361ff6c0d7..32519a3c87 100644 --- a/db_stress_tool/db_stress_tool.cc +++ b/db_stress_tool/db_stress_tool.cc @@ -120,8 +120,6 @@ int db_stress_tool(int argc, char** argv) { } #endif - FLAGS_rep_factory = StringToRepFactory(FLAGS_memtablerep.c_str()); - // The number of background threads should be at least as much the // max number of concurrent compactions. db_stress_env->SetBackgroundThreads(FLAGS_max_background_compactions, diff --git a/memtable/memtablerep_bench.cc b/memtable/memtablerep_bench.cc index 1eaa7658f0..ae3201c062 100644 --- a/memtable/memtablerep_bench.cc +++ b/memtable/memtablerep_bench.cc @@ -578,10 +578,9 @@ int main(int argc, char** argv) { std::unique_ptr factory; if (FLAGS_memtablerep == "skiplist") { + // Needed because of a different name/default than CreateFromString factory.reset(new ROCKSDB_NAMESPACE::SkipListFactory); #ifndef ROCKSDB_LITE - } else if (FLAGS_memtablerep == "vector") { - factory.reset(new ROCKSDB_NAMESPACE::VectorRepFactory); } else if (FLAGS_memtablerep == "hashskiplist" || FLAGS_memtablerep == "prefix_hash") { factory.reset(ROCKSDB_NAMESPACE::NewHashSkipListRepFactory( @@ -601,12 +600,14 @@ int main(int argc, char** argv) { } else { ROCKSDB_NAMESPACE::ConfigOptions config_options; config_options.ignore_unsupported_options = false; + config_options.ignore_unknown_options = false; ROCKSDB_NAMESPACE::Status s = ROCKSDB_NAMESPACE::MemTableRepFactory::CreateFromString( config_options, FLAGS_memtablerep, &factory); - if (!s.ok()) { - fprintf(stdout, "Unknown memtablerep: %s\n", s.ToString().c_str()); + if (!s.ok() || !factory) { + fprintf(stdout, "Unknown memtablerep[%s]: %s\n", + FLAGS_memtablerep.c_str(), s.ToString().c_str()); exit(1); } } diff --git a/memtable/write_buffer_manager.cc b/memtable/write_buffer_manager.cc index cd85b148a7..40dc498c65 100644 --- a/memtable/write_buffer_manager.cc +++ b/memtable/write_buffer_manager.cc @@ -207,8 +207,8 @@ std::string WriteBufferManager::GetPrintableOptions() const { // The assumed width of the callers display code int field_width = 47; - snprintf(buffer, kBufferSize, "%*s: %" PRIu64 "\n", field_width, "size", - buffer_size()); + snprintf(buffer, kBufferSize, "%*s: %" ROCKSDB_PRIszt "\n", field_width, + "size", buffer_size()); ret.append(buffer); return ret; diff --git a/tools/db_bench_tool.cc b/tools/db_bench_tool.cc index be2b62dc24..f9c602eaea 100644 --- a/tools/db_bench_tool.cc +++ b/tools/db_bench_tool.cc @@ -1628,9 +1628,6 @@ static Status CreateMemTableRepFactory( #ifndef ROCKSDB_LITE } else if (!strcasecmp(FLAGS_memtablerep.c_str(), "prefix_hash")) { factory->reset(NewHashSkipListRepFactory(FLAGS_hash_bucket_count)); - } else if (!strcasecmp(FLAGS_memtablerep.c_str(), - VectorRepFactory::kNickName())) { - factory->reset(new VectorRepFactory()); } else if (!strcasecmp(FLAGS_memtablerep.c_str(), "hash_linkedlist")) { factory->reset(NewHashLinkListRepFactory(FLAGS_hash_bucket_count)); #endif // ROCKSDB_LITE @@ -2594,7 +2591,7 @@ class Benchmark { compressed); } - void PrintHeader(const Options& options) { + void PrintHeader() { PrintEnvironment(); fprintf(stdout, "Keys: %d bytes each (+ %d bytes user-defined timestamp)\n", @@ -2644,10 +2641,8 @@ class Benchmark { fprintf(stdout, "Compression: %s\n", compression.c_str()); fprintf(stdout, "Compression sampling rate: %" PRId64 "\n", FLAGS_sample_for_compression); - if (options.memtable_factory != nullptr) { - fprintf(stdout, "Memtablerep: %s\n", - options.memtable_factory->GetId().c_str()); - } + + fprintf(stdout, "Memtablerep: %s\n", FLAGS_memtablerep.c_str()); fprintf(stdout, "Perf Level: %d\n", FLAGS_perf_level); PrintWarnings(compression.c_str()); @@ -3126,7 +3121,7 @@ class Benchmark { ErrorExit(); } Open(&open_options_); - PrintHeader(open_options_); + PrintHeader(); std::stringstream benchmark_stream(FLAGS_benchmarks); std::string name; std::unique_ptr filter; @@ -3963,12 +3958,13 @@ class Benchmark { "HashLinkedList memtablerep is used\n"); exit(1); } + if (FLAGS_use_plain_table) { #ifndef ROCKSDB_LITE if (!options.memtable_factory->IsInstanceOf("prefix_hash") && !options.memtable_factory->IsInstanceOf("hash_linkedlist")) { fprintf(stderr, "Warning: plain table is used with %s\n", - options.memtable_factory->Name()); + FLAGS_memtablerep.c_str()); } int bloom_bits_per_key = FLAGS_bloom_bits; @@ -7064,7 +7060,7 @@ class Benchmark { // the number of iterations is the larger of read_ or write_ while (!duration.Done(1)) { - int prob_op = thread->rand.Uniform(100); + int prob_op = static_cast(thread->rand.Uniform(100)); // Seek if (prob_op >= 0 && prob_op < static_cast(FLAGS_readwritepercent)) { From 19e4b9bf9907d11e651ea515da7c2800e4620e36 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 27 Jul 2022 16:17:58 +0300 Subject: [PATCH 161/226] version: remove superfluous build property The `speedb_build_spdb_key` property is unused and was accidentally imported as part of #1. --- util/build_version.cc.in | 2 -- 1 file changed, 2 deletions(-) diff --git a/util/build_version.cc.in b/util/build_version.cc.in index 7fc2bcd23a..6fd2f430a9 100644 --- a/util/build_version.cc.in +++ b/util/build_version.cc.in @@ -11,7 +11,6 @@ // on whether or not GIT is available and the platform settings static const std::string speedb_build_git_sha = "speedb_build_git_sha:@GIT_SHA@"; static const std::string speedb_build_git_tag = "speedb_build_git_tag:@GIT_TAG@"; -static const std::string speedb_build_spdb_key = "speedb_build_spdb_key:@SPDB_KEY@"; #define HAS_GIT_CHANGES @GIT_MOD@ #if HAS_GIT_CHANGES == 0 // If HAS_GIT_CHANGES is 0, the GIT date is used. @@ -51,7 +50,6 @@ static std::unordered_map* LoadPropertiesSet() { AddProperty(properties, speedb_build_git_sha); AddProperty(properties, speedb_build_git_tag); AddProperty(properties, speedb_build_date); - AddProperty(properties, speedb_build_spdb_key); return properties; } From 444ffd4e15bf83b36db75d72c6c94ecd2b02d2ac Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 27 Jul 2022 21:34:43 +0300 Subject: [PATCH 162/226] cmake: use the old plugin infra and add support for *_FUNC registration (#80) The new Customizable plugin infra in CMake relies on regex parsing of Makefiles, which is very brittle and clunky, as well as being unintuitive for CMake users. The only thing missing from the old infra is plugin `*_FUNC` registration, so just add support for that to the old infra, and remove the Makefile parsing logic. --- CMakeLists.txt | 73 +++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 807ad162c1..10b190da92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -907,26 +907,62 @@ list(APPEND SOURCES utilities/transactions/lock/range/range_tree/lib/util/dbt.cc utilities/transactions/lock/range/range_tree/lib/util/memarena.cc) +set(ROCKSDB_PLUGIN_EXTERNS "") +set(ROCKSDB_PLUGIN_BUILTINS "") message(STATUS "ROCKSDB_PLUGINS: ${ROCKSDB_PLUGINS}") if ( ROCKSDB_PLUGINS ) string(REPLACE " " ";" PLUGINS ${ROCKSDB_PLUGINS}) foreach (plugin ${PLUGINS}) - add_subdirectory("plugin/${plugin}") + set(plugin_root "plugin/${plugin}/") + add_subdirectory(${plugin_root}) + # Use get_directory_property() to avoid having to declare the variables + # with PARENT_SCOPE in the plugin CMakeLists.txt + # TODO: Change the plugin support here so that a plugin would simply define + # a target that we'll link to. + get_directory_property(${plugin}_SOURCES + DIRECTORY ${plugin_root} + DEFINITION ${plugin}_SOURCES) + get_directory_property(${plugin}_COMPILE_FLAGS + DIRECTORY ${plugin_root} + DEFINITION ${plugin}_COMPILE_FLAGS) foreach (src ${${plugin}_SOURCES}) - list(APPEND SOURCES plugin/${plugin}/${src}) + list(APPEND SOURCES ${plugin_root}/${src}) set_source_files_properties( - plugin/${plugin}/${src} + ${plugin_root}/${src} PROPERTIES COMPILE_FLAGS "${${plugin}_COMPILE_FLAGS}") endforeach() + get_directory_property(${plugin}_INCLUDE_PATHS + DIRECTORY ${plugin_root} + DEFINITION ${plugin}_INCLUDE_PATHS) foreach (path ${${plugin}_INCLUDE_PATHS}) include_directories(${path}) endforeach() + get_directory_property(${plugin}_LIBS + DIRECTORY ${plugin_root} + DEFINITION ${plugin}_LIBS) foreach (lib ${${plugin}_LIBS}) list(APPEND THIRDPARTY_LIBS ${lib}) endforeach() + get_directory_property(${plugin}_LINK_PATHS + DIRECTORY ${plugin_root} + DEFINITION ${plugin}_LINK_PATHS) foreach (link_path ${${plugin}_LINK_PATHS}) link_directories(AFTER ${link_path}) endforeach() + get_directory_property(${plugin}_FUNC + DIRECTORY ${plugin_root} + DEFINITION ${plugin}_FUNC) + string(STRIP "${${plugin}_FUNC}" ${plugin}_FUNC) + if (NOT "${plugin}_FUNC" STREQUAL "") + string(APPEND ROCKSDB_PLUGIN_BUILTINS "{\"${plugin}\", ${${plugin}_FUNC} },") + string(APPEND ROCKSDB_PLUGIN_EXTERNS "int ${${plugin}_FUNC} (ROCKSDB_NAMESPACE::ObjectLibrary&, const std::string&); ") + endif() + get_directory_property(${plugin}_CMAKE_SHARED_LINKER_FLAGS + DIRECTORY ${plugin_root} + DEFINITION ${plugin}_CMAKE_SHARED_LINKER_FLAGS) + get_directory_property(${plugin}_CMAKE_EXE_LINKER_FLAGS + DIRECTORY ${plugin_root} + DEFINITION ${plugin}_CMAKE_EXE_LINKER_FLAGS) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${${plugin}_CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${${plugin}_CMAKE_EXE_LINKER_FLAGS}") endforeach() @@ -995,37 +1031,6 @@ else() set(SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT}) endif() -set(ROCKSDB_PLUGIN_EXTERNS "") -set(ROCKSDB_PLUGIN_BUILTINS "") -message(STATUS "ROCKSDB PLUGINS TO BUILD ${ROCKSDB_PLUGINS}") -list(APPEND PLUGINS ${ROCKSDB_PLUGINS}) -foreach(PLUGIN IN LISTS PLUGINS) - set(PLUGIN_ROOT "${CMAKE_SOURCE_DIR}/plugin/${PLUGIN}/") - message("including rocksb plugin ${PLUGIN_ROOT}") - set(PLUGINMKFILE "${PLUGIN_ROOT}${PLUGIN}.mk") - if (NOT EXISTS ${PLUGINMKFILE}) - message(FATAL_ERROR "Missing plugin makefile: ${PLUGINMKFILE}") - endif() - file(READ ${PLUGINMKFILE} PLUGINMK) - string(REGEX MATCH "SOURCES = ([^\n]*)" FOO ${PLUGINMK}) - set(MK_SOURCES ${CMAKE_MATCH_1}) - separate_arguments(MK_SOURCES) - foreach(MK_FILE IN LISTS MK_SOURCES) - list(APPEND SOURCES "${PLUGIN_ROOT}${MK_FILE}") - endforeach() - string(REGEX MATCH "_FUNC = ([^\n]*)" FOO ${PLUGINMK}) - if (NOT ${CMAKE_MATCH_1} STREQUAL "") - string(APPEND ROCKSDB_PLUGIN_BUILTINS "{\"${PLUGIN}\", " ${CMAKE_MATCH_1} "},") - string(APPEND ROCKSDB_PLUGIN_EXTERNS "int " ${CMAKE_MATCH_1} "(ROCKSDB_NAMESPACE::ObjectLibrary&, const std::string&); ") - endif() - string(REGEX MATCH "_LIBS = ([^\n]*)" FOO ${PLUGINMK}) - if (NOT ${CMAKE_MATCH_1} STREQUAL "") - list(APPEND THIRDPARTY_LIBS "${CMAKE_MATCH_1}") - endif() - message("THIRDPARTY_LIBS=${THIRDPARTY_LIBS}") - #TODO: We need to set any compile/link-time flags and add any link libraries -endforeach() - string(TIMESTAMP TS "%Y-%m-%d %H:%M:%S" UTC) set(BUILD_DATE "${TS}" CACHE STRING "the time we first built rocksdb") From 39b917746106c57c054765e864ad866fc46d0bc2 Mon Sep 17 00:00:00 2001 From: Ayelet Shani Date: Wed, 4 Aug 2021 09:40:00 +0200 Subject: [PATCH 163/226] spdb memtable: add a new hash-based memtable This memtable supports concurrent readers and writers and provides much better results for insertions and point selections than the skip list memtable, while maintaining more tolerable iteration performance than the built-in RocksDB hash-based memtable. --- memtable/stl_wrappers.h | 3 + plugin/speedb/CMakeLists.txt | 18 + plugin/speedb/memtable/hash_spd_rep.cc | 990 +++++++++++++++++++++++++ plugin/speedb/memtable/hash_spd_rep.h | 45 ++ plugin/speedb/speedb.mk | 20 + plugin/speedb/speedb_registry.cc | 44 ++ plugin/speedb/speedb_registry.h | 29 + 7 files changed, 1149 insertions(+) create mode 100644 plugin/speedb/CMakeLists.txt create mode 100644 plugin/speedb/memtable/hash_spd_rep.cc create mode 100644 plugin/speedb/memtable/hash_spd_rep.h create mode 100644 plugin/speedb/speedb.mk create mode 100644 plugin/speedb/speedb_registry.cc create mode 100644 plugin/speedb/speedb_registry.h diff --git a/memtable/stl_wrappers.h b/memtable/stl_wrappers.h index e9f8f214ce..ef274b03e5 100644 --- a/memtable/stl_wrappers.h +++ b/memtable/stl_wrappers.h @@ -27,6 +27,9 @@ struct Compare : private Base { inline bool operator()(const char* a, const char* b) const { return compare_(a, b) < 0; } + inline bool operator()(const char* a, const Slice& b) const { + return compare_(a, b) < 0; + } }; } diff --git a/plugin/speedb/CMakeLists.txt b/plugin/speedb/CMakeLists.txt new file mode 100644 index 0000000000..b411820482 --- /dev/null +++ b/plugin/speedb/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (C) 2022 Speedb Ltd. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set(speedb_SOURCES + speedb_registry.cc + memtable/hash_spd_rep.cc) + +set(speedb_FUNC register_SpeedbPlugins) diff --git a/plugin/speedb/memtable/hash_spd_rep.cc b/plugin/speedb/memtable/hash_spd_rep.cc new file mode 100644 index 0000000000..dab5884d28 --- /dev/null +++ b/plugin/speedb/memtable/hash_spd_rep.cc @@ -0,0 +1,990 @@ +// Copyright (C) 2022 Speedb Ltd. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef ROCKSDB_LITE + +#include "plugin/speedb/memtable/hash_spd_rep.h" + +#include +#include +#include // std::condition_variable +#include +#include + +#include "db/memtable.h" +#include "memory/arena.h" +#include "memtable/stl_wrappers.h" +#include "monitoring/histogram.h" +#include "port/port.h" +#include "rocksdb/memtablerep.h" +#include "rocksdb/slice.h" +#include "rocksdb/slice_transform.h" +#include "rocksdb/utilities/options_type.h" +#include "util/hash.h" +#include "util/heap.h" +#include "util/murmurhash.h" + +namespace ROCKSDB_NAMESPACE { +namespace { + +enum class IterOption { kNone, kIter, kImmutable }; + +struct SortItem { + // Accessors/mutators for links. Wrapped in methods so we can + // add the appropriate barriers as necessary. + + SortItem* Next() { return next_.load(); } + void SetNext(SortItem* item) { next_.store(item); } + + char* Key() { return key_; } + + bool IsIterPoint() { return iter_op_ != IterOption::kNone; } + + bool IsSorted() { return sorted_; } + + bool IsImmutable() { return iter_op_ == IterOption::kImmutable; } + + void SetSorted() { sorted_ = true; } + + void SetSortSetInfo(void* sort_set_info) { sort_set_info_ = sort_set_info; } + + void* GetSortSetInfo() { return sort_set_info_; } + + SortItem(IterOption iter_op = IterOption::kNone) + : next_(nullptr), iter_op_(iter_op), sorted_(false) {} + + private: + std::atomic next_; + IterOption iter_op_; + bool sorted_; + void* sort_set_info_; + + // Prohibit copying due to the below + SortItem(const SortItem&) = delete; + SortItem& operator=(const SortItem&) = delete; + + public: + char key_[1]; +}; + +struct BucketHeader { + port::Mutex mutex_; // this mutex probably wont cause delay + std::list items_; + + BucketHeader() { items_.clear(); } + + bool InternalContains(const MemTableRep::KeyComparator& comparator, + const char* check_key) { + if (items_.size() == 0) { + return false; + } + + std::list::iterator iter; + + for (iter = items_.begin(); iter != items_.end(); ++iter) { + const char* key = (*iter)->key_; + + if (comparator(check_key, key) == 0) { + return true; + } + } + return false; + } + + bool Contains(const MemTableRep::KeyComparator& comparator, + const char* check_key) { + MutexLock l(&mutex_); + return InternalContains(comparator, check_key); + } + + bool Add(SortItem* sort_item, const MemTableRep::KeyComparator& comparator, + bool check_exist) { + MutexLock l(&mutex_); + if (check_exist) { + if (InternalContains(comparator, sort_item->key_)) return false; + } + + items_.push_front(sort_item); + return true; + } +}; + +enum class SeekOption { + kInitForward, + kInitBackward, + kSwitchForward, + kSwitchBackward, +}; + +class SortHeapItem { + public: + SortHeapItem() : add_vector_(nullptr), is_init_(false) {} + + ~SortHeapItem() {} + + // Move constructor. + SortHeapItem(SortHeapItem&& other) noexcept + : add_vector_(other.add_vector_), + curr_iter_(other.curr_iter_), + idx_(other.idx_), + is_init_(other.is_init_) {} + + // Move assignment operator. + SortHeapItem& operator=(SortHeapItem&& other) noexcept { + if (this != &other) { + // Copy the data pointer and its length from the + // source object. + add_vector_ = other.add_vector_; + curr_iter_ = other.curr_iter_; + idx_ = other.idx_; + is_init_ = other.is_init_; + } + return *this; + } + + char* Key() { return *curr_iter_; } + + char* Get() const { return *curr_iter_; } + + uint32_t GetIdx() { return idx_; } + + void Init(void* add_vector, std::vector::iterator curr_iter, + uint32_t idx) { + if (is_init_) return; + add_vector_ = add_vector; + curr_iter_ = curr_iter; + idx_ = idx; + is_init_ = true; + } + + public: + void* add_vector_; + std::vector::iterator curr_iter_; + uint32_t idx_; + bool is_init_; +}; + +class IteratorComparator { + public: + IteratorComparator(const MemTableRep::KeyComparator& comparator, + bool up_direction) + : comparator_(comparator), up_direction_(up_direction) {} + + bool operator()(SortHeapItem* a, SortHeapItem* b) const { + return ((up_direction_) ? (comparator_(a->Get(), b->Get()) > 0) + : (comparator_(a->Get(), b->Get()) < 0)); + } + + void SetDirection(bool up_direction) { up_direction_ = up_direction; } + + private: + const MemTableRep::KeyComparator& comparator_; + bool up_direction_; +}; + +typedef BinaryHeap IterHeap; + +class IterHeapInfo { + public: + IterHeapInfo(const MemTableRep::KeyComparator& comparator) + : comparator_(comparator), + iter_heap_(new IterHeap(IteratorComparator(comparator, true))) {} + + ~IterHeapInfo() { iter_heap_.get()->clear(); } + + void Init(uint32_t iter_sort_items_num) { + sort_items_.reset(new SortHeapItem[iter_sort_items_num]); + } + + void Reset(bool up_iter_direction) { + iter_heap_.get()->clear(); + iter_heap_.reset( + new IterHeap(IteratorComparator(comparator_, up_iter_direction))); + } + + char* Key() const { + char* requested_key = nullptr; + if (iter_heap_.get()->size() != 0) { + requested_key = iter_heap_.get()->top()->Key(); + } + return requested_key; + } + + bool Valid() const { return iter_heap_.get()->size() != 0; } + + SortHeapItem* Get() { + if (!Valid()) return nullptr; + uint32_t sort_item_idx = iter_heap_.get()->top()->GetIdx(); + return (&sort_items_.get()[sort_item_idx]); + } + + SortHeapItem* Get(uint32_t idx) { return (&sort_items_.get()[idx]); } + + void Update(bool valid, SortHeapItem* sort_item) { + if (valid) { + iter_heap_.get()->replace_top(sort_item); + } else { + iter_heap_.get()->pop(); + } + } + + void Insert(SortHeapItem* sort_item) { iter_heap_.get()->push(sort_item); } + + private: + const MemTableRep::KeyComparator& comparator_; + std::unique_ptr sort_items_; + std::unique_ptr iter_heap_; +}; + +class SortVector { + public: + SortVector(uint32_t size_limit) + : iter_point_(IterOption::kIter), size_limit_(size_limit) { + items_.reserve(size_limit); + smallest_key_ = nullptr; + largest_key_ = nullptr; + } + + ~SortVector() {} + + // Move constructor. + SortVector(SortVector&& other) noexcept : iter_point_(IterOption::kIter) { + items_.reserve(other.size_limit_); + } + + bool IsEmpty(); + + SortItem* GetIterPoint(); + + bool Sort(const MemTableRep::KeyComparator& comparator); + + bool Insert(char* key); + + bool SeekForward(const MemTableRep::KeyComparator& comparator, + const char* seek_key, SortHeapItem* sort_item); + bool SeekBackward(const MemTableRep::KeyComparator& comparator, + const char* seek_key, SortHeapItem* sort_item); + + bool SeekSwitchForward(const MemTableRep::KeyComparator& comparator, + const char* seek_key, SortHeapItem* sort_item); + bool SeekSwitchBackward(const MemTableRep::KeyComparator& comparator, + const char* seek_key, SortHeapItem* sort_item); + + bool Seek(const MemTableRep::KeyComparator& comparator, const char* seek_key, + SeekOption seek_op, SortHeapItem* sort_item, uint32_t idx); + + bool Next(SortHeapItem* sort_item); + + bool Prev(SortHeapItem* sort_item); + + private: + SortItem iter_point_; + std::vector items_; + char* smallest_key_; + char* largest_key_; + uint32_t size_limit_; + port::Mutex mutex_; +}; + +// SortVector implemntation + +SortItem* SortVector::GetIterPoint() { return &iter_point_; } + +bool SortVector::Insert(char* key) { + items_.push_back(key); + return (items_.size() == size_limit_) ? false : true; +} + +bool SortVector::Sort(const MemTableRep::KeyComparator& comparator) { + std::sort(items_.begin(), items_.end(), stl_wrappers::Compare(comparator)); + smallest_key_ = items_.front(); + largest_key_ = items_.back(); + + return (items_.size() != 0) ? true : false; +} + +bool SortVector::SeekForward(const MemTableRep::KeyComparator& comparator, + const char* seek_key, SortHeapItem* sort_item) { + if (seek_key == nullptr) { + sort_item->curr_iter_ = items_.begin(); + } else { + if (comparator(largest_key_, seek_key) >= 0) { + sort_item->curr_iter_ = + std::lower_bound(items_.begin(), items_.end(), seek_key, + stl_wrappers::Compare(comparator)); + } + } + return (sort_item->curr_iter_ == items_.end()) ? false : true; +} + +bool SortVector::SeekBackward(const MemTableRep::KeyComparator& comparator, + const char* seek_key, SortHeapItem* sort_item) { + if (seek_key == nullptr) { + sort_item->curr_iter_ = std::prev(items_.end()); + } else { + if (comparator(smallest_key_, seek_key) <= 0) { + sort_item->curr_iter_ = + std::lower_bound(items_.begin(), items_.end(), seek_key, + stl_wrappers::Compare(comparator)); + if (comparator(*sort_item->curr_iter_, seek_key) > 0) { + // need to backward the curr iter + --sort_item->curr_iter_; + } + } + } + return (sort_item->curr_iter_ == items_.end()) ? false : true; +} + +bool SortVector::SeekSwitchForward(const MemTableRep::KeyComparator& comparator, + const char* seek_key, + SortHeapItem* sort_item) { + if (comparator(largest_key_, seek_key) <= 0) { + // this addvector shouldnt be part of the iterator heap + sort_item->curr_iter_ = items_.end(); + } else { + if (sort_item->curr_iter_ != items_.end()) { + ++sort_item->curr_iter_; + } else { + sort_item->curr_iter_ = + std::upper_bound(items_.begin(), items_.end(), seek_key, + stl_wrappers::Compare(comparator)); + } + } + return (sort_item->curr_iter_ == items_.end()) ? false : true; +} + +bool SortVector::SeekSwitchBackward( + const MemTableRep::KeyComparator& comparator, const char* seek_key, + SortHeapItem* sort_item) { + if (comparator(smallest_key_, seek_key) >= 0) { + // this addvector shouldnt be part of the iterator heap + sort_item->curr_iter_ = items_.end(); + } else { + if (sort_item->curr_iter_ != items_.end()) { + --sort_item->curr_iter_; + } else { + sort_item->curr_iter_ = + std::lower_bound(items_.begin(), items_.end(), seek_key, + stl_wrappers::Compare(comparator)); + sort_item->curr_iter_ = (sort_item->curr_iter_ == items_.begin()) + ? items_.end() + : --sort_item->curr_iter_; + } + } + return (sort_item->curr_iter_ == items_.end()) ? false : true; +} + +bool SortVector::Seek(const MemTableRep::KeyComparator& comparator, + const char* seek_key, SeekOption seek_op, + SortHeapItem* sort_item, uint32_t idx) { + if (items_.size() == 0) return false; + sort_item->Init(this, this->items_.end(), idx); + bool valid = false; + switch (seek_op) { + case SeekOption::kInitForward: + valid = SeekForward(comparator, seek_key, sort_item); + break; + case SeekOption::kInitBackward: + valid = SeekBackward(comparator, seek_key, sort_item); + break; + case SeekOption::kSwitchForward: + valid = SeekSwitchForward(comparator, seek_key, sort_item); + break; + case SeekOption::kSwitchBackward: + valid = SeekSwitchBackward(comparator, seek_key, sort_item); + break; + } + return valid; +} + +bool SortVector::Next(SortHeapItem* sort_item) { + sort_item->curr_iter_++; + return (sort_item->curr_iter_ != items_.end()); +} + +bool SortVector::Prev(SortHeapItem* sort_item) { + if (sort_item->curr_iter_ == items_.begin()) { + sort_item->curr_iter_ = items_.end(); + } else { + sort_item->curr_iter_--; + } + return (sort_item->curr_iter_ != items_.end()); +} + +struct IterSortSettingInfo { + std::list>::iterator iter_anchor_; + std::shared_ptr iter_sort_vector_; + uint32_t iter_size_; +}; + +class SortVectorContainer { + public: + explicit SortVectorContainer(const MemTableRep::KeyComparator& comparator, + uint32_t switch_vector_limit) + : items_count_(0), + comparator_(comparator), + switch_vector_limit_(switch_vector_limit), + immutable_(false), + anchor_item_(IterOption::kIter), + immutable_item_(IterOption::kImmutable), + sort_thread_terminate(false) { + last_item_.store(&anchor_item_); + last_sorted_item_.store(&anchor_item_); + sort_thread_ = std::thread(&SortVectorContainer::SortThread, this); + } + + ~SortVectorContainer() { + { + std::unique_lock lck(sort_thread_mutex_); + sort_thread_terminate.store(true); + sort_thread_cv_.notify_one(); + } + sort_thread_.join(); + empty_iter_sort_vectors_.clear(); + } + + void Insert(SortItem* new_item); + + void InitIterator(IterSortSettingInfo* sort_set_info); + + void SeekIter(std::list>::iterator iter_anchor, + IterHeapInfo* iter_heap_info, const char* seek_key, + SeekOption seek_op); + + bool Next(SortHeapItem* sort_item); + + bool Prev(SortHeapItem* sort_item); + + void AdvanceAndSort(std::shared_ptr sort_vector); + + void Sort(); + void SortThread(); + void Immutable(); + + public: + // an atomic add item private the ability add without any lock + std::atomic last_item_; + // an atomic item count allow us know when to create new sort vector + std::atomic items_count_; + port::Mutex mutex_; + + std::list> sort_vectors_; + // this vector list is becuase we might did query on a quite memtable + // BEFORE the memtable was immutable so no need to add a new sort vector to + // heap. it needs to be immpmented better + std::list> empty_iter_sort_vectors_; + const MemTableRep::KeyComparator& comparator_; + + uint32_t switch_vector_limit_; + std::atomic immutable_; + SortItem anchor_item_; + + port::RWMutex rwlock_; // this is protect from being immutable and get iter + // in the same time + SortItem immutable_item_; + std::thread sort_thread_; + std::mutex sort_thread_mutex_; + std::atomic sort_thread_terminate; + std::condition_variable sort_thread_cv_; + std::mutex notify_sorted_mutex_; + std::condition_variable notify_sorted_cv_; + + std::atomic last_sorted_item_; +}; + +// SortVectorContainer implemanmtation + +void SortVectorContainer::Insert(SortItem* new_item) { + uint32_t items_count = items_count_.fetch_add(1); + SortItem* prev_item = last_item_.exchange(new_item); + prev_item->SetNext(new_item); + + if ((items_count % switch_vector_limit_) == 0) { + // notify thread to create new + std::unique_lock lck(sort_thread_mutex_); + sort_thread_cv_.notify_one(); + } +} + +void SortVectorContainer::InitIterator(IterSortSettingInfo* sort_set_info) { + SortItem* sort_item; + bool immutable = false; + + { + ReadLock rl(&rwlock_); // see Immutable function + immutable = immutable_.load(); + if (immutable) { + sort_item = &immutable_item_; + } else { + sort_set_info->iter_sort_vector_ = + std::make_shared(switch_vector_limit_); + sort_item = sort_set_info->iter_sort_vector_->GetIterPoint(); + sort_item->SetSortSetInfo(static_cast(sort_set_info)); + SortItem* prev_item = last_item_.exchange(sort_item); + prev_item->SetNext(sort_item); + { + std::unique_lock lck(sort_thread_mutex_); + sort_thread_cv_.notify_one(); + } + } + } + + { + std::unique_lock notify_lck(notify_sorted_mutex_); + while (!sort_item->IsSorted()) notify_sorted_cv_.wait(notify_lck); + } + if (immutable) { + // we are sorted and set! j + sort_set_info->iter_anchor_ = sort_vectors_.begin(); + sort_set_info->iter_size_ = static_cast(sort_vectors_.size()); + } else { + // the info was set in the sort item + } + return; +} + +void SortVectorContainer::SeekIter( + std::list>::iterator iter_anchor, + IterHeapInfo* iter_heap_info, const char* seek_key, SeekOption seek_op) { + std::list>::iterator iter; + uint32_t idx; + for (iter = iter_anchor, idx = 0; iter != sort_vectors_.end(); + ++iter, ++idx) { + SortHeapItem* sort_item = iter_heap_info->Get(idx); + + bool valid = (*iter)->Seek(comparator_, seek_key, seek_op, sort_item, idx); + + if (valid) iter_heap_info->Insert(sort_item); + } +} + +bool SortVectorContainer::Next(SortHeapItem* sort_item) { + return (static_cast(sort_item->add_vector_))->Next(sort_item); +} + +bool SortVectorContainer::Prev(SortHeapItem* sort_item) { + return (static_cast(sort_item->add_vector_))->Prev(sort_item); +} + +void SortVectorContainer::AdvanceAndSort( + std::shared_ptr sort_vector) { + sort_vectors_.front()->Sort(comparator_); + std::shared_ptr push_sort_vector = sort_vector; + if (!push_sort_vector) + push_sort_vector = std::make_shared(switch_vector_limit_); + sort_vectors_.push_front(push_sort_vector); +} + +void SortVectorContainer::Sort() { sort_vectors_.front()->Sort(comparator_); } + +void SortVectorContainer::SortThread() { + bool should_exit = false; + SortItem* last_loop_item = last_sorted_item_.load(); + // create first vector + sort_vectors_.push_front(std::make_shared(switch_vector_limit_)); + + while (!should_exit) { + { + std::unique_lock lck(sort_thread_mutex_); + while (!last_loop_item->Next() && !sort_thread_terminate.load()) + sort_thread_cv_.wait(lck); + } + // go over the items list - create vector if needed and sort + while (last_loop_item->Next()) { + std::list>::iterator last_sort_iter = + sort_vectors_.begin(); + if (last_loop_item->Next()->IsIterPoint()) { // an iter item + if (last_loop_item->Next()->IsImmutable()) { + // this is the last item! need to sort last vector and exit + Sort(); + last_loop_item->Next()->SetSorted(); + } else { + IterSortSettingInfo* sort_set_info = + static_cast( + last_loop_item->Next()->GetSortSetInfo()); + sort_set_info->iter_size_ = + static_cast(sort_vectors_.size()); + + if (!last_loop_item->IsIterPoint()) { + // sort the previous vector and create new one + AdvanceAndSort(sort_set_info->iter_sort_vector_); + } else { + // need to add to the empty_iter_sort_vectors_ + // TBD AYELET + empty_iter_sort_vectors_.push_back( + std::make_shared(switch_vector_limit_)); + } + sort_set_info->iter_anchor_ = last_sort_iter; + last_loop_item->Next()->SetSorted(); + } + last_sorted_item_.store(last_loop_item->Next()); + { + // notify waiters iterators + std::unique_lock notify_lck(notify_sorted_mutex_); + notify_sorted_cv_.notify_all(); + } + } else { + if (!(*last_sort_iter)->Insert(last_loop_item->Next()->Key())) { + // we reach limit vector size sort and create new vector + AdvanceAndSort(nullptr); + } + } + last_loop_item = last_loop_item->Next(); + } + if (sort_thread_terminate.load() || last_loop_item->IsImmutable()) { + should_exit = true; // thread should be terminated + } + } +} + +void SortVectorContainer::Immutable() { + { + // make sure that no iter requests being performed + WriteLock wl(&rwlock_); + SortItem* prev_item = last_item_.exchange(&immutable_item_); + prev_item->SetNext(&immutable_item_); + immutable_.store(true); + } + { + std::unique_lock lck(sort_thread_mutex_); + sort_thread_cv_.notify_one(); + } +} + +class HashLocklessRep : public MemTableRep { + public: + HashLocklessRep(const MemTableRep::KeyComparator& compare, + Allocator* allocator, size_t bucket_size, + uint32_t add_vector_limit_size); + + KeyHandle Allocate(const size_t len, char** buf) override; + + void Insert(KeyHandle handle) override; + + bool InsertKey(KeyHandle handle) override; + + void InsertWithHintConcurrently(KeyHandle handle, void** hint) override; + + bool InsertKeyWithHintConcurrently(KeyHandle handle, void** hint) override; + + void InsertConcurrently(KeyHandle handle) override; + + bool InsertKeyConcurrently(KeyHandle handle) override; + + void MarkReadOnly() override; + bool Contains(const char* key) const override; + + size_t ApproximateMemoryUsage() override; + + void Get(const LookupKey& k, void* callback_args, + bool (*callback_func)(void* arg, const char* entry)) override; + + ~HashLocklessRep() override {} + + MemTableRep::Iterator* GetIterator(Arena* arena = nullptr) override; + + private: + size_t bucket_size_; + + std::unique_ptr buckets_; + + const MemTableRep::KeyComparator& compare_; + + std::shared_ptr sort_vectors_cont_; + + size_t GetHash(const char* key) const { + Slice slice = UserKey(key); + return MurmurHash(slice.data(), static_cast(slice.size()), 0) % + bucket_size_; + } + bool InsertWithCheck(KeyHandle handle); + + BucketHeader* GetBucket(size_t i) const { return &buckets_.get()[i]; } + + BucketHeader* GetBucket(const char* key) const { + return GetBucket(GetHash(key)); + } + + class Iterator : public MemTableRep::Iterator { + public: + // Initialize an iterator over the specified list. + // The returned iterator is not valid. + explicit Iterator(std::shared_ptr sort_vectors_cont, + const MemTableRep::KeyComparator& comparator) + : sort_vectors_cont_(sort_vectors_cont), + iter_heap_info_(comparator), + up_iter_direction_(true) { + IterSortSettingInfo sort_set_info; + sort_vectors_cont_->InitIterator(&sort_set_info); + iter_anchor_ = sort_set_info.iter_anchor_; + iter_sort_items_num_ = sort_set_info.iter_size_; + // allocate iter_heap_info + iter_heap_info_.Init(iter_sort_items_num_); + } + + ~Iterator() override {} + + // Returns true if the iterator is positioned at a valid node. + bool Valid() const override { return iter_heap_info_.Valid(); } + + // Returns the key at the current position. + const char* key() const override { return iter_heap_info_.Key(); } + + void InternalSeek(const char* seek_key, SeekOption seek_op) { + return sort_vectors_cont_->SeekIter(iter_anchor_, &iter_heap_info_, + seek_key, seek_op); + } + + void Reset(bool up_iter_direction) { + up_iter_direction_ = up_iter_direction; + iter_heap_info_.Reset(up_iter_direction_); + } + + void ReverseDirection(bool up_iter_direction) { + char* seek_key = iter_heap_info_.Key(); + Reset(up_iter_direction); + InternalSeek(seek_key, (up_iter_direction) ? SeekOption::kSwitchForward + : SeekOption::kSwitchBackward); + } + + void Advance() { + SortHeapItem* sort_item = iter_heap_info_.Get(); + bool valid = (up_iter_direction_) ? sort_vectors_cont_->Next(sort_item) + : sort_vectors_cont_->Prev(sort_item); + iter_heap_info_.Update(valid, sort_item); + } + // Advances to the next position. + void Next() override { + if (!up_iter_direction_) { + ReverseDirection(true); + } else { + Advance(); + } + } + + // Advances to the previous position. + void Prev() override { + if (up_iter_direction_) { + ReverseDirection(false); + } else { + Advance(); + } + } + + // Advance to the first entry with a key >= target + void Seek(const Slice& user_key, const char* memtable_key) override { + Reset(true); + InternalSeek(memtable_key ? memtable_key : EncodeKey(&tmp_, user_key), + SeekOption::kInitForward); + } + + // Retreat to the last entry with a key <= target + void SeekForPrev(const Slice& user_key, const char* memtable_key) override { + Reset(false); + InternalSeek(memtable_key ? memtable_key : EncodeKey(&tmp_, user_key), + SeekOption::kInitBackward); + } + + // Position at the first entry in list. + // Final state of iterator is Valid() if list is not empty. + void SeekToFirst() override { + Reset(true); + InternalSeek(nullptr, SeekOption::kInitForward); + } + + // Position at the last entry in list. + // Final state of iterator is Valid() if list is not empty. + void SeekToLast() override { + Reset(false); + InternalSeek(nullptr, SeekOption::kInitBackward); + } + + private: + std::shared_ptr sort_vectors_cont_; + std::list>::iterator iter_anchor_; + uint32_t iter_sort_items_num_; + IterHeapInfo iter_heap_info_; + bool up_iter_direction_; + + protected: + std::string tmp_; // For passing to EncodeKey + }; + + class IteratorEmpty : public MemTableRep::Iterator { + public: + IteratorEmpty() {} + + ~IteratorEmpty() override {} + + // Returns true if the iterator is positioned at a valid node. + bool Valid() const override { return false; } + + // Returns the key at the current position. + const char* key() const override { return nullptr; } + + // Advances to the next position. + void Next() override { return; } + + // Advances to the previous position. + void Prev() override { return; } + + // Advance to the first entry with a key >= target + void Seek(const Slice& /* internal_key */, + const char* /* memtable_key */) override { + return; + } + + // Retreat to the last entry with a key <= target + void SeekForPrev(const Slice& /* internal_key */, + const char* /* memtable_key */) override { + return; + } + + // Position at the first entry in list. + // Final state of iterator is Valid() if list is not empty. + void SeekToFirst() override { return; } + + // Position at the last entry in list. + // Final state of iterator is Valid() if list is not empty. + void SeekToLast() override { return; } + }; +}; + +HashLocklessRep::HashLocklessRep(const MemTableRep::KeyComparator& compare, + Allocator* allocator, size_t bucket_size, + uint32_t add_list_limit_size) + : MemTableRep(allocator), bucket_size_(bucket_size), compare_(compare) { + sort_vectors_cont_ = + std::make_shared(compare, add_list_limit_size); + buckets_.reset(new BucketHeader[bucket_size]); +} + +KeyHandle HashLocklessRep::Allocate(const size_t len, char** buf) { + char* mem = allocator_->AllocateAligned(sizeof(SortItem) + len); + SortItem* sort_item = new (mem) SortItem(); + *buf = sort_item->key_; + return static_cast(sort_item); +} + +void HashLocklessRep::Insert(KeyHandle handle) { + SortItem* sort_item = static_cast(handle); + BucketHeader* bucket = GetBucket(sort_item->key_); + bucket->Add(sort_item, this->compare_, false); + // insert to later sorter list + sort_vectors_cont_->Insert(sort_item); + + return; +} + +bool HashLocklessRep::InsertWithCheck(KeyHandle handle) { + SortItem* sort_item = static_cast(handle); + BucketHeader* bucket = GetBucket(sort_item->key_); + + if (!bucket->Add(sort_item, this->compare_, true)) { + return false; + } + + // insert to later sorter list + sort_vectors_cont_->Insert(sort_item); + + return true; +} + +bool HashLocklessRep::InsertKey(KeyHandle handle) { + return InsertWithCheck(handle); +} + +void HashLocklessRep::InsertWithHintConcurrently(KeyHandle handle, void**) { + Insert(handle); +} + +bool HashLocklessRep::InsertKeyWithHintConcurrently(KeyHandle handle, void**) { + return InsertWithCheck(handle); +} + +void HashLocklessRep::InsertConcurrently(KeyHandle handle) { Insert(handle); } + +bool HashLocklessRep::InsertKeyConcurrently(KeyHandle handle) { + return InsertWithCheck(handle); +} + +bool HashLocklessRep::Contains(const char* key) const { + BucketHeader* bucket = GetBucket(key); + + return bucket->Contains(this->compare_, key); +} + +void HashLocklessRep::MarkReadOnly() { sort_vectors_cont_->Immutable(); } + +size_t HashLocklessRep::ApproximateMemoryUsage() { + // Memory is always allocated from the allocator. + return 0; +} + +void HashLocklessRep::Get(const LookupKey& k, void* callback_args, + bool (*callback_func)(void* arg, const char* entry)) { + BucketHeader* bucket = GetBucket(k.memtable_key().data()); + MutexLock l(&bucket->mutex_); + + for (auto iter = bucket->items_.begin(); iter != bucket->items_.end(); + ++iter) { + if (!callback_func(callback_args, (*iter)->key_)) { + break; + } + } +} + +MemTableRep::Iterator* HashLocklessRep::GetIterator(Arena* arena) { + bool empty_iter = (sort_vectors_cont_->items_count_.load() == 0); + if (!sort_vectors_cont_->immutable_.load()) empty_iter = true; + if (arena != nullptr) { + void* mem; + if (empty_iter) { + mem = arena->AllocateAligned(sizeof(IteratorEmpty)); + return new (mem) IteratorEmpty(); + } else { + mem = arena->AllocateAligned(sizeof(Iterator)); + return new (mem) Iterator(sort_vectors_cont_, compare_); + } + } + if (empty_iter) { + return new IteratorEmpty(); + } else { + return new Iterator(sort_vectors_cont_, compare_); + } +} + +static std::unordered_map hash_spd_factory_info = { +#ifndef ROCKSDB_LITE + {"bucket_count", + {0, OptionType::kSizeT, OptionVerificationType::kNormal, + OptionTypeFlags::kDontSerialize /*Since it is part of the ID*/}}, +#endif +}; +} // namespace + +HashSpdRepFactory::HashSpdRepFactory(size_t bucket_count) + : bucket_count_(bucket_count) { + RegisterOptions("", &bucket_count_, &hash_spd_factory_info); +} + +MemTableRep* HashSpdRepFactory::CreateMemTableRep( + const MemTableRep::KeyComparator& compare, Allocator* allocator, + const SliceTransform* /*transform*/, Logger* logger) { + return new HashLocklessRep(compare, allocator, bucket_count_, 10000); +} + +} // namespace ROCKSDB_NAMESPACE + +#endif // ROCKSDB_LITE diff --git a/plugin/speedb/memtable/hash_spd_rep.h b/plugin/speedb/memtable/hash_spd_rep.h new file mode 100644 index 0000000000..740d8d628b --- /dev/null +++ b/plugin/speedb/memtable/hash_spd_rep.h @@ -0,0 +1,45 @@ +// Copyright (C) 2022 Speedb Ltd. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#ifndef ROCKSDB_LITE + +#include "rocksdb/memtablerep.h" + +namespace ROCKSDB_NAMESPACE { + +class HashSpdRepFactory : public MemTableRepFactory { + public: + explicit HashSpdRepFactory(size_t bucket_count = 1000000); + ~HashSpdRepFactory() override {} + + using MemTableRepFactory::CreateMemTableRep; + MemTableRep* CreateMemTableRep(const MemTableRep::KeyComparator& compare, + Allocator* allocator, + const SliceTransform* transform, + Logger* logger) override; + bool IsInsertConcurrentlySupported() const override { return true; } + bool CanHandleDuplicatedKey() const override { return true; } + + static const char* kClassName() { return "speedb.HashSpdRepFactory"; } + const char* Name() const override { return kClassName(); } + + private: + size_t bucket_count_; +}; + +} // namespace ROCKSDB_NAMESPACE + +#endif // ROCKSDB_LITE diff --git a/plugin/speedb/speedb.mk b/plugin/speedb/speedb.mk new file mode 100644 index 0000000000..ed5b64a757 --- /dev/null +++ b/plugin/speedb/speedb.mk @@ -0,0 +1,20 @@ +# Copyright (C) 2022 Speedb Ltd. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +speedb_SOURCES = \ + speedb_registry.cc \ + memtable/hash_spd_rep.cc \ + + +speedb_FUNC = register_SpeedbPlugins diff --git a/plugin/speedb/speedb_registry.cc b/plugin/speedb/speedb_registry.cc new file mode 100644 index 0000000000..9742bc5f7a --- /dev/null +++ b/plugin/speedb/speedb_registry.cc @@ -0,0 +1,44 @@ +// Copyright (C) 2022 Speedb Ltd. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "plugin/speedb/speedb_registry.h" + +#include "plugin/speedb/memtable/hash_spd_rep.h" +#include "rocksdb/utilities/object_registry.h" +#include "util/string_util.h" + +namespace ROCKSDB_NAMESPACE { + +#ifndef ROCKSDB_LITE +int register_SpeedbPlugins(ObjectLibrary& library, const std::string&) { + library.AddFactory( + ObjectLibrary::PatternEntry(HashSpdRepFactory::kClassName(), true) + .AddNumber(":"), + [](const std::string& uri, std::unique_ptr* guard, + std::string* /*errmsg*/) { + auto colon = uri.find(":"); + if (colon != std::string::npos) { + size_t buckets = ParseSizeT(uri.substr(colon + 1)); + guard->reset(new HashSpdRepFactory(buckets)); + } else { + guard->reset(new HashSpdRepFactory()); + } + return guard->get(); + }); + size_t num_types; + return static_cast(library.GetFactoryCount(&num_types)); +} +#endif // ROCKSDB_LITE + +} // namespace ROCKSDB_NAMESPACE diff --git a/plugin/speedb/speedb_registry.h b/plugin/speedb/speedb_registry.h new file mode 100644 index 0000000000..e5419d2b77 --- /dev/null +++ b/plugin/speedb/speedb_registry.h @@ -0,0 +1,29 @@ +// Copyright (C) 2022 Speedb Ltd. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include + +#include "rocksdb/rocksdb_namespace.h" + +namespace ROCKSDB_NAMESPACE { +// Forward Declarations +class ObjectLibrary; + +extern "C" { +int register_SpeedbPlugins(ROCKSDB_NAMESPACE::ObjectLibrary& library, + const std::string&); +} // extern "C" +} // namespace ROCKSDB_NAMESPACE From 5a2dd3f14cbbfbd0b24115a9da75b3c0d5bec89b Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Sun, 31 Jul 2022 13:17:05 +0300 Subject: [PATCH 164/226] build: always add the Speedb plugin to the build (#87) This allows us to make sure that our additions are included in the build even if the user forgot to set `ROCKSDB_PLUGINS` explicitly. --- CMakeLists.txt | 11 ++++++++--- Makefile | 4 ++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 10b190da92..e9fcbdb77d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -907,12 +907,17 @@ list(APPEND SOURCES utilities/transactions/lock/range/range_tree/lib/util/dbt.cc utilities/transactions/lock/range/range_tree/lib/util/memarena.cc) +if (ROCKSDB_PLUGINS) + separate_arguments(ROCKSDB_PLUGINS) +endif() +if (NOT ROCKSDB_PLUGINS OR NOT "speedb" IN_LIST ROCKSDB_PLUGINS) + list(APPEND ROCKSDB_PLUGINS speedb) +endif() set(ROCKSDB_PLUGIN_EXTERNS "") set(ROCKSDB_PLUGIN_BUILTINS "") message(STATUS "ROCKSDB_PLUGINS: ${ROCKSDB_PLUGINS}") -if ( ROCKSDB_PLUGINS ) - string(REPLACE " " ";" PLUGINS ${ROCKSDB_PLUGINS}) - foreach (plugin ${PLUGINS}) +if( ROCKSDB_PLUGINS ) + foreach (plugin ${ROCKSDB_PLUGINS}) set(plugin_root "plugin/${plugin}/") add_subdirectory(${plugin_root}) # Use get_directory_property() to avoid having to declare the variables diff --git a/Makefile b/Makefile index 1c3ebfa789..0b3e3e7bdd 100644 --- a/Makefile +++ b/Makefile @@ -230,6 +230,10 @@ dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; \ # this file is generated by the previous line to set build flags and sources include make_config.mk +ifeq ($(strip $(filter speedb,$(ROCKSDB_PLUGINS))),) +ROCKSDB_PLUGINS += speedb +endif + ROCKSDB_PLUGIN_MKS = $(foreach plugin, $(ROCKSDB_PLUGINS), plugin/$(plugin)/*.mk) include $(ROCKSDB_PLUGIN_MKS) ROCKSDB_PLUGIN_PROTO =ROCKSDB_NAMESPACE::ObjectLibrary\&, const std::string\& From 851704d9e71c954c995a3d20c1facb06fc68d74f Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Sun, 31 Jul 2022 13:38:56 +0300 Subject: [PATCH 165/226] crash_test: add the new memtable as a random choice (#89) Currently only the skip list memtable is being tested. Increase coverage by adding the new Speedb memtable as an option as well. For now we'll simply choose randomly between the two, without giving any one of them preference, but we may want to change that in the future. --- tools/db_crashtest.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index b3bda51e5c..b7f0b1e916 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -310,7 +310,7 @@ def random_distribution(cuts_count): "experimental_mempurge_threshold": lambda: 10.0*random.random(), "max_background_compactions": 1, "max_bytes_for_level_base": 67108864, - "memtablerep": "skip_list", + "memtablerep": lambda: random.choice(["skip_list", "speedb.HashSpdRepFactory"]), "target_file_size_base": 16777216, "target_file_size_multiplier": 1, "test_batches_snapshots": 0, @@ -537,8 +537,9 @@ def finalize_and_sanitize(src_params, counter): if dest_params.get("compression_type") != "zstd": dest_params["compression_zstd_max_train_bytes"] = 0 if dest_params.get("allow_concurrent_memtable_write", 1) == 1: - # TODO: yuval- add hash_spd memtable - dest_params["memtablerep"] = "skip_list" + dest_params["memtablerep"] = ( + random.choice(["skip_list", "speedb.HashSpdRepFactory"]), + ) if dest_params["mmap_read"] == 1: dest_params["use_direct_io_for_flush_and_compaction"] = 0 dest_params["use_direct_reads"] = 0 From 5d78425be8eaba12890b57cd6a2bcdcb9eb517f2 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Sun, 31 Jul 2022 18:16:11 +0300 Subject: [PATCH 166/226] spdb_memtable: fix an unused parameter issue (#91) A last minute change before merging #30 breaks builds that configure `-Werror=unused-parameter` (this is the default for some GCC versions with the `-Wextra` configuration). Fix it by not declaring the `logger` argument to the `CreateMemTableRep()` function. --- plugin/speedb/memtable/hash_spd_rep.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/speedb/memtable/hash_spd_rep.cc b/plugin/speedb/memtable/hash_spd_rep.cc index dab5884d28..f3f11d5ee5 100644 --- a/plugin/speedb/memtable/hash_spd_rep.cc +++ b/plugin/speedb/memtable/hash_spd_rep.cc @@ -981,7 +981,7 @@ HashSpdRepFactory::HashSpdRepFactory(size_t bucket_count) MemTableRep* HashSpdRepFactory::CreateMemTableRep( const MemTableRep::KeyComparator& compare, Allocator* allocator, - const SliceTransform* /*transform*/, Logger* logger) { + const SliceTransform* /*transform*/, Logger* /*logger*/) { return new HashLocklessRep(compare, allocator, bucket_count_, 10000); } From 1c7a33ae5ba2ce036696ba7d5baa4561bb59584a Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Mon, 1 Aug 2022 08:37:14 +0300 Subject: [PATCH 167/226] crash_test: fix incorrect passing of the memtablerep argument (#93) As part of #90, I accidentally added a comma at the end of the line when choosing the memtable reperesntation to use. This is a tuple construction syntax and was formatted as such by Black, but unfortunately missed by me and during review. Fix it by removing the comma so that the argument isn't passed to db_stress as a Python tuple. --- tools/db_crashtest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index b7f0b1e916..c530d69b91 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -537,8 +537,8 @@ def finalize_and_sanitize(src_params, counter): if dest_params.get("compression_type") != "zstd": dest_params["compression_zstd_max_train_bytes"] = 0 if dest_params.get("allow_concurrent_memtable_write", 1) == 1: - dest_params["memtablerep"] = ( - random.choice(["skip_list", "speedb.HashSpdRepFactory"]), + dest_params["memtablerep"] = random.choice( + ["skip_list", "speedb.HashSpdRepFactory"] ) if dest_params["mmap_read"] == 1: dest_params["use_direct_io_for_flush_and_compaction"] = 0 From 21c6bd57663f79aaca43d54048b27679628d329b Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Mon, 1 Aug 2022 21:24:24 +0300 Subject: [PATCH 168/226] crash_test: remove the hash-based memtable from crash test (#98) The test seems to fail for now, so in order to avoid headaches for devs working on `main`, let's not test the new memtable until the issues are fixed. This is not intended as a fix for #98, but rather as a temporary workaround to allow testing to continue, since no one is supposed to be using the new memtable yet. --- tools/db_crashtest.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/db_crashtest.py b/tools/db_crashtest.py index c530d69b91..b3bda51e5c 100644 --- a/tools/db_crashtest.py +++ b/tools/db_crashtest.py @@ -310,7 +310,7 @@ def random_distribution(cuts_count): "experimental_mempurge_threshold": lambda: 10.0*random.random(), "max_background_compactions": 1, "max_bytes_for_level_base": 67108864, - "memtablerep": lambda: random.choice(["skip_list", "speedb.HashSpdRepFactory"]), + "memtablerep": "skip_list", "target_file_size_base": 16777216, "target_file_size_multiplier": 1, "test_batches_snapshots": 0, @@ -537,9 +537,8 @@ def finalize_and_sanitize(src_params, counter): if dest_params.get("compression_type") != "zstd": dest_params["compression_zstd_max_train_bytes"] = 0 if dest_params.get("allow_concurrent_memtable_write", 1) == 1: - dest_params["memtablerep"] = random.choice( - ["skip_list", "speedb.HashSpdRepFactory"] - ) + # TODO: yuval- add hash_spd memtable + dest_params["memtablerep"] = "skip_list" if dest_params["mmap_read"] == 1: dest_params["use_direct_io_for_flush_and_compaction"] = 0 dest_params["use_direct_reads"] = 0 From 8ca6147d78af56b5e908c8125f18f409a83a37bf Mon Sep 17 00:00:00 2001 From: Nathan Date: Mon, 1 Aug 2022 12:40:55 +0300 Subject: [PATCH 169/226] fixed tests not failing pipelines --- .github/workflows/qa-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/qa-tests.yml b/.github/workflows/qa-tests.yml index 034de18caf..beb139c746 100644 --- a/.github/workflows/qa-tests.yml +++ b/.github/workflows/qa-tests.yml @@ -54,9 +54,9 @@ jobs: echo $GITHUB_REF_NAME if echo $GITHUB_REF_NAME | grep -Eq 'release/'; then echo long - make clean && ${{ matrix.long_test }} && echo $? || echo $? + make clean && ${{ matrix.long_test }} else echo short - make clean && ${{ matrix.short_test }} && echo $? || echo $? + make clean && ${{ matrix.short_test }} fi df -H From 993d864ac5db8d86add7f595dbb31fa9a56637a6 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Wed, 3 Aug 2022 15:45:08 +0300 Subject: [PATCH 170/226] Devops ci/add build tools (#104) ci: add artifact release pipeline and Dockerfile --- .github/workflows/artifact-release.yml | 73 ++++++++++++++++++++++++++ build_tools/Dockerfile | 32 +++++++++++ 2 files changed, 105 insertions(+) create mode 100644 .github/workflows/artifact-release.yml create mode 100644 build_tools/Dockerfile diff --git a/.github/workflows/artifact-release.yml b/.github/workflows/artifact-release.yml new file mode 100644 index 0000000000..e0a3a1b91b --- /dev/null +++ b/.github/workflows/artifact-release.yml @@ -0,0 +1,73 @@ +name: Create release artifact + +on: + workflow_dispatch: + +jobs: + + cleanup: + runs-on: [self-hosted, linux, x64, myrunner] + container: + image: ubuntu:latest + steps: + - name: Cleaning up the $GITHUB_WORKSPACE as root from a Docker image + run: find /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}/. -name . -o -prune -exec rm -rf -- {} + || true + + build: + needs: cleanup + runs-on: [self-hosted, linux, x64, myrunner] + + steps: + + - uses: actions/checkout@v3 + + - name: install dependencies + run: | + echo ~ && sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install -y docker-ce docker-ce-cli containerd.io unzip curl zip unzip + + - name: Configure AWS credentials from Test account + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-2 + + - name: docker run + run: | + export BUILD_OUTPUT_DIR=~/build + echo $BUILD_OUTPUT_DIR + rm -rf $BUILD_OUTPUT_DIR + mkdir -p $BUILD_OUTPUT_DIR + docker build -f ./build_tools/Dockerfile -t spdb-build . + docker run --rm -v $(readlink -f ${BUILD_OUTPUT_DIR}):/out -v $GITHUB_WORKSPACE:/speedb -e GITHUB_WORKSPACE=$GITHUB_WORKSPACE spdb-build + ls -alFh $BUILD_OUTPUT_DIR + zip --junk-paths "Release-$GITHUB_REF_NAME.zip" $BUILD_OUTPUT_DIR/* + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref_name }} + draft: false + prerelease: false + - name: Upload Release Asset + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./Release-${{ github.ref_name}}.zip + asset_name: Release-${{ github.ref_name}}.zip + asset_content_type: application/zip + + - name: Upload artifacts to S3 + run: | + export BUILD_OUTPUT_DIR=~/build + echo $BUILD_OUTPUT_DIR + aws s3 cp $BUILD_OUTPUT_DIR s3://spdb-github-artifacts/"release-$GITHUB_REF_NAME" --recursive + aws s3 ls s3://spdb-github-artifacts/ + rm -rf $BUILD_OUTPUT_DIR diff --git a/build_tools/Dockerfile b/build_tools/Dockerfile new file mode 100644 index 0000000000..02acae2fa4 --- /dev/null +++ b/build_tools/Dockerfile @@ -0,0 +1,32 @@ +FROM docker.io/centos:7.9.2009 + +# Install required libraries and utilities for building Speedb +RUN yum install -y centos-release-scl epel-release +RUN yum install -y make devtoolset-9-gcc-c++ \ + coreutils wget which git python3 openssl-devel \ + libzstd-devel lz4-devel snappy-devel zlib-devel \ + java-1.8.0-openjdk-devel +ENV PATH="/opt/rh/devtoolset-9/root/usr/bin:${PATH}" + +# Install CMake +RUN wget https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1.tar.gz +RUN tar xf cmake-3.20.1.tar.gz +RUN cd cmake-3.20.1 && ./bootstrap && make -j $(nproc) && make install && cd .. && rm -rf cmake-3.20.1* + +RUN echo -e "#!/bin/sh\n\ +set -xeo pipefail\n\ +java -version\n\ +cd speedb\n\ +rm -rf build && mkdir build && cd build\n\ +cmake .. -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DWITH_GFLAGS=0 -DWITH_SNAPPY=1 -DWITH_LZ4=1 -DWITH_ZLIB=1 -DWITH_ZSTD=1\n\ +make -j$(nproc) rocksdb rocksdb-shared\n\ +cp librocksdb.{a,so} /out\n\ +cd .. && rm -rf build\n\ +make clean && LIB_MODE=static DEBUG_LEVEL=0 PORTABLE=1 JAVA_HOME=/usr/lib/jvm/java-openjdk make -j$(nproc) rocksdbjavastatic\n\ +cp java/target/rocksdbjni-*.jar /out" > /usr/bin/build-speedb.sh + +RUN chmod +x /usr/bin/build-speedb.sh +ENTRYPOINT ["/usr/bin/build-speedb.sh"] + +# Declare volumes +VOLUME ["/speedb", "/out"] From 299d7e6aa3df76fef5f197b8dbcfebf19012581a Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 3 Aug 2022 18:16:21 +0300 Subject: [PATCH 171/226] ci: add a /var/tmp volume to the QA tests to fix tests failing (#107) The tests that break are `env_test` and `db_test`. `env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs, which doesn't support it. We need to use a host filesystem for this because only certain filesytsems support this ioctl. For this we add a host bind volume to /var/tmp which is what the code tries to use. `db_test` fails for an unknown reason and only in buffered I/O mode, which might indicate a bug in overlayfs. This is caused by a setting of the `TMPD` environment variable to the overlayfs mount. Add a mount to the host's /tmp directory and set `TMPD` to it instead (we can't use the default of /dev/shm because there's not enough memory available on the runner machines). While at it, clean up the workflow definition a bit. --- .github/workflows/qa-tests.yml | 58 +++++++++++++++------------------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/.github/workflows/qa-tests.yml b/.github/workflows/qa-tests.yml index beb139c746..6adb077794 100644 --- a/.github/workflows/qa-tests.yml +++ b/.github/workflows/qa-tests.yml @@ -5,58 +5,52 @@ on: workflow_call: env: + GTEST_COLOR: 1 GTEST_THROW_ON_FAILURE: 0 - GTEST_OUTPUT: \"xml:/tmp/test-results/\" SKIP_FORMAT_BUCK_CHECKS: 1 - GTEST_COLOR: 1 - CTEST_OUTPUT_ON_FAILURE: 1 - CTEST_TEST_TIMEOUT: 300 - ZLIB_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zlib" - BZIP2_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/bzip2" - SNAPPY_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/snappy" - LZ4_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/lz4" - ZSTD_DOWNLOAD_BASE: "https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zstd" jobs: test: runs-on: [self-hosted, ubuntu, asrunner] container: image: ubuntu:18.04 + volumes: + - /var/tmp:/var/tmp # Needed for env_test's IoctlFriendlyTmpdir + - /tmp:/tmp # Needed for running tests on non-overlayfs (can't use /dev/shm because there's not enough RAM on the runner) strategy: matrix: include: - - name: unit-test - short_test: TMPD=\home\ubuntu make -j2 check - long_test: TMPD=\home\ubuntu make -j2 check + - name: Unit tests + short_test: TMPD="$(mktemp -d /tmp/speedb.XXXX)" make -j$(nproc) check + long_test: TMPD="$(mktemp -d /tmp/speedb.XXXX)" make -j$(nproc) check - name: black-box - short_test: CRASH_TEST_EXT_ARGS="--duration=500" make -j2 blackbox_asan_crash_test - long_test: CRASH_TEST_EXT_ARGS="--duration=10000" make -j2 blackbox_asan_crash_test + short_test: CRASH_TEST_EXT_ARGS="--duration=500" make -j$(nproc) blackbox_asan_crash_test + long_test: CRASH_TEST_EXT_ARGS="--duration=10000" make -j$(nproc) blackbox_asan_crash_test - name: white-box - short_test: CRASH_TEST_EXT_ARGS="--duration=500" make -j2 whitebox_asan_crash_test - long_test: CRASH_TEST_EXT_ARGS="--duration=10000" make -j2 whitebox_asan_crash_test + short_test: CRASH_TEST_EXT_ARGS="--duration=500" make -j$(nproc) whitebox_asan_crash_test + long_test: CRASH_TEST_EXT_ARGS="--duration=10000" make -j$(nproc) whitebox_asan_crash_test steps: - name: Network hotfix run: echo "nameserver 8.8.8.8" > /etc/resolv.conf + - name: Pre + run: | + apt update -y + apt install -y build-essential clang-format parallel libgflags-dev liblz4-dev libsnappy-dev libzstd-dev python3 python3-pip curl + - name: Checkout uses: actions/checkout@v3 - - name: Pre - run: | - df -H - apt-get update -y && apt-get install -y sudo default-jre default-jdk clang-format parallel moreutils g++ libgflags-dev software-properties-common golang-go gccgo binutils liblz4-dev libsnappy1v5 mlocate sysstat nvme-cli python3 python3-pip nodejs npm liblz4-dev libsnappy-dev libzstd-dev gdb dstat unzip apt-transport-https ca-certificates curl gnupg lsb-release || echo "" - sudo mv /usr/bin/parallel /usr/bin/gnu_parallel - sudo rm -rf /etc/parallel/config || echo "" - - name: ${{ matrix.name }} run: | - echo $GITHUB_REF_NAME - if echo $GITHUB_REF_NAME | grep -Eq 'release/'; then - echo long - make clean && ${{ matrix.long_test }} - else - echo short - make clean && ${{ matrix.short_test }} - fi - df -H + case "$GITHUB_REF_NAME" in + release/*) + echo "Running long test for release, $(nproc) jobs" + make clean && ${{ matrix.long_test }} + ;; + *) + echo "Running short test, $(nproc) jobs" + make clean && ${{ matrix.short_test }} + ;; + esac From 4866126ace1452906f5e20233797781cbe1534e4 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Thu, 4 Aug 2022 10:41:36 +0300 Subject: [PATCH 172/226] new release line network hotfix (#109) * changed order of network hofix --- .github/workflows/new_release_line.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/new_release_line.yml b/.github/workflows/new_release_line.yml index 5571cb31f7..2fa674cfea 100644 --- a/.github/workflows/new_release_line.yml +++ b/.github/workflows/new_release_line.yml @@ -17,7 +17,10 @@ jobs: steps: - name: pre-run - run: apk update && apk add git + run: | + echo "nameserver 8.8.8.8" > /etc/resolv.conf + apk update && apk add git + - uses: actions/checkout@v3 - name: Calculate tag From 3fbf4eaa5fe9d2a9e840319bdd0eaf10fc981507 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Thu, 4 Aug 2022 11:03:18 +0300 Subject: [PATCH 173/226] release: publish version 2.0.0 --- speedb/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/speedb/version.h b/speedb/version.h index d3e569b726..3b2b2aebb1 100644 --- a/speedb/version.h +++ b/speedb/version.h @@ -1,7 +1,7 @@ #pragma once -#define SPEEDB_MAJOR 1 -#define SPEEDB_MINOR 5 +#define SPEEDB_MAJOR 2 +#define SPEEDB_MINOR 0 #define SPEEDB_PATCH 0 namespace ROCKSDB_NAMESPACE { From d2c422aa33ab073b9cbc2e2f141674bbc62bb60c Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Wed, 3 Aug 2022 11:57:10 +0300 Subject: [PATCH 174/226] Create README.md --- README.md | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 09d7acc56c..7a1b52f98d 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,29 @@ -# Speedb: A drop in replacement embedded solution for RocksDB +# Speedb -## Checking out the source +[![GitHub license](https://img.shields.io/github/license/speedb-io/speedb)](https://github.com/speedb-io/speedb) +![GitHub contributors](https://img.shields.io/github/contributors/speedb-io/speedb) - git clone https://github.com/speedb-io/speedb.git -## Dynamically linking Speedb -If speedb is in your default library path: +Speeb is a library that provides persistent key-value stores. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function. +It is maintained by Speedb and is forked from Rocksdb, developed by Facebook. -In your `CMakeLists.txt` add: +## Usage +* If speedb is in your default library path: - target_link_libraries(${PROJECT_NAME} speedb) -where `PROJECT_NAME` is the name of your target application which uses speedb + In your `CMakeLists.txt` add: + ``` + target_link_libraries(${PROJECT_NAME} speedb) + ``` + where `PROJECT_NAME` is the name of your target application which uses speedb -Otherwise, you have to include the path to the folder the library is in like so: +* Otherwise, you have to include the path to the folder the library is in like so: - target_link_libraries(${PROJECT_NAME} /path/to/speedb/library/folder) + ``` + target_link_libraries(${PROJECT_NAME} /path/to/speedb/library/folder) + ``` -## Usage -Usage of the library in your code is the same, regardless of whether you statically linked the library or dynamically linked it, and examples can be found under the [examples](examples) directory. + +Usage of the library in your code is the same regardless of whether you statically linked the library or dynamically linked it, and examples can be found under the [examples](examples) directory. The public interface is in [include](include/rocksdb). Callers should not include or rely on the details of any other header files in this package. Those internal APIs may be changed without warning. ## Build dependencies @@ -69,7 +75,9 @@ for example, `db_blob_basic_test`: The test will generate a random DB at the specified path. This is also where speedb will store the LOG files. ## Contributing code -`TODO:` This section should point the reader to a dedicated file explaining how to contribute +See the [contributing guide](CONTRIBUTING.md). + ## License -Speedb is licensed under Apache 2.0 \ No newline at end of file +Speedb is open-source and licensed under the [Apache 2.0 License](LICENSE.Apache). + From 0a7b4eb48581c8fb5a16103306b42b2aef800da5 Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Tue, 9 Aug 2022 10:21:56 +0300 Subject: [PATCH 175/226] Update README.md Removing license sticker until licensing is fully Apache 2.0 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7a1b52f98d..b0995062f3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # Speedb -[![GitHub license](https://img.shields.io/github/license/speedb-io/speedb)](https://github.com/speedb-io/speedb) ![GitHub contributors](https://img.shields.io/github/contributors/speedb-io/speedb) From f208447f0c03cb212c4abe9280cc10e2f054c359 Mon Sep 17 00:00:00 2001 From: isaac-io <81761131+isaac-io@users.noreply.github.com> Date: Tue, 16 Aug 2022 13:46:34 +0300 Subject: [PATCH 176/226] #53: Update contributing guide (#59) * Update CONTRIBUTING.md * docs: initial contribution guide update This includes changes to building instructions, in order to reflect our level of commitment to platform support and to change references to RocksDB with Speedb. * moar updates * Update README.md Co-authored-by: Arthur Berezin <2787296+rtpro@users.noreply.github.com> --- CONTRIBUTING.md | 490 ++++++++++++++++++++++++++++++++++++++++++++++-- INSTALL.md | 265 ++++++++++---------------- README.md | 51 +++-- 3 files changed, 600 insertions(+), 206 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 190100b429..f541d146d1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,17 +1,483 @@ -# Contributing to RocksDB +# Contributing -## Code of Conduct -The code of conduct is described in [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) + -## Contributor License Agreement ("CLA") + -In order to accept your pull request, we need you to submit a CLA. You -only need to do this once, so if you've done this for another Facebook -open source project, you're good to go. If you are submitting a pull -request for the first time, just let us know that you have completed -the CLA and we can cross-check with your GitHub username. +## Table of contents -Complete your CLA here: +- [Overview](#overview) +- [Ways to contribute](#ways-to-contribute) + - [Help document Speedb](#help-document-speedb) + - [Help address bugs](#help-address-bugs) + - [Help contribute ideas](#help-contribute-ideas) + - [Help land changes](#help-land-changes) +- [How to become a contributor](#how-to-become-a-contributor) + - [Contribution guidelines and standards](#contribution-guidelines-and-standards) +- [Style](#style) + - [Source code](#source-code) + - [Markdown files](#markdown-files) +- [License](#license) + - [Source files](#source-files-1) + - [Markdown](#markdown) +- [Contribution workflow](#contribution-workflow) + - [Fork and build](#fork-and-build) + - [Checkout a pull requuest](#checkout-a-pull-request) + - [Make your changes](#make-your-changes) + - [Update HISTORY.md](#update-HISTORYmd) + - [Add a test](#add-a-test) + - [Run the tests](#run-the-tests) + - [C++ unit tests](#c-unit-tests) + - [Debugging single unit test failures](#debugging-single-unit-test-failures) + - [Java unit tests](#java-unit-tests) + - [Additional build flavors](#additional-build-flavors) + - [Crash tests](#crash-tests) + - [Performance tests](#performance-tests) + - [Commit changes](#commit-changes) + - [Create a pull request](#create-a-pull-request) + - [Submit a pull request](#submit-a-pull-request) -If you prefer to sign a paper copy, we can send you a PDF. Send us an -e-mail or create a new github issue to request the CLA in PDF format. + + +## Overview + +Thank you for your interest in contributing to Speedb! There are many ways to +contribute, and we appreciate all of them. If you have questions, please feel +free to ask on [GitHub](https://github.com/speedb-io/speedb/discussions). + +Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md) to keep our +community welcoming, helpful, and respectable. + +## Ways to contribute + +There are several ways to contribure to Speedb, the most obvious of which is by +contributing code changes, but it's not the only one. + +### Help document Speedb + +We strive to provide an extensive and up to date documentation of Speedb, so if +you find an area where the documentation is lacking, we would love to have you +contribute changes to address that. + +### Help address bugs + +We'll inevitably have bugs, or other kinds of issues. Helping us by reporting +such issues with detailed information (ideally with a test case attached), or +even simply analyzing and reproducing an existing issue, is a great way to get +involved. We track bugs and other kinds of issues using +[GitHub issues](https://github.com/speedb-io/speedb/issues). + +Please go over existing issues before opening a new one to avoid duplicates, and +please follow the relevant template when opening new issues. + +### Help contribute ideas + +If you have an idea for Speedb, we encourage you to +[discuss](https://github.com/speedb-io/speedb/discussions) it with the +community, and potentially prepare a proposal for it and submit it as a feature +request using the +[feature request template](https://github.com/speedb-io/speedb/issues/new?assignees=&labels=&template=feature_request.md&title=). + +If you do start working on a proposal, keep in mind that this requires a time +investment to discuss the idea with the community, get it reviewed, and +eventually implemented. We encourage discussing the idea early, before even +writing a proposal. + +### Help land changes + +If you find a feature request that you'd like to get into Speedb and there's a +pull request open for it, you can help by testing it and providing feedback. +When giving feedback, please keep comments positive and constructive. + +## How to become a contributor + +### Contribution guidelines and standards + +All documents and pull requests must be consistent with the guidelines and +follow the Speedb documentation and coding styles. + +- For **both** documentation and code: + + - When the Speedb team accepts new documentation or features, we take on + the maintenance burden. This means we'll weigh the benefit of each + contribution against the cost of maintaining it. + - The appropriate [style](#style) is applied. + - The [license](#license) is present in all contributions. + - Code review is used to improve the correctness, clarity, and consistency + of all contributions. + +- For documentation: + + - All documentation is written for clarity and readability. Beyond fixing + spelling and grammar, this also means content is worded to be accessible + to a broad audience. + - Typos or other minor fixes that don't change the meaning of a document + do not need formal review, and are often handled directly as a pull + request. + +- For code: + + - New features and substantive changes to Speedb need to go through a + formal feature request process. Pull requests are only sent after a + proposal has been discussed, submitted, and reviewed. + - Bug fixes and mechanical improvements don't need this. + - All new features and bug fixes include unit tests, as they help to (a) + document and validate concrete usage of a feature and its edge cases, + and (b) guard against future breaking changes to lower the maintenance + cost. + - Unit tests must pass with the changes. + - If some tests fail for unrelated reasons, we wait until they're fixed. + It helps to contribute a fix! + - Code changes should be made with API compatibility and evolvability in + mind. + +## Style + +### Source code + +Speedb follows the +[Google C++ Style](https://google.github.io/styleguide/cppguide.html). + +For formatting, we limit each line to 80 characters. Most formatting can be done +automatically by running + +``` +build_tools/format-diff.sh +``` + +or simply `make format` if you use GNU make. If you lack any of the dependencies +to run it, the script will print out instructions for you to install them. + +### Markdown files + +Markdown files should use [Prettier](https://prettier.io/) for formatting. + +## License + +A license is required at the top of all documents and files. + +### Source files + +Every new source file should have the following header at the top: + +``` +Copyright (C) Speedb Ltd. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` + +Replace `` in the copyright notice above with the current year. + +### Markdown + +Markdown files should have at the top: + +``` +# DOC TITLE + + +``` + +For example, see the top of +[this file](https://github.com/speedb-io/speedb/raw/main/CONTRIBUTING.md)'s raw +content. + +## Contribution workflow + +As most open-source projects in github, Speedb contributors work on their fork, +and send pull requests to Speedb’s repo. After a reviewer approves the pull +request, a Speedb team member will merge it. + +### Fork and build + +[Fork](https://github.com/speedb-io/speedb/fork) the Speedb repository to your +own account and clone the resulting repository to your machine. + +Refer to the [README](README.me) and [INSTALL](INSTALL.md) documents for +information about how to build Speedb locally. + +### Checkout a pull request + +If you'd like to contribute by testing a pull request and providing feedback, +this section is for you. Otherwise, if you'd like to contribute by making +changes (to code or documentation), skip this section and read the next one +instead. + +Every pull request has its own number. This number is visible both in the URL +of a pull request page as well as in the title of the pull request page itself +(in the form #123, where 123 is the PR number). Follow +[this guide](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally) +in order to checkout the pull request locally (if you're using GitHub CLI, be +sure to choose the GitHub CLI option rather than Web Browser on the guide page). +After you have the pull request changes checked out locally, you can move on to +testing the changes by using the information in the "Run the tests" section +below. + +### Make your changes + +This is where you update the documentation, fix a bug, test another +contributor's fix, or add a feature. Make sure your changes adhere to the +guidelines. + +If you add a new source file, be sure to add it to the `LIB_SOURCES` variable in +[`src.mk`](src.mk) (note the backslashes at the end of each line) as well as to +the `SOURCES` variable in [`CMakeLists.txt`](CMakeLists.txt). + +#### Update HISTORY.md + +For code-related changes, add a short description of your change to the +[HISTORY](HISTORY.md) document, especially if it's a bug fix, public API change +or an awesome new feature. + +#### Add a test + +If you make a code-related change, be sure to add a unit test. Speedb uses +[GTest](https://github.com/google/googletest) for the C++ unit tests and +[JUnit](https://junit.org/) for the Java unit tests. + +For the C++ unit test, prefer adding a test to an existing unit tests suite (in +the files ending with `_test.cc`) in order to keep build and test time at bay. +However, if this is a test for a new feature and it doesn't belong in any of the +existing test suites, you may add a new file. Be sure to update the +`TEST_MAIN_SOURCES` variable in [`src.mk`](src.mk) (note the backslashes at the +end of each line) as well as the `TESTS` variable in +[`CMakeLists.txt`](CMakeLists.txt). + +### Run the tests + +This is only needed for code-related changes, so if you only made changes to +documentation you can safely skip this section. + +#### C++ unit tests + +You can run the C++ unit tests using the Makefile as explained below, or, if +you're using CMake, using `ctest`. The Makefile has support for running the unit +tests in parallel using GNU Parallel, so it's recommended that you install it +first using your system's package manager (refer to the GNU Parallel +[official webpage](https://www.gnu.org/software/parallel/) for more +information). + +In order to run unit tests execute the following command: + +``` +make check +``` + +This will build Speedb and run the tests. You can provide the `-j` flag to +`make` in order to make a better utilization of CPU and speed up the build. Note +that this flag only affects the build, not the tests themselves. If you have GNU +Parallel installed, you can control the number parallel tests to run using the +environment variable `J`. For example, to build on a 64-core CPU and run the +tests in parallel, you can run: + +``` +make J=64 check -j64 +``` + +Unlike `-j`, which if not provided defaults to 1, if `J` isn't provided, the +default is to run one job per core. + +If you switch between release and debug build, normal or lite build, or compiler +or compiler options, call `make clean` first. So here is a safe routine to run +all tests: + +``` +make clean && make check -j64 +``` + +#### Debugging single unit test failures + +You can run a specific unit test by running the test binary that contains it. If +you use GNU make, the test binary will be located in the root directory of the +repository (if you use CMake, the test binary will be in your build directory). +For example, the test `DBBasicTest.OpenWhenOpen` is in the binary +`db_basic_test`, so simply running + +``` +./db_basic_test +``` + +will run all tests in the binary. + +GTest provides some useful command line parameters, and you can see them by +providing the `--help` argument to the test binary: + +``` +./db_basic_test --help +``` + +The flag you're most likely to use is probably `--gtest_filter`, which allows +you to specify a subset of the tests to run. For example, if you only want to +run `DBBasicTest.OpenWhenOpen`: + +``` +./db_basic_test --gtest_filter="*DBBasicTest.OpenWhenOpen*" +``` + +By default, the test DB created by tests is cleared up even if the test fails. +You can preserve it by using `--gtest_throw_on_failure`. If you want to stop the +debugger when an assertion fails, specify `--gtest_break_on_failure`. + +The `KEEP_DB=1` environment variable is another way to preserve the test DB from +being deleted at the end of a unit-test run, regardless of whether the test +fails or not: + +``` +KEEP_DB=1 ./db_basic_test --gtest_filter=DBBasicTest.Open +``` + +By default, the temporary test files will be under `/tmp/rocksdbtest-/` +(except when running in parallel, in which case they are under `/dev/shm`). You +can override the location by using the `TEST_TMPDIR` environment variable. For +example: + +``` +TEST_TMPDIR=/dev/shm/my_dir ./db_basic_test +``` + +#### Java unit tests + +To run the Java unit tests, make sure you set the `JAVA_HOME` environment +variable to the path of your JDK installation and execute the following command: + +``` +make jclean && DISABLE_JEMALLOC=1 make jtest -j64 +``` + +#### Additional build flavors + +For more complicated code changes, we ask contributors to run more build flavors +before sending the code for review. + +To build with _AddressSanitizer (ASAN)_, set the `COMPILE_WITH_ASAN` environment +variable: + +``` +COMPILE_WITH_ASAN=1 make check -j64 +``` + +To build with _ThreadSanitizer (TSAN)_, set the `COMPILE_WITH_TSAN` environment +variable: + +``` +COMPILE_WITH_TSAN=1 make check -j64 +``` + +To run _UndefinedBehaviorSanitizer (UBSAN)_, set the `COMPILE_WITH_UBSAN` +environment variable: + +``` +COMPILE_WITH_UBSAN=1 make check -j64 +``` + +To run LLVM's analyzer, run: + +``` +make analyze +``` + +#### Crash tests + +For changes with higher risks, other than running all of the tests with multiple +flavors, a crash test cycle needs to be executed without failure. If crash test +doesn't cover the new feature, add it there. + +To run all crash tests, run + +``` +make crash_test -j64 +make crash_test_with_atomic_flush -j64 +``` + +If you are unable to use GNU make, you can manually build the `db_stress` +binary, and run the following commands manually: + +``` + python -u tools/db_crashtest.py whitebox + python -u tools/db_crashtest.py blackbox + python -u tools/db_crashtest.py --simple whitebox + python -u tools/db_crashtest.py --simple blackbox + python -u tools/db_crashtest.py --cf_consistency blackbox + python -u tools/db_crashtest.py --cf_consistency whitebox +``` + +#### Performance tests + +For changes that might impact performance, we suggest normal benchmarks are run +to make sure there is no regression (see [benchmark.sh](tools/benchmark.sh)). +Depending the actual performance, you may choose to run against a database +backed by disks, or memory-backed file systems. + +### Commit changes + +Please keep your commits: + +- Standalone - The code must compile and run successfully after each commit + (no breaking commits!). +- Minimal - Break your code into minimal, logically-complete chunks. +- Self-Reviewed - Always double-check yourself before submitting. + +Commit messages should: + +- Start with a component name followed by a colon. For example, if you made + changes to the documentation, prefix the commit message with `docs: `. If + you only updated tests, prefix the commit message with `tests: `. For + build-related changed use `build: `, etc. +- Reference a relevant issue, if any. This is especially relevant for bug + fixes and new features. The issue should be referenced at the end of the + first line as a hash sign followed by the issue number. For example, `#23`. + If there's more than one issue that applies, mention the main one on the + first line, and add a reference to the rest at the end of the commit message + (e.g. `Also fixes #54, #89, and #99`). +- Have the line length limited to 100 characters or less. This restriction + does not apply when quoting program output, etc. +- Be phrased in a clear and grammatically-correct language, and use present + tense ("add feature", not "added feature".) + +### Create a pull request + +When you're finished with the changes, create a pull request, also known as a +PR. If you're unfamiliar with open-source contributions on GitHub, follow the +[Creating a pull request guide](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). + +#### Submit a pull request + +- Describe what your change is doing, especially if there isn't a relevant + issue open. +- Reference relevant issues and discussions, and don't forget to + [link PR to issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) + if you are solving one. +- Explain how you tested your changes (we recommend adding a "Test Plan:" + section to the pull request summary, which specifies what testing was done + to validate the quality and performance of the change). +- If your change impacts performance, explain why the specific performance + environment was chosen. Also specify at least one benchmark test case that + favors the improvement and share the results. +- Enable the checkbox to allow maintainer edits so the branch can be updated + for a merge. Once you submit your PR, a Speedb team member will review your + proposal. We may ask questions or request for additional information. +- We may ask for changes to be made before a PR can be merged, either using + suggested changes or pull request comments. You can apply suggested changes + directly through the UI. You can make any other changes in your fork, then + commit them to your branch. +- If you run into any merge issues, check out this + [git tutorial](https://lab.github.com/githubtraining/managing-merge-conflicts) + to help you resolve merge conflicts and other issues. diff --git a/INSTALL.md b/INSTALL.md index 7d3b147796..f98fda4a7e 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,212 +1,143 @@ ## Compilation -**Important**: If you plan to run RocksDB in production, don't compile using default -`make` or `make all`. That will compile RocksDB in debug mode, which is much slower -than release mode. +**Important**: If you plan to run Speedb in production, don't compile using +default `make` or `make all` invocations. That will compile Speedb in debug +mode, which is much slower than release mode. -RocksDB's library should be able to compile without any dependency installed, -although we recommend installing some compression libraries (see below). -We do depend on newer gcc/clang with C++17 support (GCC >= 7, Clang >= 5). +Speedb's library should be able to compile without any dependency installed, +although we recommend installing some compression libraries (see below). We do +depend on newer gcc/clang with C++17 support (GCC >= 7, Clang >= 5). -There are few options when compiling RocksDB: +There are few options when compiling Speedb: -* [recommended] `make static_lib` will compile librocksdb.a, RocksDB static library. Compiles static library in release mode. +- [recommended] `make static_lib` will compile the Speedb static library + (`librocksdb.a`) in release mode. -* `make shared_lib` will compile librocksdb.so, RocksDB shared library. Compiles shared library in release mode. +- `make shared_lib` will compile the Speedb shared library (`librocksdb.so`) + in release mode. -* `make check` will compile and run all the unit tests. `make check` will compile RocksDB in debug mode. +- `make check` will compile and run all the unit tests. `make check` will + compile Speedb in debug mode. -* `make all` will compile our static library, and all our tools and unit tests. Our tools -depend on gflags. You will need to have gflags installed to run `make all`. This will compile RocksDB in debug mode. Don't -use binaries compiled by `make all` in production. +- `make all` will compile our static library, and all our tools and unit + tests. Our tools depend on gflags. You will need to have gflags installed to + run `make all`. This will compile Speedb in debug mode. Don't use binaries + compiled by `make all` in production. -* By default the binary we produce is optimized for the platform you're compiling on -(`-march=native` or the equivalent). SSE4.2 will thus be enabled automatically if your -CPU supports it. To print a warning if your CPU does not support SSE4.2, build with -`USE_SSE=1 make static_lib` or, if using CMake, `cmake -DFORCE_SSE42=ON`. If you want -to build a portable binary, add `PORTABLE=1` before your make commands, like this: -`PORTABLE=1 make static_lib`. +- By default the binary we produce is optimized for the platform you're + compiling on (`-march=native` or the equivalent). SSE4.2 will thus be + enabled automatically if your CPU supports it. To print a warning if your + CPU does not support SSE4.2, build with `USE_SSE=1 make static_lib` or, if + using CMake, `cmake -DFORCE_SSE42=ON`. If you want to build a portable + binary, add `PORTABLE=1` before your make commands, like this: + `PORTABLE=1 make static_lib`, or `cmake -DPORTABLE=1` if using CMake. ## Dependencies -* You can link RocksDB with following compression libraries: - - [zlib](http://www.zlib.net/) - a library for data compression. - - [bzip2](http://www.bzip.org/) - a library for data compression. - - [lz4](https://github.com/lz4/lz4) - a library for extremely fast data compression. - - [snappy](http://google.github.io/snappy/) - a library for fast - data compression. - - [zstandard](http://www.zstd.net) - Fast real-time compression - algorithm. +- You can link Speedb with following compression libraries: -* All our tools depend on: - - [gflags](https://gflags.github.io/gflags/) - a library that handles - command line flags processing. You can compile rocksdb library even - if you don't have gflags installed. + - [zlib](http://www.zlib.net/) - a library for data compression. + - [bzip2](http://www.bzip.org/) - a library for data compression. + - [lz4](https://github.com/lz4/lz4) - a library for extremely fast data + compression. + - [snappy](http://google.github.io/snappy/) - a library for fast data + compression. + - [zstandard](http://www.zstd.net) - Fast real-time compression algorithm. -* `make check` will also check code formatting, which requires [clang-format](https://clang.llvm.org/docs/ClangFormat.html) +- All of our tools depend on: -* If you wish to build the RocksJava static target, then cmake is required for building Snappy. + - [gflags](https://gflags.github.io/gflags/) - a library that handles + command line flags processing. Note that this only required for building + the tools, and that you can compile the Speedb library even if you don't + have gflags installed. -* If you wish to run microbench (e.g, `make microbench`, `make ribbon_bench` or `cmake -DWITH_BENCHMARK=1`), Google benchmark >= 1.6.0 is needed. +- `make check` will also check code formatting, which requires + [clang-format](https://clang.llvm.org/docs/ClangFormat.html) -## Supported platforms - -* **Linux - Ubuntu** - * Upgrade your gcc to version at least 7 to get C++17 support. - * Install gflags. First, try: `sudo apt-get install libgflags-dev` - If this doesn't work and you're using Ubuntu, here's a nice tutorial: - (http://askubuntu.com/questions/312173/installing-gflags-12-04) - * Install snappy. This is usually as easy as: - `sudo apt-get install libsnappy-dev`. - * Install zlib. Try: `sudo apt-get install zlib1g-dev`. - * Install bzip2: `sudo apt-get install libbz2-dev`. - * Install lz4: `sudo apt-get install liblz4-dev`. - * Install zstandard: `sudo apt-get install libzstd-dev`. - -* **Linux - CentOS / RHEL** - * Upgrade your gcc to version at least 7 to get C++17 support - * Install gflags: - - git clone https://github.com/gflags/gflags.git - cd gflags - git checkout v2.0 - ./configure && make && sudo make install - - **Notice**: Once installed, please add the include path for gflags to your `CPATH` environment variable and the - lib path to `LIBRARY_PATH`. If installed with default settings, the include path will be `/usr/local/include` - and the lib path will be `/usr/local/lib`. - - * Install snappy: - - sudo yum install snappy snappy-devel - - * Install zlib: - - sudo yum install zlib zlib-devel - - * Install bzip2: +- If you wish to build the RocksJava static target, then CMake is required for + building Snappy. - sudo yum install bzip2 bzip2-devel +- If you wish to run microbench (e.g, `make microbench`, `make ribbon_bench` + or `cmake -DWITH_BENCHMARK=1`), Google benchmark >= 1.6.0 is needed. - * Install lz4: - - sudo yum install lz4-devel - - * Install ASAN (optional for debugging): - - sudo yum install libasan - - * Install zstandard: - * With [EPEL](https://fedoraproject.org/wiki/EPEL): - - sudo yum install libzstd-devel - - * With CentOS 8: - - sudo dnf install libzstd-devel - - * From source: - - wget https://github.com/facebook/zstd/archive/v1.1.3.tar.gz - mv v1.1.3.tar.gz zstd-1.1.3.tar.gz - tar zxvf zstd-1.1.3.tar.gz - cd zstd-1.1.3 - make && sudo make install +## Supported platforms -* **OS X**: - * Install latest C++ compiler that supports C++ 17: - * Update XCode: run `xcode-select --install` (or install it from XCode App's settting). - * Install via [homebrew](http://brew.sh/). - * If you're first time developer in MacOS, you still need to run: `xcode-select --install` in your command line. - * run `brew tap homebrew/versions; brew install gcc7 --use-llvm` to install gcc 7 (or higher). - * run `brew install rocksdb` +- **Linux - Ubuntu** -* **FreeBSD** (11.01): + - Upgrade your gcc to version at least 7 to get C++17 support. + - Install gflags. First, try: `sudo apt-get install libgflags-dev` If this + doesn't work and you're using Ubuntu, here's a nice tutorial: + (http://askubuntu.com/questions/312173/installing-gflags-12-04) + - Install snappy. This is usually as easy as: + `sudo apt-get install libsnappy-dev`. + - Install zlib. Try: `sudo apt-get install zlib1g-dev`. + - Install bzip2: `sudo apt-get install libbz2-dev`. + - Install lz4: `sudo apt-get install liblz4-dev`. + - Install zstandard: `sudo apt-get install libzstd-dev`. - * You can either install RocksDB from the Ports system using `cd /usr/ports/databases/rocksdb && make install`, or you can follow the details below to install dependencies and compile from source code: +- **Linux - CentOS / RHEL** - * Install the dependencies for RocksDB: + - Upgrade your gcc to version at least 7 to get C++17 support + - Install gflags: - export BATCH=YES - cd /usr/ports/devel/gmake && make install - cd /usr/ports/devel/gflags && make install + git clone https://github.com/gflags/gflags.git + cd gflags + git checkout v2.0 + ./configure && make && sudo make install - cd /usr/ports/archivers/snappy && make install - cd /usr/ports/archivers/bzip2 && make install - cd /usr/ports/archivers/liblz4 && make install - cd /usr/ports/archivesrs/zstd && make install + **Notice**: Once installed, please add the include path for gflags to + your `CPATH` environment variable and the lib path to `LIBRARY_PATH`. If + installed with default settings, the include path will be + `/usr/local/include` and the lib path will be `/usr/local/lib`. - cd /usr/ports/devel/git && make install + - Install snappy: + sudo yum install snappy snappy-devel - * Install the dependencies for RocksJava (optional): + - Install zlib: - export BATCH=yes - cd /usr/ports/java/openjdk7 && make install + sudo yum install zlib zlib-devel - * Build RocksDB from source: - cd ~ - git clone https://github.com/facebook/rocksdb.git - cd rocksdb - gmake static_lib + - Install bzip2: - * Build RocksJava from source (optional): - cd rocksdb - export JAVA_HOME=/usr/local/openjdk7 - gmake rocksdbjava + sudo yum install bzip2 bzip2-devel -* **OpenBSD** (6.3/-current): + - Install lz4: - * As RocksDB is not available in the ports yet you have to build it on your own: + sudo yum install lz4-devel - * Install the dependencies for RocksDB: + - Install ASAN (optional for debugging): - pkg_add gmake gflags snappy bzip2 lz4 zstd git jdk bash findutils gnuwatch + sudo yum install libasan - * Build RocksDB from source: + - Install zstandard: - cd ~ - git clone https://github.com/facebook/rocksdb.git - cd rocksdb - gmake static_lib + - With [EPEL](https://fedoraproject.org/wiki/EPEL): - * Build RocksJava from source (optional): + sudo yum install libzstd-devel - cd rocksdb - export JAVA_HOME=/usr/local/jdk-1.8.0 - export PATH=$PATH:/usr/local/jdk-1.8.0/bin - gmake rocksdbjava + - With CentOS 8: -* **iOS**: - * Run: `TARGET_OS=IOS make static_lib`. When building the project which uses rocksdb iOS library, make sure to define two important pre-processing macros: `ROCKSDB_LITE` and `IOS_CROSS_COMPILE`. + sudo dnf install libzstd-devel -* **Windows** (Visual Studio 2017 to up): - * Read and follow the instructions at CMakeLists.txt - * Or install via [vcpkg](https://github.com/microsoft/vcpkg) - * run `vcpkg install rocksdb:x64-windows` + - From source: -* **AIX 6.1** - * Install AIX Toolbox rpms with gcc - * Use these environment variables: + wget https://github.com/facebook/zstd/archive/v1.1.3.tar.gz + mv v1.1.3.tar.gz zstd-1.1.3.tar.gz + tar zxvf zstd-1.1.3.tar.gz + cd zstd-1.1.3 + make && sudo make install - export PORTABLE=1 - export CC=gcc - export AR="ar -X64" - export EXTRA_ARFLAGS=-X64 - export EXTRA_CFLAGS=-maix64 - export EXTRA_CXXFLAGS=-maix64 - export PLATFORM_LDFLAGS="-static-libstdc++ -static-libgcc" - export LIBPATH=/opt/freeware/lib - export JAVA_HOME=/usr/java8_64 - export PATH=/opt/freeware/bin:$PATH +- **OS X**: -* **Solaris Sparc** - * Install GCC 7 and higher. - * Use these environment variables: + - Install latest C++ compiler that supports C++ 17: + - Update XCode: run `xcode-select --install` (or install it from XCode + App's settting). + - Install via [homebrew](http://brew.sh/). + - If you're first time developer in MacOS, you still need to run: + `xcode-select --install` in your command line. + - run `brew tap homebrew/versions; brew install gcc7 --use-llvm` + to install gcc 7 (or higher). - export CC=gcc - export EXTRA_CFLAGS=-m64 - export EXTRA_CXXFLAGS=-m64 - export EXTRA_LDFLAGS=-m64 - export PORTABLE=1 - export PLATFORM_LDFLAGS="-static-libstdc++ -static-libgcc" +- **Windows** (Visual Studio 2017 to up): + - Read and follow the instructions at CMakeLists.txt diff --git a/README.md b/README.md index b0995062f3..e7c6bf8ff4 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,11 @@ Speeb is a library that provides persistent key-value stores. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function. It is maintained by Speedb and is forked from Rocksdb, developed by Facebook. + ## Usage * If speedb is in your default library path: + In your `CMakeLists.txt` add: ``` target_link_libraries(${PROJECT_NAME} speedb) @@ -25,53 +27,49 @@ It is maintained by Speedb and is forked from Rocksdb, developed by Facebook. Usage of the library in your code is the same regardless of whether you statically linked the library or dynamically linked it, and examples can be found under the [examples](examples) directory. The public interface is in [include](include/rocksdb). Callers should not include or rely on the details of any other header files in this package. Those internal APIs may be changed without warning. + ## Build dependencies -Please refer to the file [INSTALL.md](INSTALL.md) for a list of all the dependencies and how to install them across different platforms. + +Please refer to the file [INSTALL.md](INSTALL.md) for a list of all the +dependencies and how to install them across different platforms. ## Building Speedb + Debug: - mkdir build && cd build - cmake .. -DCMAKE_BUILD_TYPE=Debug [cmake options] - make rocksdb + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Debug [cmake options] + make rocksdb By default the build type is Debug. Release: - mkdir build && cd build - cmake .. -DCMAKE_BUILD_TYPE=Release [cmake options] - make rocksdb + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Release [cmake options] + make rocksdb -This will build the static library. -If you want to build the dynammic library, use: +This will build the static library. If you want to build the dynammic library, +use: - make rocksdb-shared + make rocksdb-shared -If you want `make` to increase the number of cores used for building, simply use the `-j` option. +If you want `make` to increase the number of cores used for building, simply use +the `-j` option. If you want to build a specific target: - make [target name] + make [target name] For development and functional testing, go with the debug version which includes -more assertions and debug prints. -Otherwise, for production or performance testing, we recommend building a release version -which is more optimized. - -## Running tests +more assertions and debug prints. Otherwise, for production or performance +testing, we recommend building a release version which is more optimized. - cd build - make rocksdb - ./[test name] --db=/path/to/db +## Join us -for example, `db_blob_basic_test`: +Speedb is committed to a welcoming and inclusive environment where everyone can +contribute. - cd build - make rocksdb - ./db_blob_basic_test --db=/tmp/example_db - -The test will generate a random DB at the specified path. This is also where speedb will store the LOG files. ## Contributing code See the [contributing guide](CONTRIBUTING.md). @@ -79,4 +77,3 @@ See the [contributing guide](CONTRIBUTING.md). ## License Speedb is open-source and licensed under the [Apache 2.0 License](LICENSE.Apache). - From 98c7bde97fb6e1afcb0ad2d6340923920af66b33 Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Wed, 17 Aug 2022 22:56:21 +0300 Subject: [PATCH 177/226] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e7c6bf8ff4..824bb77e31 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ![GitHub contributors](https://img.shields.io/github/contributors/speedb-io/speedb) -Speeb is a library that provides persistent key-value stores. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function. +Speedb is a library that provides persistent key-value stores. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function. It is maintained by Speedb and is forked from Rocksdb, developed by Facebook. From 643d7a95ba04365db4a488ecc766424be17cb23e Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Thu, 18 Aug 2022 12:28:59 +0300 Subject: [PATCH 178/226] Update CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 164 ++++++++++++++++++++++++++++++--------------- 1 file changed, 110 insertions(+), 54 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index d1abc700d2..31a1b69b59 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,77 +1,133 @@ -# Code of Conduct +# Contributor Covenant Code of Conduct ## Our Pledge -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to make participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. ## Our Standards -Examples of behavior that contributes to creating a positive environment -include: +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or advances + of any kind +- Trolling, insulting or derogatory comments, and personal or political + attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, + without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +## Scope -Examples of unacceptable behavior by participants include: +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +## Enforcement -## Our Responsibilities +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +conduct@speedb.io. All complaints will be reviewed and investigated promptly and +fairly. -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. +## Enforcement Guidelines -## Scope +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: -This Code of Conduct applies within all project spaces, and it also applies when -an individual is representing the project or its community in public spaces. -Examples of representing a project or community include using an official -project e-mail address, posting via an official social media account, or acting -as an appointed representative at an online or offline event. Representation of -a project may be further defined and clarified by project maintainers. +### 1. Correction -## Enforcement +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at . All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. -[homepage]: https://www.contributor-covenant.org +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder][mozilla coc]. -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][faq]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[mozilla coc]: https://github.com/mozilla/diversity +[faq]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations From 7281a3038b564ab8d2f7c2a6faddc329fcc670a4 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Fri, 19 Aug 2022 13:07:17 +0300 Subject: [PATCH 179/226] build: fix the java test target dependencies (#128) The `test` target in the Java Makefile has an incorrect dependency graph that could cause tests to start executing before the compilation finished (or even started) when make is invoked in job server mode. Fix it by specifying target dependencies such that running the tests depends on having the tests compiled first. --- java/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/Makefile b/java/Makefile index f580fda277..dcf1d2f334 100644 --- a/java/Makefile +++ b/java/Makefile @@ -437,12 +437,12 @@ java_test: java resolve_test_deps $(AM_V_at) $(JAVAC_CMD) $(JAVAC_ARGS) -cp $(MAIN_CLASSES):$(JAVA_TESTCLASSPATH) -h $(NATIVE_INCLUDE) -d $(TEST_CLASSES)\ $(TEST_SOURCES) -test: java java_test run_test +test: run_test -run_test: +run_test: java_test $(JAVA_CMD) $(JAVA_ARGS) -Djava.library.path=target -cp "$(MAIN_CLASSES):$(TEST_CLASSES):$(JAVA_TESTCLASSPATH):target/*" org.rocksdb.test.RocksJunitRunner $(ALL_JAVA_TESTS) -run_plugin_test: +run_plugin_test: java_test $(JAVA_CMD) $(JAVA_ARGS) -Djava.library.path=target -cp "$(MAIN_CLASSES):$(TEST_CLASSES):$(JAVA_TESTCLASSPATH):target/*" org.rocksdb.test.RocksJunitRunner $(ROCKSDB_PLUGIN_JAVA_TESTS) db_bench: java From 5c529bbfd8d9028c7ff67c2a31d6570f50d2d92f Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Thu, 18 Aug 2022 23:31:48 +0300 Subject: [PATCH 180/226] flush_job: do not roll back memtable flush on CF drop and DB shutdown (#126) Rolling back in these cases is meaningless because the memtables will be freed shortly afterwards, so making them available for flush again is useless at best. Additionally, in atomic flush, memtables that were successfully flushed aren't rolled back if a CF is dropped or a DB shutdown was requested (the shutdown case is the more relevant one for the comparison here because it aborts the flush, whereas the in the CF drop case it's simply ignored at flush result installation time). In this regard this change simply matches the behaviour there. Lastly, this might be needed for the WriteBufferManager changes in #113, since we plan to use the information about memory that can be flushed in the future for triggering flushes based on immutable memory as well, and rolling back flushes causes the memtable memory to become ready for flush again for a brief period of time until it is dropped, which might wrongly affect the WBM decisions. --- db/flush_job.cc | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/db/flush_job.cc b/db/flush_job.cc index 3ccce2af18..96d62d7891 100644 --- a/db/flush_job.cc +++ b/db/flush_job.cc @@ -276,16 +276,12 @@ Status FlushJob::Run(LogsWithPrepTracker* prep_tracker, FileMetaData* file_meta, s = WriteLevel0Table(); } - if (s.ok() && cfd_->IsDropped()) { - s = Status::ColumnFamilyDropped("Column family dropped during compaction"); - } - if ((s.ok() || s.IsColumnFamilyDropped()) && - shutting_down_->load(std::memory_order_acquire)) { - s = Status::ShutdownInProgress("Database shutdown"); - } - if (!s.ok()) { cfd_->imm()->RollbackMemtableFlush(mems_, meta_.fd.GetNumber()); + } else if (shutting_down_->load(std::memory_order_acquire)) { + s = Status::ShutdownInProgress("Database shutdown"); + } else if (cfd_->IsDropped()) { + s = Status::ColumnFamilyDropped("Column family dropped during flush"); } else if (write_manifest_) { TEST_SYNC_POINT("FlushJob::InstallResults"); // Replace immutable memtable with the generated Table From a618a8bf9e278205089f029bf769bc0a43b9b9a9 Mon Sep 17 00:00:00 2001 From: nathan-bo <103655431+nathan-bo@users.noreply.github.com> Date: Mon, 22 Aug 2022 16:49:58 +0300 Subject: [PATCH 181/226] Update test_fuzz.yml --- .github/workflows/test_fuzz.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_fuzz.yml b/.github/workflows/test_fuzz.yml index eef11add05..f270ad7b33 100644 --- a/.github/workflows/test_fuzz.yml +++ b/.github/workflows/test_fuzz.yml @@ -48,7 +48,7 @@ jobs: export PKG_CONFIG_PATH=$PWD:$PWD/external.protobuf/lib/pkgconfig/ \n export PATH=$PWD/external.protobuf/bin:$PATH \n cd $GITHUB_WORKSPACE \n - COMPILE_WITH_ASAN=1 PORTABLE=1 make -j2 static_lib \n + COMPILE_WITH_ASAN=1 PORTABLE=1 make -j$(nproc) static_lib \n cd $GITHUB_WORKSPACE/fuzz \n make ${{ matrix.name }} \n ls -alFh $GITHUB_WORKSPACE/fuzz/ \n From 36c02c4cea9bd768b2e086528a38518ee84243d2 Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 24 Aug 2022 13:54:44 +0300 Subject: [PATCH 182/226] bloom_test: fix compilation error with GCC 12 (#136) When compiling bloom_test with GCC 12 it complains about using uninitialised variables. The error is technically wrong, since only the address is taken, but since this is a test and there's no performance penalty, initialise the member to get rid of the error. --- util/bloom_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/bloom_test.cc b/util/bloom_test.cc index e20d3d4035..5f2891dbbe 100644 --- a/util/bloom_test.cc +++ b/util/bloom_test.cc @@ -1009,7 +1009,7 @@ struct RawFilterTester { // Points five bytes from the end char* metadata_ptr_; - RawFilterTester() : metadata_ptr_(&*(data_.end() - 5)) {} + RawFilterTester() : data_(), metadata_ptr_(&*(data_.end() - 5)) {} Slice ResetNoFill(uint32_t len_without_metadata, uint32_t num_lines, uint32_t num_probes) { From d6061503e1ef70c2dda2a3bc6490dee668b33765 Mon Sep 17 00:00:00 2001 From: Peter Dillinger Date: Fri, 6 May 2022 16:38:06 -0700 Subject: [PATCH 183/226] build: pick Makefile cleanup changes from upstream (#118) This picks the "Clean up variables for temporary directory" commit (e03d958b9166de6f29288f2ed854722b36cd3e0e) from RocksDB for easier upstreaming and merging in the future. Summary: Having all of TMPD, TMPDIR and TEST_TMPDIR as configuration parameters is confusing. This change simplifies a number of things by standardizing on TEST_TMPDIR, while still recognizing the old names also. In detail: * crash_test.mk also needs to use TEST_TMPDIR for crash test, so put in shared common.mk (an upgrade of python.mk) * Always exporting TEST_TMPDIR eliminates the need to propagate TMPD or export TEST_TMPDIR in selective places. * Use --tmpdir option to gnu_parallel so that it doesn't need TMPDIR environment variable * Remove obsolete parloop and parallel_check Makefile targets * Remove undefined, unused function ResetTmpDirForDirectIO() Pull Request resolved: https://github.com/facebook/rocksdb/pull/9961 Test Plan: manual + CI Reviewed By: riversand963 Differential Revision: D36212178 Pulled By: pdillinger fbshipit-source-id: b76c1876c4f4d38b37789c2779eaa7c3026824dd --- Makefile | 75 +++++++------------------------------------- common.mk | 30 ++++++++++++++++++ crash_test.mk | 2 +- python.mk | 9 ------ test_util/testutil.h | 5 --- 5 files changed, 43 insertions(+), 78 deletions(-) create mode 100644 common.mk delete mode 100644 python.mk diff --git a/Makefile b/Makefile index 0b3e3e7bdd..6e8955b4e0 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ BASH_EXISTS := $(shell which bash) SHELL := $(shell which bash) -include python.mk +include common.mk CLEAN_FILES = # deliberately empty, so we can append below. CFLAGS += ${EXTRA_CFLAGS} @@ -847,18 +847,6 @@ coverage: clean # Delete intermediate files $(FIND) . -type f \( -name "*.gcda" -o -name "*.gcno" \) -exec rm -f {} \; -ifneq (,$(filter check parallel_check,$(MAKECMDGOALS)),) -# Use /dev/shm if it has the sticky bit set (otherwise, /tmp), -# and create a randomly-named rocksdb.XXXX directory therein. -# We'll use that directory in the "make check" rules. -ifeq ($(TMPD),) -TMPDIR := $(shell echo $${TMPDIR:-/tmp}) -TMPD := $(shell f=/dev/shm; test -k $$f || f=$(TMPDIR); \ - perl -le 'use File::Temp "tempdir";' \ - -e 'print tempdir("'$$f'/rocksdb.XXXX", CLEANUP => 0)') -endif -endif - # Run all tests in parallel, accumulating per-test logs in t/log-*. # # Each t/run-* file is a tiny generated bourne shell script that invokes one of @@ -898,7 +886,7 @@ $(parallel_tests): TEST_SCRIPT=t/run-$$TEST_BINARY-$${TEST_NAME//\//-}; \ printf '%s\n' \ '#!/bin/sh' \ - "d=\$(TMPD)$$TEST_SCRIPT" \ + "d=\$(TEST_TMPDIR)$$TEST_SCRIPT" \ 'mkdir -p $$d' \ "TEST_TMPDIR=\$$d $(DRIVER) ./$$TEST_BINARY --gtest_filter=$$TEST_NAME" \ > $$TEST_SCRIPT; \ @@ -958,7 +946,6 @@ endif .PHONY: check_0 check_0: - $(AM_V_GEN)export TEST_TMPDIR=$(TMPD); \ printf '%s\n' '' \ 'To monitor subtest ,' \ ' run "make watch-log" in a separate window' ''; \ @@ -969,7 +956,8 @@ check_0: | $(prioritize_long_running_tests) \ | grep -E '$(tests-regexp)' \ | grep -E -v '$(EXCLUDE_TESTS_REGEX)' \ - | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG --eta --gnu '{} $(parallel_redir)' ; \ + | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG --eta --gnu \ + --tmpdir=$(TEST_TMPDIR) '{} $(parallel_redir)' ; \ parallel_retcode=$$? ; \ awk '{ if ($$7 != 0 || $$8 != 0) { if ($$7 == "Exitval") { h = $$0; } else { if (!f) print h; print; f = 1 } } } END { if(f) exit 1; }' < LOG ; \ awk_retcode=$$?; \ @@ -980,7 +968,6 @@ valgrind-exclude-regexp = InlineSkipTest.ConcurrentInsert|TransactionStressTest. .PHONY: valgrind_check_0 valgrind_check_0: test_log_prefix := valgrind_ valgrind_check_0: - $(AM_V_GEN)export TEST_TMPDIR=$(TMPD); \ printf '%s\n' '' \ 'To monitor subtest ,' \ ' run "make watch-log" in a separate window' ''; \ @@ -992,10 +979,11 @@ valgrind_check_0: | grep -E '$(tests-regexp)' \ | grep -E -v '$(valgrind-exclude-regexp)' \ | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG --eta --gnu \ - '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) \ + --tmpdir=$(TEST_TMPDIR) \ + '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) \ $(parallel_redir)' \ -CLEAN_FILES += t LOG $(TMPD) +CLEAN_FILES += t LOG $(TEST_TMPDIR) # When running parallel "make check", you can monitor its progress # from another window. @@ -1018,12 +1006,12 @@ check: all && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ grep -q 'GNU Parallel'; \ then \ - $(MAKE) T="$$t" TMPD=$(TMPD) check_0; \ + $(MAKE) T="$$t" check_0; \ else \ for t in $(TESTS); do \ echo "===== Running $$t (`date`)"; ./$$t || exit 1; done; \ fi - rm -rf $(TMPD) + rm -rf $(TEST_TMPDIR) ifneq ($(PLATFORM), OS_AIX) $(PYTHON) tools/check_all_python.py ifeq ($(filter -DROCKSDB_LITE,$(OPT)),) @@ -1120,11 +1108,11 @@ valgrind_test_some: valgrind_check: $(TESTS) $(MAKE) DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" gen_parallel_tests $(AM_V_GEN)if test "$(J)" != 1 \ - && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ + && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ grep -q 'GNU Parallel'; \ then \ - $(MAKE) TMPD=$(TMPD) \ - DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0; \ + $(MAKE) \ + DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0; \ else \ for t in $(filter-out %skiplist_test options_settable_test,$(TESTS)); do \ $(VALGRIND_VER) $(VALGRIND_OPTS) ./$$t; \ @@ -1144,27 +1132,6 @@ valgrind_check_some: $(ROCKSDBTESTS_SUBSET) fi; \ done -ifneq ($(PAR_TEST),) -parloop: - ret_bad=0; \ - for t in $(PAR_TEST); do \ - echo "===== Running $$t in parallel $(NUM_PAR) (`date`)";\ - if [ $(db_test) -eq 1 ]; then \ - seq $(J) | v="$$t" build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{}; export TEST_TMPDIR=$$s;' \ - 'timeout 2m ./db_test --gtest_filter=$$v >> $$s/log-{} 2>1'; \ - else\ - seq $(J) | v="./$$t" build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{};' \ - 'export TEST_TMPDIR=$$s; timeout 10m $$v >> $$s/log-{} 2>1'; \ - fi; \ - ret_code=$$?; \ - if [ $$ret_code -ne 0 ]; then \ - ret_bad=$$ret_code; \ - echo $$t exited with $$ret_code; \ - fi; \ - done; \ - exit $$ret_bad; -endif - test_names = \ ./db_test --gtest_list_tests \ | perl -n \ @@ -1172,24 +1139,6 @@ test_names = \ -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \ -e 'print qq! $$p$$2!' -parallel_check: $(TESTS) - $(AM_V_GEN)if test "$(J)" > 1 \ - && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ - grep -q 'GNU Parallel'; \ - then \ - echo Running in parallel $(J); \ - else \ - echo "Need to have GNU Parallel and J > 1"; exit 1; \ - fi; \ - ret_bad=0; \ - echo $(J);\ - echo Test Dir: $(TMPD); \ - seq $(J) | build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{}; rm -rf $$s; mkdir $$s'; \ - $(MAKE) PAR_TEST="$(shell $(test_names))" TMPD=$(TMPD) \ - J=$(J) db_test=1 parloop; \ - $(MAKE) PAR_TEST="$(filter-out db_test, $(TESTS))" \ - TMPD=$(TMPD) J=$(J) db_test=0 parloop; - analyze: clean USE_CLANG=1 $(MAKE) analyze_incremental diff --git a/common.mk b/common.mk new file mode 100644 index 0000000000..85c99fcec7 --- /dev/null +++ b/common.mk @@ -0,0 +1,30 @@ +ifndef PYTHON + +# Default to python3. Some distros like CentOS 8 do not have `python`. +ifeq ($(origin PYTHON), undefined) + PYTHON := $(shell which python3 || which python || echo python3) +endif +export PYTHON + +endif + +# To setup tmp directory, first recognize some old variables for setting +# test tmp directory or base tmp directory. TEST_TMPDIR is usually read +# by RocksDB tools though Env/FileSystem::GetTestDirectory. +ifeq ($(TEST_TMPDIR),) +TEST_TMPDIR := $(TMPD) +endif +ifeq ($(TEST_TMPDIR),) +ifeq ($(BASE_TMPDIR),) +BASE_TMPDIR :=$(TMPDIR) +endif +ifeq ($(BASE_TMPDIR),) +BASE_TMPDIR :=/tmp +endif +# Use /dev/shm if it has the sticky bit set (otherwise, /tmp or other +# base dir), and create a randomly-named rocksdb.XXXX directory therein. +TEST_TMPDIR := $(shell f=/dev/shm; test -k $$f || f=$(BASE_TMPDIR); \ + perl -le 'use File::Temp "tempdir";' \ + -e 'print tempdir("'$$f'/rocksdb.XXXX", CLEANUP => 0)') +endif +export TEST_TMPDIR diff --git a/crash_test.mk b/crash_test.mk index 2971bc12aa..23c4278ce5 100644 --- a/crash_test.mk +++ b/crash_test.mk @@ -5,7 +5,7 @@ # build DB_STRESS_CMD so it must exist prior. DB_STRESS_CMD?=./db_stress -include python.mk +include common.mk CRASHTEST_MAKE=$(MAKE) -f crash_test.mk CRASHTEST_PY=$(PYTHON) -u tools/db_crashtest.py --stress_cmd=$(DB_STRESS_CMD) diff --git a/python.mk b/python.mk deleted file mode 100644 index d92cdec47f..0000000000 --- a/python.mk +++ /dev/null @@ -1,9 +0,0 @@ -ifndef PYTHON - -# Default to python3. Some distros like CentOS 8 do not have `python`. -ifeq ($(origin PYTHON), undefined) - PYTHON := $(shell which python3 || which python || echo python3) -endif -export PYTHON - -endif diff --git a/test_util/testutil.h b/test_util/testutil.h index 712862f2e4..1fc454dcd8 100644 --- a/test_util/testutil.h +++ b/test_util/testutil.h @@ -819,11 +819,6 @@ bool IsPrefetchSupported(const std::shared_ptr& fs, // Return the number of lines where a given pattern was found in a file. size_t GetLinesCount(const std::string& fname, const std::string& pattern); -// TEST_TMPDIR may be set to /dev/shm in Makefile, -// but /dev/shm does not support direct IO. -// Tries to set TEST_TMPDIR to a directory supporting direct IO. -void ResetTmpDirForDirectIO(); - Status CorruptFile(Env* env, const std::string& fname, int offset, int bytes_to_corrupt, bool verify_checksum = true); Status TruncateFile(Env* env, const std::string& fname, uint64_t length); From f160af2ea827d0396fe72202de27e1dd4873288a Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Tue, 9 Aug 2022 14:15:58 +0300 Subject: [PATCH 184/226] build: clean up the Makefile a bit (#118) Remove dependency on perl, which isn't really needed and can be replaced with POSIX tools. Also do some minor cleanup of the check targets. --- Makefile | 46 +++++++++++++++++++--------------------------- common.mk | 9 +++++---- 2 files changed, 24 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 6e8955b4e0..109f3999fb 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,8 @@ #----------------------------------------------- -BASH_EXISTS := $(shell which bash) -SHELL := $(shell which bash) +# Prefer bash, but don't overwrite the existing setting if not found +SHELL := $(shell command -v bash || echo $(SHELL)) include common.mk CLEAN_FILES = # deliberately empty, so we can append below. @@ -19,14 +19,11 @@ ARFLAGS = ${EXTRA_ARFLAGS} rs STRIPFLAGS = -S -x # Transform parallel LOG output into something more readable. -perl_command = perl -n \ - -e '@a=split("\t",$$_,-1); $$t=$$a[8];' \ - -e '$$t =~ /.*if\s\[\[\s"(.*?\.[\w\/]+)/ and $$t=$$1;' \ - -e '$$t =~ s,^\./,,;' \ - -e '$$t =~ s, >.*,,; chomp $$t;' \ - -e '$$t =~ /.*--gtest_filter=(.*?\.[\w\/]+)/ and $$t=$$1;' \ - -e 'printf "%7.3f %s %s\n", $$a[3], $$a[6] == 0 ? "PASS" : "FAIL", $$t' -quoted_perl_command = $(subst ','\'',$(perl_command)) +parallel_log_extract = awk \ + 'BEGIN{FS="\t"} { \ + t=$$9; sub(/if *\[\[ *"/,"",t); sub(/" =.*/,"",t); sub(/ >.*/,"",t); sub(/.*--gtest_filter=/,"",t); \ + printf("%7.3f %s %s\n",4,($$7 == 0 ? "PASS" : "FAIL"),t) \ + }' # DEBUG_LEVEL can have three values: # * DEBUG_LEVEL=2; this is the ultimate debug mode. It will compile rocksdb @@ -915,9 +912,9 @@ gen_parallel_tests: # 107.816 PASS t/DBTest.EncodeDecompressedBlockSizeTest # slow_test_regexp = \ - ^.*MySQLStyleTransactionTest.*$$|^.*SnapshotConcurrentAccessTest.*$$|^.*SeqAdvanceConcurrentTest.*$$|^t/run-table_test-HarnessTest.Randomized$$|^t/run-db_test-.*(?:FileCreationRandomFailure|EncodeDecompressedBlockSizeTest)$$|^.*RecoverFromCorruptedWALWithoutFlush$$ + ^.*MySQLStyleTransactionTest.*$$\|^.*SnapshotConcurrentAccessTest.*$$\|^.*SeqAdvanceConcurrentTest.*$$\|^t/run-table_test-HarnessTest.Randomized$$\|^t/run-db_test-.*FileCreationRandomFailure$$\|^t/run-db_test-.*EncodeDecompressedBlockSizeTest$$\|^.*RecoverFromCorruptedWALWithoutFlush$$ prioritize_long_running_tests = \ - perl -pe 's,($(slow_test_regexp)),100 $$1,' \ + sed 's,\($(slow_test_regexp)\),100 \1,' \ | sort -k1,1gr \ | sed 's/^[.0-9]* //' @@ -945,8 +942,8 @@ else endif .PHONY: check_0 -check_0: - printf '%s\n' '' \ +check_0: gen_parallel_tests + $(AM_V_GEN)printf '%s\n' '' \ 'To monitor subtest ,' \ ' run "make watch-log" in a separate window' ''; \ { \ @@ -967,8 +964,8 @@ valgrind-exclude-regexp = InlineSkipTest.ConcurrentInsert|TransactionStressTest. .PHONY: valgrind_check_0 valgrind_check_0: test_log_prefix := valgrind_ -valgrind_check_0: - printf '%s\n' '' \ +valgrind_check_0: gen_parallel_tests + $(AM_V_GEN)printf '%s\n' '' \ 'To monitor subtest ,' \ ' run "make watch-log" in a separate window' ''; \ { \ @@ -993,20 +990,19 @@ CLEAN_FILES += t LOG $(TEST_TMPDIR) # regardless of their duration. As with any use of "watch", hit ^C to # interrupt. watch-log: - $(WATCH) --interval=0 'sort -k7,7nr -k4,4gr LOG|$(quoted_perl_command)' + $(WATCH) --interval=0 'tail -n+2 LOG|sort -k7,7nr -k4,4gr|$(subst ','\'',$(parallel_log_extract))' dump-log: - bash -c '$(quoted_perl_command)' < LOG + tail -n+2 LOG|$(parallel_log_extract) # If J != 1 and GNU parallel is installed, run the tests in parallel, # via the check_0 rule above. Otherwise, run them sequentially. check: all - $(MAKE) gen_parallel_tests $(AM_V_GEN)if test "$(J)" != 1 \ && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ grep -q 'GNU Parallel'; \ then \ - $(MAKE) T="$$t" check_0; \ + $(MAKE) T="$$t" check_0; \ else \ for t in $(TESTS); do \ echo "===== Running $$t (`date`)"; ./$$t || exit 1; done; \ @@ -1106,7 +1102,6 @@ valgrind_test_some: ROCKSDB_VALGRIND_RUN=1 DISABLE_JEMALLOC=1 $(MAKE) valgrind_check_some valgrind_check: $(TESTS) - $(MAKE) DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" gen_parallel_tests $(AM_V_GEN)if test "$(J)" != 1 \ && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ grep -q 'GNU Parallel'; \ @@ -1133,11 +1128,8 @@ valgrind_check_some: $(ROCKSDBTESTS_SUBSET) done test_names = \ - ./db_test --gtest_list_tests \ - | perl -n \ - -e 's/ *\#.*//;' \ - -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \ - -e 'print qq! $$p$$2!' + ./db_test --gtest_list_tests | sed 's/ *\#.*//' | \ + awk '/^[^ ]/ { prefix = $$1 } /^[ ]/ { print prefix $$1 }' analyze: clean USE_CLANG=1 $(MAKE) analyze_incremental @@ -2356,7 +2348,7 @@ checkout_folly: cd third-party/folly && git reset --hard 98b9b2c1124e99f50f9085ddee74ce32afffc665 @# A hack to remove boost dependency. @# NOTE: this hack is not needed if using FBCODE compiler config - perl -pi -e 's/^(#include 0)') +ifneq ($(shell [ "$$(uname -s)" = "Linux" ] && [ -k /dev/shm ] && echo 1),) +BASE_TMPDIR :=/dev/shm +endif +TEST_TMPDIR := $(shell mktemp -d "$(BASE_TMPDIR)/rocksdb.XXXX") endif export TEST_TMPDIR From 9f4c0f903d6d60f4eefc81f4a2d4852b39a70bda Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Wed, 10 Aug 2022 14:09:36 +0300 Subject: [PATCH 185/226] build: allow setting the path to GNU Parallel in the Makefile (#118) This allows using more up to date versions from the user's system as well as possibly patched versions with additional features. --- Makefile | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 109f3999fb..f00d84ad14 100644 --- a/Makefile +++ b/Makefile @@ -925,6 +925,11 @@ prioritize_long_running_tests = \ # See "man parallel" for its "-j ..." option. J ?= 100% +PARALLEL ?= build_tools/gnu_parallel +PARALLEL_OK := $(shell command -v "$(PARALLEL)" 2>&1 >/dev/null && \ + ("$(PARALLEL)" --gnu --version 2>/dev/null | grep -q 'Ole Tange') && \ + echo 1) + # Use this regexp to select the subset of tests whose names match. tests-regexp = . EXCLUDE_TESTS_REGEX ?= "^$$" @@ -953,7 +958,7 @@ check_0: gen_parallel_tests | $(prioritize_long_running_tests) \ | grep -E '$(tests-regexp)' \ | grep -E -v '$(EXCLUDE_TESTS_REGEX)' \ - | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG --eta --gnu \ + | "$(PARALLEL)" -j$(J) --plain --joblog=LOG --eta --gnu \ --tmpdir=$(TEST_TMPDIR) '{} $(parallel_redir)' ; \ parallel_retcode=$$? ; \ awk '{ if ($$7 != 0 || $$8 != 0) { if ($$7 == "Exitval") { h = $$0; } else { if (!f) print h; print; f = 1 } } } END { if(f) exit 1; }' < LOG ; \ @@ -975,7 +980,7 @@ valgrind_check_0: gen_parallel_tests | $(prioritize_long_running_tests) \ | grep -E '$(tests-regexp)' \ | grep -E -v '$(valgrind-exclude-regexp)' \ - | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG --eta --gnu \ + | "$(PARALLEL)" -j$(J) --plain --joblog=LOG --eta --gnu \ --tmpdir=$(TEST_TMPDIR) \ '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) \ $(parallel_redir)' \ @@ -998,9 +1003,7 @@ dump-log: # If J != 1 and GNU parallel is installed, run the tests in parallel, # via the check_0 rule above. Otherwise, run them sequentially. check: all - $(AM_V_GEN)if test "$(J)" != 1 \ - && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ - grep -q 'GNU Parallel'; \ + $(AM_V_GEN)if [ "$(J)" != "1" ] && [ "$(PARALLEL_OK)" = "1" ]; \ then \ $(MAKE) T="$$t" check_0; \ else \ @@ -1102,9 +1105,7 @@ valgrind_test_some: ROCKSDB_VALGRIND_RUN=1 DISABLE_JEMALLOC=1 $(MAKE) valgrind_check_some valgrind_check: $(TESTS) - $(AM_V_GEN)if test "$(J)" != 1 \ - && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ - grep -q 'GNU Parallel'; \ + $(AM_V_GEN)if [ "$(J)" != "1" ] && [ "$(PARALLEL_OK)" = "1" ]; \ then \ $(MAKE) \ DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0; \ From f09eb89050bed4f7890e7c8596c856111b310fce Mon Sep 17 00:00:00 2001 From: Isaac Garzon Date: Tue, 9 Aug 2022 14:19:54 +0300 Subject: [PATCH 186/226] licence: remove the GPL as an alternative licence (#118) We only license Speedb under the Apache 2.0 licence, so we need to remove the GPL text from the repository. Since GNU Parallel is currently vendored in the repo and requires having a copy of the GPL text, remove it as well and depend on the system installed binary if exists (out build instructions ask users to install it anyway, and it's installed in CI). --- COPYING | 339 -- Makefile | 7 +- build_tools/gnu_parallel | 7970 -------------------------------------- 3 files changed, 3 insertions(+), 8313 deletions(-) delete mode 100644 COPYING delete mode 100755 build_tools/gnu_parallel diff --git a/COPYING b/COPYING deleted file mode 100644 index d159169d10..0000000000 --- a/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/Makefile b/Makefile index f00d84ad14..2621e6a89f 100644 --- a/Makefile +++ b/Makefile @@ -925,7 +925,7 @@ prioritize_long_running_tests = \ # See "man parallel" for its "-j ..." option. J ?= 100% -PARALLEL ?= build_tools/gnu_parallel +PARALLEL ?= parallel PARALLEL_OK := $(shell command -v "$(PARALLEL)" 2>&1 >/dev/null && \ ("$(PARALLEL)" --gnu --version 2>/dev/null | grep -q 'Ole Tange') && \ echo 1) @@ -940,9 +940,8 @@ else ifeq ($(QUIET_PARALLEL_TESTS), 1) parallel_redir = >& t/$(test_log_prefix)log-{/} else # Default: print failure output only, as it happens -# Note: gnu_parallel --eta is now always used, but has been modified to provide -# only infrequent updates when not connected to a terminal. (CircleCI will -# kill a job if no output for 10min.) +# Note: parallel --eta is now always used because CircleCI will +# kill a job if no output for 10min. parallel_redir = >& t/$(test_log_prefix)log-{/} || bash -c "cat t/$(test_log_prefix)log-{/}; exit $$?" endif diff --git a/build_tools/gnu_parallel b/build_tools/gnu_parallel deleted file mode 100755 index 757b25f11d..0000000000 --- a/build_tools/gnu_parallel +++ /dev/null @@ -1,7970 +0,0 @@ -#!/usr/bin/env perl - -# Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014 Ole Tange and -# Free Software Foundation, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see -# or write to the Free Software Foundation, Inc., 51 Franklin St, -# Fifth Floor, Boston, MA 02110-1301 USA - -# open3 used in Job::start -use IPC::Open3; -# &WNOHANG used in reaper -use POSIX qw(:sys_wait_h setsid ceil :errno_h); -# gensym used in Job::start -use Symbol qw(gensym); -# tempfile used in Job::start -use File::Temp qw(tempfile tempdir); -# mkpath used in openresultsfile -use File::Path; -# GetOptions used in get_options_from_array -use Getopt::Long; -# Used to ensure code quality -use strict; -use File::Basename; - -if(not $ENV{HOME}) { - # $ENV{HOME} is sometimes not set if called from PHP - ::warning("\$HOME not set. Using /tmp\n"); - $ENV{HOME} = "/tmp"; -} - -save_stdin_stdout_stderr(); -save_original_signal_handler(); -parse_options(); -::debug("init", "Open file descriptors: ", join(" ",keys %Global::fd), "\n"); -my $number_of_args; -if($Global::max_number_of_args) { - $number_of_args=$Global::max_number_of_args; -} elsif ($opt::X or $opt::m or $opt::xargs) { - $number_of_args = undef; -} else { - $number_of_args = 1; -} - -my @command; -@command = @ARGV; - -my @fhlist; -if($opt::pipepart) { - @fhlist = map { open_or_exit($_) } "/dev/null"; -} else { - @fhlist = map { open_or_exit($_) } @opt::a; - if(not @fhlist and not $opt::pipe) { - @fhlist = (*STDIN); - } -} - -if($opt::skip_first_line) { - # Skip the first line for the first file handle - my $fh = $fhlist[0]; - <$fh>; -} -if($opt::header and not $opt::pipe) { - my $fh = $fhlist[0]; - # split with colsep or \t - # $header force $colsep = \t if undef? - my $delimiter = $opt::colsep; - $delimiter ||= "\$"; - my $id = 1; - for my $fh (@fhlist) { - my $line = <$fh>; - chomp($line); - ::debug("init", "Delimiter: '$delimiter'"); - for my $s (split /$delimiter/o, $line) { - ::debug("init", "Colname: '$s'"); - # Replace {colname} with {2} - # TODO accept configurable short hands - # TODO how to deal with headers in {=...=} - for(@command) { - s:\{$s(|/|//|\.|/\.)\}:\{$id$1\}:g; - } - $Global::input_source_header{$id} = $s; - $id++; - } - } -} else { - my $id = 1; - for my $fh (@fhlist) { - $Global::input_source_header{$id} = $id; - $id++; - } -} - -if($opt::filter_hosts and (@opt::sshlogin or @opt::sshloginfile)) { - # Parallel check all hosts are up. Remove hosts that are down - filter_hosts(); -} - -if($opt::nonall or $opt::onall) { - onall(@command); - wait_and_exit(min(undef_as_zero($Global::exitstatus),254)); -} - -# TODO --transfer foo/./bar --cleanup -# multiple --transfer and --basefile with different /./ - -$Global::JobQueue = JobQueue->new( - \@command,\@fhlist,$Global::ContextReplace,$number_of_args,\@Global::ret_files); - -if($opt::eta or $opt::bar) { - # Count the number of jobs before starting any - $Global::JobQueue->total_jobs(); -} -if($opt::pipepart) { - @Global::cat_partials = map { pipe_part_files($_) } @opt::a; - # Unget the command as many times as there are parts - $Global::JobQueue->{'commandlinequeue'}->unget( - map { $Global::JobQueue->{'commandlinequeue'}->get() } @Global::cat_partials - ); -} -for my $sshlogin (values %Global::host) { - $sshlogin->max_jobs_running(); -} - -init_run_jobs(); -my $sem; -if($Global::semaphore) { - $sem = acquire_semaphore(); -} -$SIG{TERM} = \&start_no_new_jobs; - -start_more_jobs(); -if(not $opt::pipepart) { - if($opt::pipe) { - spreadstdin(); - } -} -::debug("init", "Start draining\n"); -drain_job_queue(); -::debug("init", "Done draining\n"); -reaper(); -::debug("init", "Done reaping\n"); -if($opt::pipe and @opt::a) { - for my $job (@Global::tee_jobs) { - unlink $job->fh(2,"name"); - $job->set_fh(2,"name",""); - $job->print(); - unlink $job->fh(1,"name"); - } -} -::debug("init", "Cleaning\n"); -cleanup(); -if($Global::semaphore) { - $sem->release(); -} -for(keys %Global::sshmaster) { - kill "TERM", $_; -} -::debug("init", "Halt\n"); -if($opt::halt_on_error) { - wait_and_exit($Global::halt_on_error_exitstatus); -} else { - wait_and_exit(min(undef_as_zero($Global::exitstatus),254)); -} - -sub __PIPE_MODE__ {} - -sub pipe_part_files { - # Input: - # $file = the file to read - # Returns: - # @commands that will cat_partial each part - my ($file) = @_; - my $buf = ""; - my $header = find_header(\$buf,open_or_exit($file)); - # find positions - my @pos = find_split_positions($file,$opt::blocksize,length $header); - # Make @cat_partials - my @cat_partials = (); - for(my $i=0; $i<$#pos; $i++) { - push @cat_partials, cat_partial($file, 0, length($header), $pos[$i], $pos[$i+1]); - } - # Remote exec should look like: - # ssh -oLogLevel=quiet lo 'eval `echo $SHELL | grep "/t\{0,1\}csh" > /dev/null && echo setenv PARALLEL_SEQ '$PARALLEL_SEQ'\; setenv PARALLEL_PID '$PARALLEL_PID' || echo PARALLEL_SEQ='$PARALLEL_SEQ'\;export PARALLEL_SEQ\; PARALLEL_PID='$PARALLEL_PID'\;export PARALLEL_PID` ;' tty\ \>/dev/null\ \&\&\ stty\ isig\ -onlcr\ -echo\;echo\ \$SHELL\ \|\ grep\ \"/t\\\{0,1\\\}csh\"\ \>\ /dev/null\ \&\&\ setenv\ FOO\ /tmp/foo\ \|\|\ export\ FOO=/tmp/foo\; \(wc\ -\ \$FOO\) - # ssh -tt not allowed. Remote will die due to broken pipe anyway. - # TODO test remote with --fifo / --cat - return @cat_partials; -} - -sub find_header { - # Input: - # $buf_ref = reference to read-in buffer - # $fh = filehandle to read from - # Uses: - # $opt::header - # $opt::blocksize - # Returns: - # $header string - my ($buf_ref, $fh) = @_; - my $header = ""; - if($opt::header) { - if($opt::header eq ":") { $opt::header = "(.*\n)"; } - # Number = number of lines - $opt::header =~ s/^(\d+)$/"(.*\n)"x$1/e; - while(read($fh,substr($$buf_ref,length $$buf_ref,0),$opt::blocksize)) { - if($$buf_ref=~s/^($opt::header)//) { - $header = $1; - last; - } - } - } - return $header; -} - -sub find_split_positions { - # Input: - # $file = the file to read - # $block = (minimal) --block-size of each chunk - # $headerlen = length of header to be skipped - # Uses: - # $opt::recstart - # $opt::recend - # Returns: - # @positions of block start/end - my($file, $block, $headerlen) = @_; - my $size = -s $file; - $block = int $block; - # The optimal dd blocksize for mint, redhat, solaris, openbsd = 2^17..2^20 - # The optimal dd blocksize for freebsd = 2^15..2^17 - my $dd_block_size = 131072; # 2^17 - my @pos; - my ($recstart,$recend) = recstartrecend(); - my $recendrecstart = $recend.$recstart; - my $fh = ::open_or_exit($file); - push(@pos,$headerlen); - for(my $pos = $block+$headerlen; $pos < $size; $pos += $block) { - my $buf; - seek($fh, $pos, 0) || die; - while(read($fh,substr($buf,length $buf,0),$dd_block_size)) { - if($opt::regexp) { - # If match /$recend$recstart/ => Record position - if($buf =~ /(.*$recend)$recstart/os) { - my $i = length($1); - push(@pos,$pos+$i); - # Start looking for next record _after_ this match - $pos += $i; - last; - } - } else { - # If match $recend$recstart => Record position - my $i = index($buf,$recendrecstart); - if($i != -1) { - push(@pos,$pos+$i); - # Start looking for next record _after_ this match - $pos += $i; - last; - } - } - } - } - push(@pos,$size); - close $fh; - return @pos; -} - -sub cat_partial { - # Input: - # $file = the file to read - # ($start, $end, [$start2, $end2, ...]) = start byte, end byte - # Returns: - # Efficient perl command to copy $start..$end, $start2..$end2, ... to stdout - my($file, @start_end) = @_; - my($start, $i); - # Convert start_end to start_len - my @start_len = map { if(++$i % 2) { $start = $_; } else { $_-$start } } @start_end; - return "<". shell_quote_scalar($file) . - q{ perl -e 'while(@ARGV) { sysseek(STDIN,shift,0) || die; $left = shift; while($read = sysread(STDIN,$buf, ($left > 32768 ? 32768 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }' } . - " @start_len"; -} - -sub spreadstdin { - # read a record - # Spawn a job and print the record to it. - # Uses: - # $opt::blocksize - # STDIN - # $opr::r - # $Global::max_lines - # $Global::max_number_of_args - # $opt::regexp - # $Global::start_no_new_jobs - # $opt::roundrobin - # %Global::running - - my $buf = ""; - my ($recstart,$recend) = recstartrecend(); - my $recendrecstart = $recend.$recstart; - my $chunk_number = 1; - my $one_time_through; - my $blocksize = $opt::blocksize; - my $in = *STDIN; - my $header = find_header(\$buf,$in); - while(1) { - my $anything_written = 0; - if(not read($in,substr($buf,length $buf,0),$blocksize)) { - # End-of-file - $chunk_number != 1 and last; - # Force the while-loop once if everything was read by header reading - $one_time_through++ and last; - } - if($opt::r) { - # Remove empty lines - $buf =~ s/^\s*\n//gm; - if(length $buf == 0) { - next; - } - } - if($Global::max_lines and not $Global::max_number_of_args) { - # Read n-line records - my $n_lines = $buf =~ tr/\n/\n/; - my $last_newline_pos = rindex($buf,"\n"); - while($n_lines % $Global::max_lines) { - $n_lines--; - $last_newline_pos = rindex($buf,"\n",$last_newline_pos-1); - } - # Chop at $last_newline_pos as that is where n-line record ends - $anything_written += - write_record_to_pipe($chunk_number++,\$header,\$buf, - $recstart,$recend,$last_newline_pos+1); - substr($buf,0,$last_newline_pos+1) = ""; - } elsif($opt::regexp) { - if($Global::max_number_of_args) { - # -N => (start..*?end){n} - # -L -N => (start..*?end){n*l} - my $read_n_lines = $Global::max_number_of_args * ($Global::max_lines || 1); - while($buf =~ s/((?:$recstart.*?$recend){$read_n_lines})($recstart.*)$/$2/os) { - # Copy to modifiable variable - my $b = $1; - $anything_written += - write_record_to_pipe($chunk_number++,\$header,\$b, - $recstart,$recend,length $1); - } - } else { - # Find the last recend-recstart in $buf - if($buf =~ s/(.*$recend)($recstart.*?)$/$2/os) { - # Copy to modifiable variable - my $b = $1; - $anything_written += - write_record_to_pipe($chunk_number++,\$header,\$b, - $recstart,$recend,length $1); - } - } - } else { - if($Global::max_number_of_args) { - # -N => (start..*?end){n} - my $i = 0; - my $read_n_lines = $Global::max_number_of_args * ($Global::max_lines || 1); - while(($i = nindex(\$buf,$recendrecstart,$read_n_lines)) != -1) { - $i += length $recend; # find the actual splitting location - $anything_written += - write_record_to_pipe($chunk_number++,\$header,\$buf, - $recstart,$recend,$i); - substr($buf,0,$i) = ""; - } - } else { - # Find the last recend-recstart in $buf - my $i = rindex($buf,$recendrecstart); - if($i != -1) { - $i += length $recend; # find the actual splitting location - $anything_written += - write_record_to_pipe($chunk_number++,\$header,\$buf, - $recstart,$recend,$i); - substr($buf,0,$i) = ""; - } - } - } - if(not $anything_written and not eof($in)) { - # Nothing was written - maybe the block size < record size? - # Increase blocksize exponentially - my $old_blocksize = $blocksize; - $blocksize = ceil($blocksize * 1.3 + 1); - ::warning("A record was longer than $old_blocksize. " . - "Increasing to --blocksize $blocksize\n"); - } - } - ::debug("init", "Done reading input\n"); - - # If there is anything left in the buffer write it - substr($buf,0,0) = ""; - write_record_to_pipe($chunk_number++,\$header,\$buf,$recstart,$recend,length $buf); - - $Global::start_no_new_jobs ||= 1; - if($opt::roundrobin) { - for my $job (values %Global::running) { - close $job->fh(0,"w"); - } - my %incomplete_jobs = %Global::running; - my $sleep = 1; - while(keys %incomplete_jobs) { - my $something_written = 0; - for my $pid (keys %incomplete_jobs) { - my $job = $incomplete_jobs{$pid}; - if($job->stdin_buffer_length()) { - $something_written += $job->non_block_write(); - } else { - delete $incomplete_jobs{$pid} - } - } - if($something_written) { - $sleep = $sleep/2+0.001; - } - $sleep = ::reap_usleep($sleep); - } - } -} - -sub recstartrecend { - # Uses: - # $opt::recstart - # $opt::recend - # Returns: - # $recstart,$recend with default values and regexp conversion - my($recstart,$recend); - if(defined($opt::recstart) and defined($opt::recend)) { - # If both --recstart and --recend is given then both must match - $recstart = $opt::recstart; - $recend = $opt::recend; - } elsif(defined($opt::recstart)) { - # If --recstart is given it must match start of record - $recstart = $opt::recstart; - $recend = ""; - } elsif(defined($opt::recend)) { - # If --recend is given then it must match end of record - $recstart = ""; - $recend = $opt::recend; - } - - if($opt::regexp) { - # If $recstart/$recend contains '|' this should only apply to the regexp - $recstart = "(?:".$recstart.")"; - $recend = "(?:".$recend.")"; - } else { - # $recstart/$recend = printf strings (\n) - $recstart =~ s/\\([0rnt\'\"\\])/"qq|\\$1|"/gee; - $recend =~ s/\\([0rnt\'\"\\])/"qq|\\$1|"/gee; - } - return ($recstart,$recend); -} - -sub nindex { - # See if string is in buffer N times - # Returns: - # the position where the Nth copy is found - my ($buf_ref, $str, $n) = @_; - my $i = 0; - for(1..$n) { - $i = index($$buf_ref,$str,$i+1); - if($i == -1) { last } - } - return $i; -} - -{ - my @robin_queue; - - sub round_robin_write { - # Input: - # $header_ref = ref to $header string - # $block_ref = ref to $block to be written - # $recstart = record start string - # $recend = record end string - # $endpos = end position of $block - # Uses: - # %Global::running - my ($header_ref,$block_ref,$recstart,$recend,$endpos) = @_; - my $something_written = 0; - my $block_passed = 0; - my $sleep = 1; - while(not $block_passed) { - # Continue flushing existing buffers - # until one is empty and a new block is passed - # Make a queue to spread the blocks evenly - if(not @robin_queue) { - push @robin_queue, values %Global::running; - } - while(my $job = shift @robin_queue) { - if($job->stdin_buffer_length() > 0) { - $something_written += $job->non_block_write(); - } else { - $job->set_stdin_buffer($header_ref,$block_ref,$endpos,$recstart,$recend); - $block_passed = 1; - $job->set_virgin(0); - $something_written += $job->non_block_write(); - last; - } - } - $sleep = ::reap_usleep($sleep); - } - return $something_written; - } -} - -sub write_record_to_pipe { - # Fork then - # Write record from pos 0 .. $endpos to pipe - # Input: - # $chunk_number = sequence number - to see if already run - # $header_ref = reference to header string to prepend - # $record_ref = reference to record to write - # $recstart = start string of record - # $recend = end string of record - # $endpos = position in $record_ref where record ends - # Uses: - # $Global::job_already_run - # $opt::roundrobin - # @Global::virgin_jobs - # Returns: - # Number of chunks written (0 or 1) - my ($chunk_number,$header_ref,$record_ref,$recstart,$recend,$endpos) = @_; - if($endpos == 0) { return 0; } - if(vec($Global::job_already_run,$chunk_number,1)) { return 1; } - if($opt::roundrobin) { - return round_robin_write($header_ref,$record_ref,$recstart,$recend,$endpos); - } - # If no virgin found, backoff - my $sleep = 0.0001; # 0.01 ms - better performance on highend - while(not @Global::virgin_jobs) { - ::debug("pipe", "No virgin jobs"); - $sleep = ::reap_usleep($sleep); - # Jobs may not be started because of loadavg - # or too little time between each ssh login. - start_more_jobs(); - } - my $job = shift @Global::virgin_jobs; - # Job is no longer virgin - $job->set_virgin(0); - if(fork()) { - # Skip - } else { - # Chop of at $endpos as we do not know how many rec_sep will - # be removed. - substr($$record_ref,$endpos,length $$record_ref) = ""; - # Remove rec_sep - if($opt::remove_rec_sep) { - Job::remove_rec_sep($record_ref,$recstart,$recend); - } - $job->write($header_ref); - $job->write($record_ref); - close $job->fh(0,"w"); - exit(0); - } - close $job->fh(0,"w"); - return 1; -} - -sub __SEM_MODE__ {} - -sub acquire_semaphore { - # Acquires semaphore. If needed: spawns to the background - # Uses: - # @Global::host - # Returns: - # The semaphore to be released when jobs is complete - $Global::host{':'} = SSHLogin->new(":"); - my $sem = Semaphore->new($Semaphore::name,$Global::host{':'}->max_jobs_running()); - $sem->acquire(); - if($Semaphore::fg) { - # skip - } else { - # If run in the background, the PID will change - # therefore release and re-acquire the semaphore - $sem->release(); - if(fork()) { - exit(0); - } else { - # child - # Get a semaphore for this pid - ::die_bug("Can't start a new session: $!") if setsid() == -1; - $sem = Semaphore->new($Semaphore::name,$Global::host{':'}->max_jobs_running()); - $sem->acquire(); - } - } - return $sem; -} - -sub __PARSE_OPTIONS__ {} - -sub options_hash { - # Returns: - # %hash = the GetOptions config - return - ("debug|D=s" => \$opt::D, - "xargs" => \$opt::xargs, - "m" => \$opt::m, - "X" => \$opt::X, - "v" => \@opt::v, - "joblog=s" => \$opt::joblog, - "results|result|res=s" => \$opt::results, - "resume" => \$opt::resume, - "resume-failed|resumefailed" => \$opt::resume_failed, - "silent" => \$opt::silent, - #"silent-error|silenterror" => \$opt::silent_error, - "keep-order|keeporder|k" => \$opt::keeporder, - "group" => \$opt::group, - "g" => \$opt::retired, - "ungroup|u" => \$opt::ungroup, - "linebuffer|linebuffered|line-buffer|line-buffered" => \$opt::linebuffer, - "tmux" => \$opt::tmux, - "null|0" => \$opt::0, - "quote|q" => \$opt::q, - # Replacement strings - "parens=s" => \$opt::parens, - "rpl=s" => \@opt::rpl, - "plus" => \$opt::plus, - "I=s" => \$opt::I, - "extensionreplace|er=s" => \$opt::U, - "U=s" => \$opt::retired, - "basenamereplace|bnr=s" => \$opt::basenamereplace, - "dirnamereplace|dnr=s" => \$opt::dirnamereplace, - "basenameextensionreplace|bner=s" => \$opt::basenameextensionreplace, - "seqreplace=s" => \$opt::seqreplace, - "slotreplace=s" => \$opt::slotreplace, - "jobs|j=s" => \$opt::jobs, - "delay=f" => \$opt::delay, - "sshdelay=f" => \$opt::sshdelay, - "load=s" => \$opt::load, - "noswap" => \$opt::noswap, - "max-line-length-allowed" => \$opt::max_line_length_allowed, - "number-of-cpus" => \$opt::number_of_cpus, - "number-of-cores" => \$opt::number_of_cores, - "use-cpus-instead-of-cores" => \$opt::use_cpus_instead_of_cores, - "shellquote|shell_quote|shell-quote" => \$opt::shellquote, - "nice=i" => \$opt::nice, - "timeout=s" => \$opt::timeout, - "tag" => \$opt::tag, - "tagstring|tag-string=s" => \$opt::tagstring, - "onall" => \$opt::onall, - "nonall" => \$opt::nonall, - "filter-hosts|filterhosts|filter-host" => \$opt::filter_hosts, - "sshlogin|S=s" => \@opt::sshlogin, - "sshloginfile|slf=s" => \@opt::sshloginfile, - "controlmaster|M" => \$opt::controlmaster, - "return=s" => \@opt::return, - "trc=s" => \@opt::trc, - "transfer" => \$opt::transfer, - "cleanup" => \$opt::cleanup, - "basefile|bf=s" => \@opt::basefile, - "B=s" => \$opt::retired, - "ctrlc|ctrl-c" => \$opt::ctrlc, - "noctrlc|no-ctrlc|no-ctrl-c" => \$opt::noctrlc, - "workdir|work-dir|wd=s" => \$opt::workdir, - "W=s" => \$opt::retired, - "tmpdir=s" => \$opt::tmpdir, - "tempdir=s" => \$opt::tmpdir, - "use-compress-program|compress-program=s" => \$opt::compress_program, - "use-decompress-program|decompress-program=s" => \$opt::decompress_program, - "compress" => \$opt::compress, - "tty" => \$opt::tty, - "T" => \$opt::retired, - "halt-on-error|halt=s" => \$opt::halt_on_error, - "H=i" => \$opt::retired, - "retries=i" => \$opt::retries, - "dry-run|dryrun" => \$opt::dryrun, - "progress" => \$opt::progress, - "eta" => \$opt::eta, - "bar" => \$opt::bar, - "arg-sep|argsep=s" => \$opt::arg_sep, - "arg-file-sep|argfilesep=s" => \$opt::arg_file_sep, - "trim=s" => \$opt::trim, - "env=s" => \@opt::env, - "recordenv|record-env" => \$opt::record_env, - "plain" => \$opt::plain, - "profile|J=s" => \@opt::profile, - "pipe|spreadstdin" => \$opt::pipe, - "robin|round-robin|roundrobin" => \$opt::roundrobin, - "recstart=s" => \$opt::recstart, - "recend=s" => \$opt::recend, - "regexp|regex" => \$opt::regexp, - "remove-rec-sep|removerecsep|rrs" => \$opt::remove_rec_sep, - "files|output-as-files|outputasfiles" => \$opt::files, - "block|block-size|blocksize=s" => \$opt::blocksize, - "tollef" => \$opt::retired, - "gnu" => \$opt::gnu, - "xapply" => \$opt::xapply, - "bibtex" => \$opt::bibtex, - "nn|nonotice|no-notice" => \$opt::no_notice, - # xargs-compatibility - implemented, man, testsuite - "max-procs|P=s" => \$opt::jobs, - "delimiter|d=s" => \$opt::d, - "max-chars|s=i" => \$opt::max_chars, - "arg-file|a=s" => \@opt::a, - "no-run-if-empty|r" => \$opt::r, - "replace|i:s" => \$opt::i, - "E=s" => \$opt::eof, - "eof|e:s" => \$opt::eof, - "max-args|n=i" => \$opt::max_args, - "max-replace-args|N=i" => \$opt::max_replace_args, - "colsep|col-sep|C=s" => \$opt::colsep, - "help|h" => \$opt::help, - "L=f" => \$opt::L, - "max-lines|l:f" => \$opt::max_lines, - "interactive|p" => \$opt::p, - "verbose|t" => \$opt::verbose, - "version|V" => \$opt::version, - "minversion|min-version=i" => \$opt::minversion, - "show-limits|showlimits" => \$opt::show_limits, - "exit|x" => \$opt::x, - # Semaphore - "semaphore" => \$opt::semaphore, - "semaphoretimeout=i" => \$opt::semaphoretimeout, - "semaphorename|id=s" => \$opt::semaphorename, - "fg" => \$opt::fg, - "bg" => \$opt::bg, - "wait" => \$opt::wait, - # Shebang #!/usr/bin/parallel --shebang - "shebang|hashbang" => \$opt::shebang, - "internal-pipe-means-argfiles" => \$opt::internal_pipe_means_argfiles, - "Y" => \$opt::retired, - "skip-first-line" => \$opt::skip_first_line, - "header=s" => \$opt::header, - "cat" => \$opt::cat, - "fifo" => \$opt::fifo, - "pipepart|pipe-part" => \$opt::pipepart, - "hgrp|hostgroup|hostgroups" => \$opt::hostgroups, - ); -} - -sub get_options_from_array { - # Run GetOptions on @array - # Input: - # $array_ref = ref to @ARGV to parse - # @keep_only = Keep only these options - # Uses: - # @ARGV - # Returns: - # true if parsing worked - # false if parsing failed - # @$array_ref is changed - my ($array_ref, @keep_only) = @_; - if(not @$array_ref) { - # Empty array: No need to look more at that - return 1; - } - # A bit of shuffling of @ARGV needed as GetOptionsFromArray is not - # supported everywhere - my @save_argv; - my $this_is_ARGV = (\@::ARGV == $array_ref); - if(not $this_is_ARGV) { - @save_argv = @::ARGV; - @::ARGV = @{$array_ref}; - } - # If @keep_only set: Ignore all values except @keep_only - my %options = options_hash(); - if(@keep_only) { - my (%keep,@dummy); - @keep{@keep_only} = @keep_only; - for my $k (grep { not $keep{$_} } keys %options) { - # Store the value of the option in @dummy - $options{$k} = \@dummy; - } - } - my $retval = GetOptions(%options); - if(not $this_is_ARGV) { - @{$array_ref} = @::ARGV; - @::ARGV = @save_argv; - } - return $retval; -} - -sub parse_options { - # Returns: N/A - # Defaults: - $Global::version = 20141122; - $Global::progname = 'parallel'; - $Global::infinity = 2**31; - $Global::debug = 0; - $Global::verbose = 0; - $Global::quoting = 0; - # Read only table with default --rpl values - %Global::replace = - ( - '{}' => '', - '{#}' => '1 $_=$job->seq()', - '{%}' => '1 $_=$job->slot()', - '{/}' => 's:.*/::', - '{//}' => '$Global::use{"File::Basename"} ||= eval "use File::Basename; 1;"; $_ = dirname($_);', - '{/.}' => 's:.*/::; s:\.[^/.]+$::;', - '{.}' => 's:\.[^/.]+$::', - ); - %Global::plus = - ( - # {} = {+/}/{/} - # = {.}.{+.} = {+/}/{/.}.{+.} - # = {..}.{+..} = {+/}/{/..}.{+..} - # = {...}.{+...} = {+/}/{/...}.{+...} - '{+/}' => 's:/[^/]*$::', - '{+.}' => 's:.*\.::', - '{+..}' => 's:.*\.([^.]*\.):$1:', - '{+...}' => 's:.*\.([^.]*\.[^.]*\.):$1:', - '{..}' => 's:\.[^/.]+$::; s:\.[^/.]+$::', - '{...}' => 's:\.[^/.]+$::; s:\.[^/.]+$::; s:\.[^/.]+$::', - '{/..}' => 's:.*/::; s:\.[^/.]+$::; s:\.[^/.]+$::', - '{/...}' => 's:.*/::; s:\.[^/.]+$::; s:\.[^/.]+$::; s:\.[^/.]+$::', - ); - # Modifiable copy of %Global::replace - %Global::rpl = %Global::replace; - $Global::parens = "{==}"; - $/="\n"; - $Global::ignore_empty = 0; - $Global::interactive = 0; - $Global::stderr_verbose = 0; - $Global::default_simultaneous_sshlogins = 9; - $Global::exitstatus = 0; - $Global::halt_on_error_exitstatus = 0; - $Global::arg_sep = ":::"; - $Global::arg_file_sep = "::::"; - $Global::trim = 'n'; - $Global::max_jobs_running = 0; - $Global::job_already_run = ''; - $ENV{'TMPDIR'} ||= "/tmp"; - - @ARGV=read_options(); - - if(@opt::v) { $Global::verbose = $#opt::v+1; } # Convert -v -v to v=2 - $Global::debug = $opt::D; - $Global::shell = $ENV{'PARALLEL_SHELL'} || parent_shell($$) || $ENV{'SHELL'} || "/bin/sh"; - if(defined $opt::X) { $Global::ContextReplace = 1; } - if(defined $opt::silent) { $Global::verbose = 0; } - if(defined $opt::0) { $/ = "\0"; } - if(defined $opt::d) { my $e="sprintf \"$opt::d\""; $/ = eval $e; } - if(defined $opt::p) { $Global::interactive = $opt::p; } - if(defined $opt::q) { $Global::quoting = 1; } - if(defined $opt::r) { $Global::ignore_empty = 1; } - if(defined $opt::verbose) { $Global::stderr_verbose = 1; } - # Deal with --rpl - sub rpl { - # Modify %Global::rpl - # Replace $old with $new - my ($old,$new) = @_; - if($old ne $new) { - $Global::rpl{$new} = $Global::rpl{$old}; - delete $Global::rpl{$old}; - } - } - if(defined $opt::parens) { $Global::parens = $opt::parens; } - my $parenslen = 0.5*length $Global::parens; - $Global::parensleft = substr($Global::parens,0,$parenslen); - $Global::parensright = substr($Global::parens,$parenslen); - if(defined $opt::plus) { %Global::rpl = (%Global::plus,%Global::rpl); } - if(defined $opt::I) { rpl('{}',$opt::I); } - if(defined $opt::U) { rpl('{.}',$opt::U); } - if(defined $opt::i and $opt::i) { rpl('{}',$opt::i); } - if(defined $opt::basenamereplace) { rpl('{/}',$opt::basenamereplace); } - if(defined $opt::dirnamereplace) { rpl('{//}',$opt::dirnamereplace); } - if(defined $opt::seqreplace) { rpl('{#}',$opt::seqreplace); } - if(defined $opt::slotreplace) { rpl('{%}',$opt::slotreplace); } - if(defined $opt::basenameextensionreplace) { - rpl('{/.}',$opt::basenameextensionreplace); - } - for(@opt::rpl) { - # Create $Global::rpl entries for --rpl options - # E.g: "{..} s:\.[^.]+$:;s:\.[^.]+$:;" - my ($shorthand,$long) = split/ /,$_,2; - $Global::rpl{$shorthand} = $long; - } - if(defined $opt::eof) { $Global::end_of_file_string = $opt::eof; } - if(defined $opt::max_args) { $Global::max_number_of_args = $opt::max_args; } - if(defined $opt::timeout) { $Global::timeoutq = TimeoutQueue->new($opt::timeout); } - if(defined $opt::tmpdir) { $ENV{'TMPDIR'} = $opt::tmpdir; } - if(defined $opt::help) { die_usage(); } - if(defined $opt::colsep) { $Global::trim = 'lr'; } - if(defined $opt::header) { $opt::colsep = defined $opt::colsep ? $opt::colsep : "\t"; } - if(defined $opt::trim) { $Global::trim = $opt::trim; } - if(defined $opt::arg_sep) { $Global::arg_sep = $opt::arg_sep; } - if(defined $opt::arg_file_sep) { $Global::arg_file_sep = $opt::arg_file_sep; } - if(defined $opt::number_of_cpus) { print SSHLogin::no_of_cpus(),"\n"; wait_and_exit(0); } - if(defined $opt::number_of_cores) { - print SSHLogin::no_of_cores(),"\n"; wait_and_exit(0); - } - if(defined $opt::max_line_length_allowed) { - print Limits::Command::real_max_length(),"\n"; wait_and_exit(0); - } - if(defined $opt::version) { version(); wait_and_exit(0); } - if(defined $opt::bibtex) { bibtex(); wait_and_exit(0); } - if(defined $opt::record_env) { record_env(); wait_and_exit(0); } - if(defined $opt::show_limits) { show_limits(); } - if(@opt::sshlogin) { @Global::sshlogin = @opt::sshlogin; } - if(@opt::sshloginfile) { read_sshloginfiles(@opt::sshloginfile); } - if(@opt::return) { push @Global::ret_files, @opt::return; } - if(not defined $opt::recstart and - not defined $opt::recend) { $opt::recend = "\n"; } - if(not defined $opt::blocksize) { $opt::blocksize = "1M"; } - $opt::blocksize = multiply_binary_prefix($opt::blocksize); - if(defined $opt::controlmaster) { $opt::noctrlc = 1; } - if(defined $opt::semaphore) { $Global::semaphore = 1; } - if(defined $opt::semaphoretimeout) { $Global::semaphore = 1; } - if(defined $opt::semaphorename) { $Global::semaphore = 1; } - if(defined $opt::fg) { $Global::semaphore = 1; } - if(defined $opt::bg) { $Global::semaphore = 1; } - if(defined $opt::wait) { $Global::semaphore = 1; } - if(defined $opt::halt_on_error and - $opt::halt_on_error=~/%/) { $opt::halt_on_error /= 100; } - if(defined $opt::timeout and $opt::timeout !~ /^\d+(\.\d+)?%?$/) { - ::error("--timeout must be seconds or percentage\n"); - wait_and_exit(255); - } - if(defined $opt::minversion) { - print $Global::version,"\n"; - if($Global::version < $opt::minversion) { - wait_and_exit(255); - } else { - wait_and_exit(0); - } - } - if(not defined $opt::delay) { - # Set --delay to --sshdelay if not set - $opt::delay = $opt::sshdelay; - } - if($opt::compress_program) { - $opt::compress = 1; - $opt::decompress_program ||= $opt::compress_program." -dc"; - } - if($opt::compress) { - my ($compress, $decompress) = find_compression_program(); - $opt::compress_program ||= $compress; - $opt::decompress_program ||= $decompress; - } - if(defined $opt::nonall) { - # Append a dummy empty argument - push @ARGV, $Global::arg_sep, ""; - } - if(defined $opt::tty) { - # Defaults for --tty: -j1 -u - # Can be overridden with -jXXX -g - if(not defined $opt::jobs) { - $opt::jobs = 1; - } - if(not defined $opt::group) { - $opt::ungroup = 0; - } - } - if(@opt::trc) { - push @Global::ret_files, @opt::trc; - $opt::transfer = 1; - $opt::cleanup = 1; - } - if(defined $opt::max_lines) { - if($opt::max_lines eq "-0") { - # -l -0 (swallowed -0) - $opt::max_lines = 1; - $opt::0 = 1; - $/ = "\0"; - } elsif ($opt::max_lines == 0) { - # If not given (or if 0 is given) => 1 - $opt::max_lines = 1; - } - $Global::max_lines = $opt::max_lines; - if(not $opt::pipe) { - # --pipe -L means length of record - not max_number_of_args - $Global::max_number_of_args ||= $Global::max_lines; - } - } - - # Read more than one arg at a time (-L, -N) - if(defined $opt::L) { - $Global::max_lines = $opt::L; - if(not $opt::pipe) { - # --pipe -L means length of record - not max_number_of_args - $Global::max_number_of_args ||= $Global::max_lines; - } - } - if(defined $opt::max_replace_args) { - $Global::max_number_of_args = $opt::max_replace_args; - $Global::ContextReplace = 1; - } - if((defined $opt::L or defined $opt::max_replace_args) - and - not ($opt::xargs or $opt::m)) { - $Global::ContextReplace = 1; - } - if(defined $opt::tag and not defined $opt::tagstring) { - $opt::tagstring = "\257<\257>"; # Default = {} - } - if(defined $opt::pipepart and - (defined $opt::L or defined $opt::max_lines - or defined $opt::max_replace_args)) { - ::error("--pipepart is incompatible with --max-replace-args, ", - "--max-lines, and -L.\n"); - wait_and_exit(255); - } - if(grep /^$Global::arg_sep$|^$Global::arg_file_sep$/o, @ARGV) { - # Deal with ::: and :::: - @ARGV=read_args_from_command_line(); - } - - # Semaphore defaults - # Must be done before computing number of processes and max_line_length - # because when running as a semaphore GNU Parallel does not read args - $Global::semaphore ||= ($0 =~ m:(^|/)sem$:); # called as 'sem' - if($Global::semaphore) { - # A semaphore does not take input from neither stdin nor file - @opt::a = ("/dev/null"); - push(@Global::unget_argv, [Arg->new("")]); - $Semaphore::timeout = $opt::semaphoretimeout || 0; - if(defined $opt::semaphorename) { - $Semaphore::name = $opt::semaphorename; - } else { - $Semaphore::name = `tty`; - chomp $Semaphore::name; - } - $Semaphore::fg = $opt::fg; - $Semaphore::wait = $opt::wait; - $Global::default_simultaneous_sshlogins = 1; - if(not defined $opt::jobs) { - $opt::jobs = 1; - } - if($Global::interactive and $opt::bg) { - ::error("Jobs running in the ". - "background cannot be interactive.\n"); - ::wait_and_exit(255); - } - } - if(defined $opt::eta) { - $opt::progress = $opt::eta; - } - if(defined $opt::bar) { - $opt::progress = $opt::bar; - } - if(defined $opt::retired) { - ::error("-g has been retired. Use --group.\n"); - ::error("-B has been retired. Use --bf.\n"); - ::error("-T has been retired. Use --tty.\n"); - ::error("-U has been retired. Use --er.\n"); - ::error("-W has been retired. Use --wd.\n"); - ::error("-Y has been retired. Use --shebang.\n"); - ::error("-H has been retired. Use --halt.\n"); - ::error("--tollef has been retired. Use -u -q --arg-sep -- and --load for -l.\n"); - ::wait_and_exit(255); - } - citation_notice(); - - parse_sshlogin(); - parse_env_var(); - - if(remote_hosts() and ($opt::X or $opt::m or $opt::xargs)) { - # As we do not know the max line length on the remote machine - # long commands generated by xargs may fail - # If opt_N is set, it is probably safe - ::warning("Using -X or -m with --sshlogin may fail.\n"); - } - - if(not defined $opt::jobs) { - $opt::jobs = "100%"; - } - open_joblog(); -} - -sub env_quote { - # Input: - # $v = value to quote - # Returns: - # $v = value quoted as environment variable - my $v = $_[0]; - $v =~ s/([\\])/\\$1/g; - $v =~ s/([\[\] \#\'\&\<\>\(\)\;\{\}\t\"\$\`\*\174\!\?\~])/\\$1/g; - $v =~ s/\n/"\n"/g; - return $v; -} - -sub record_env { - # Record current %ENV-keys in ~/.parallel/ignored_vars - # Returns: N/A - my $ignore_filename = $ENV{'HOME'} . "/.parallel/ignored_vars"; - if(open(my $vars_fh, ">", $ignore_filename)) { - print $vars_fh map { $_,"\n" } keys %ENV; - } else { - ::error("Cannot write to $ignore_filename\n"); - ::wait_and_exit(255); - } -} - -sub parse_env_var { - # Parse --env and set $Global::envvar, $Global::envwarn and $Global::envvarlen - # - # Bash functions must be parsed to export them remotely - # Pre-shellshock style bash function: - # myfunc=() {... - # Post-shellshock style bash function: - # BASH_FUNC_myfunc()=() {... - # - # Uses: - # $Global::envvar = eval string that will set variables in both bash and csh - # $Global::envwarn = If functions are used: Give warning in csh - # $Global::envvarlen = length of $Global::envvar - # @opt::env - # $Global::shell - # %ENV - # Returns: N/A - $Global::envvar = ""; - $Global::envwarn = ""; - my @vars = ('parallel_bash_environment'); - for my $varstring (@opt::env) { - # Split up --env VAR1,VAR2 - push @vars, split /,/, $varstring; - } - if(grep { /^_$/ } @vars) { - # --env _ - # Include all vars that are not in a clean environment - if(open(my $vars_fh, "<", $ENV{'HOME'} . "/.parallel/ignored_vars")) { - my @ignore = <$vars_fh>; - chomp @ignore; - my %ignore; - @ignore{@ignore} = @ignore; - close $vars_fh; - push @vars, grep { not defined $ignore{$_} } keys %ENV; - @vars = grep { not /^_$/ } @vars; - } else { - ::error("Run '$Global::progname --record-env' in a clean environment first.\n"); - ::wait_and_exit(255); - } - } - # Duplicate vars as BASH functions to include post-shellshock functions. - # So --env myfunc should also look for BASH_FUNC_myfunc() - @vars = map { $_, "BASH_FUNC_$_()" } @vars; - # Keep only defined variables - @vars = grep { defined($ENV{$_}) } @vars; - # Pre-shellshock style bash function: - # myfunc=() { echo myfunc - # } - # Post-shellshock style bash function: - # BASH_FUNC_myfunc()=() { echo myfunc - # } - my @bash_functions = grep { substr($ENV{$_},0,4) eq "() {" } @vars; - my @non_functions = grep { substr($ENV{$_},0,4) ne "() {" } @vars; - if(@bash_functions) { - # Functions are not supported for all shells - if($Global::shell !~ m:/(bash|rbash|zsh|rzsh|dash|ksh):) { - ::warning("Shell functions may not be supported in $Global::shell\n"); - } - } - - # Pre-shellschock names are without () - my @bash_pre_shellshock = grep { not /\(\)/ } @bash_functions; - # Post-shellschock names are with () - my @bash_post_shellshock = grep { /\(\)/ } @bash_functions; - - my @qcsh = (map { my $a=$_; "setenv $a " . env_quote($ENV{$a}) } - grep { not /^parallel_bash_environment$/ } @non_functions); - my @qbash = (map { my $a=$_; "export $a=" . env_quote($ENV{$a}) } - @non_functions, @bash_pre_shellshock); - - push @qbash, map { my $a=$_; "eval $a\"\$$a\"" } @bash_pre_shellshock; - push @qbash, map { /BASH_FUNC_(.*)\(\)/; "$1 $ENV{$_}" } @bash_post_shellshock; - - #ssh -tt -oLogLevel=quiet lo 'eval `echo PARALLEL_SEQ='$PARALLEL_SEQ'\;export PARALLEL_SEQ\; PARALLEL_PID='$PARALLEL_PID'\;export PARALLEL_PID` ;' tty\ \>/dev/null\ \&\&\ stty\ isig\ -onlcr\ -echo\;echo\ \$SHELL\ \|\ grep\ \"/t\\\{0,1\\\}csh\"\ \>\ /dev/null\ \&\&\ setenv\ BASH_FUNC_myfunc\ \\\(\\\)\\\ \\\{\\\ \\\ echo\\\ a\"' - #'\"\\\}\ \|\|\ myfunc\(\)\ \{\ \ echo\ a' - #'\}\ \;myfunc\ 1; - - # Check if any variables contain \n - if(my @v = map { s/BASH_FUNC_(.*)\(\)/$1/; $_ } grep { $ENV{$_}=~/\n/ } @vars) { - # \n is bad for csh and will cause it to fail. - $Global::envwarn = ::shell_quote_scalar(q{echo $SHELL | egrep "/t?csh" > /dev/null && echo CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset }."@v".q{ && exec false;}."\n\n") . $Global::envwarn; - } - - if(not @qcsh) { push @qcsh, "true"; } - if(not @qbash) { push @qbash, "true"; } - # Create lines like: - # echo $SHELL | grep "/t\\{0,1\\}csh" >/dev/null && setenv V1 val1 && setenv V2 val2 || export V1=val1 && export V2=val2 ; echo "$V1$V2" - if(@vars) { - $Global::envvar .= - join"", - (q{echo $SHELL | grep "/t\\{0,1\\}csh" > /dev/null && } - . join(" && ", @qcsh) - . q{ || } - . join(" && ", @qbash) - .q{;}); - if($ENV{'parallel_bash_environment'}) { - $Global::envvar .= 'eval "$parallel_bash_environment";'."\n"; - } - } - $Global::envvarlen = length $Global::envvar; -} - -sub open_joblog { - # Open joblog as specified by --joblog - # Uses: - # $opt::resume - # $opt::resume_failed - # $opt::joblog - # $opt::results - # $Global::job_already_run - # %Global::fd - my $append = 0; - if(($opt::resume or $opt::resume_failed) - and - not ($opt::joblog or $opt::results)) { - ::error("--resume and --resume-failed require --joblog or --results.\n"); - ::wait_and_exit(255); - } - if($opt::joblog) { - if($opt::resume || $opt::resume_failed) { - if(open(my $joblog_fh, "<", $opt::joblog)) { - # Read the joblog - $append = <$joblog_fh>; # If there is a header: Open as append later - my $joblog_regexp; - if($opt::resume_failed) { - # Make a regexp that only matches commands with exit+signal=0 - # 4 host 1360490623.067 3.445 1023 1222 0 0 command - $joblog_regexp='^(\d+)(?:\t[^\t]+){5}\t0\t0\t'; - } else { - # Just match the job number - $joblog_regexp='^(\d+)'; - } - while(<$joblog_fh>) { - if(/$joblog_regexp/o) { - # This is 30% faster than set_job_already_run($1); - vec($Global::job_already_run,($1||0),1) = 1; - } elsif(not /\d+\s+[^\s]+\s+([0-9.]+\s+){6}/) { - ::error("Format of '$opt::joblog' is wrong: $_"); - ::wait_and_exit(255); - } - } - close $joblog_fh; - } - } - if($append) { - # Append to joblog - if(not open($Global::joblog, ">>", $opt::joblog)) { - ::error("Cannot append to --joblog $opt::joblog.\n"); - ::wait_and_exit(255); - } - } else { - if($opt::joblog eq "-") { - # Use STDOUT as joblog - $Global::joblog = $Global::fd{1}; - } elsif(not open($Global::joblog, ">", $opt::joblog)) { - # Overwrite the joblog - ::error("Cannot write to --joblog $opt::joblog.\n"); - ::wait_and_exit(255); - } - print $Global::joblog - join("\t", "Seq", "Host", "Starttime", "JobRuntime", - "Send", "Receive", "Exitval", "Signal", "Command" - ). "\n"; - } - } -} - -sub find_compression_program { - # Find a fast compression program - # Returns: - # $compress_program = compress program with options - # $decompress_program = decompress program with options - - # Search for these. Sorted by speed - my @prg = qw(lzop pigz pxz gzip plzip pbzip2 lzma xz lzip bzip2); - for my $p (@prg) { - if(which($p)) { - return ("$p -c -1","$p -dc"); - } - } - # Fall back to cat - return ("cat","cat"); -} - - -sub read_options { - # Read options from command line, profile and $PARALLEL - # Uses: - # $opt::shebang_wrap - # $opt::shebang - # @ARGV - # $opt::plain - # @opt::profile - # $ENV{'HOME'} - # $ENV{'PARALLEL'} - # Returns: - # @ARGV_no_opt = @ARGV without --options - - # This must be done first as this may exec myself - if(defined $ARGV[0] and ($ARGV[0] =~ /^--shebang/ or - $ARGV[0] =~ /^--shebang-?wrap/ or - $ARGV[0] =~ /^--hashbang/)) { - # Program is called from #! line in script - # remove --shebang-wrap if it is set - $opt::shebang_wrap = ($ARGV[0] =~ s/^--shebang-?wrap *//); - # remove --shebang if it is set - $opt::shebang = ($ARGV[0] =~ s/^--shebang *//); - # remove --hashbang if it is set - $opt::shebang .= ($ARGV[0] =~ s/^--hashbang *//); - if($opt::shebang) { - my $argfile = shell_quote_scalar(pop @ARGV); - # exec myself to split $ARGV[0] into separate fields - exec "$0 --skip-first-line -a $argfile @ARGV"; - } - if($opt::shebang_wrap) { - my @options; - my @parser; - if ($^O eq 'freebsd') { - # FreeBSD's #! puts different values in @ARGV than Linux' does. - my @nooptions = @ARGV; - get_options_from_array(\@nooptions); - while($#ARGV > $#nooptions) { - push @options, shift @ARGV; - } - while(@ARGV and $ARGV[0] ne ":::") { - push @parser, shift @ARGV; - } - if(@ARGV and $ARGV[0] eq ":::") { - shift @ARGV; - } - } else { - @options = shift @ARGV; - } - my $script = shell_quote_scalar(shift @ARGV); - # exec myself to split $ARGV[0] into separate fields - exec "$0 --internal-pipe-means-argfiles @options @parser $script ::: @ARGV"; - } - } - - Getopt::Long::Configure("bundling","require_order"); - my @ARGV_copy = @ARGV; - # Check if there is a --profile to set @opt::profile - get_options_from_array(\@ARGV_copy,"profile|J=s","plain") || die_usage(); - my @ARGV_profile = (); - my @ARGV_env = (); - if(not $opt::plain) { - # Add options from .parallel/config and other profiles - my @config_profiles = ( - "/etc/parallel/config", - $ENV{'HOME'}."/.parallel/config", - $ENV{'HOME'}."/.parallelrc"); - my @profiles = @config_profiles; - if(@opt::profile) { - # --profile overrides default profiles - @profiles = (); - for my $profile (@opt::profile) { - if(-r $profile) { - push @profiles, $profile; - } else { - push @profiles, $ENV{'HOME'}."/.parallel/".$profile; - } - } - } - for my $profile (@profiles) { - if(-r $profile) { - open (my $in_fh, "<", $profile) || ::die_bug("read-profile: $profile"); - while(<$in_fh>) { - /^\s*\#/ and next; - chomp; - push @ARGV_profile, shellwords($_); - } - close $in_fh; - } else { - if(grep /^$profile$/, @config_profiles) { - # config file is not required to exist - } else { - ::error("$profile not readable.\n"); - wait_and_exit(255); - } - } - } - # Add options from shell variable $PARALLEL - if($ENV{'PARALLEL'}) { - @ARGV_env = shellwords($ENV{'PARALLEL'}); - } - } - Getopt::Long::Configure("bundling","require_order"); - get_options_from_array(\@ARGV_profile) || die_usage(); - get_options_from_array(\@ARGV_env) || die_usage(); - get_options_from_array(\@ARGV) || die_usage(); - - # Prepend non-options to @ARGV (such as commands like 'nice') - unshift @ARGV, @ARGV_profile, @ARGV_env; - return @ARGV; -} - -sub read_args_from_command_line { - # Arguments given on the command line after: - # ::: ($Global::arg_sep) - # :::: ($Global::arg_file_sep) - # Removes the arguments from @ARGV and: - # - puts filenames into -a - # - puts arguments into files and add the files to -a - # Input: - # @::ARGV = command option ::: arg arg arg :::: argfiles - # Uses: - # $Global::arg_sep - # $Global::arg_file_sep - # $opt::internal_pipe_means_argfiles - # $opt::pipe - # @opt::a - # Returns: - # @argv_no_argsep = @::ARGV without ::: and :::: and following args - my @new_argv = (); - for(my $arg = shift @ARGV; @ARGV; $arg = shift @ARGV) { - if($arg eq $Global::arg_sep - or - $arg eq $Global::arg_file_sep) { - my $group = $arg; # This group of arguments is args or argfiles - my @group; - while(defined ($arg = shift @ARGV)) { - if($arg eq $Global::arg_sep - or - $arg eq $Global::arg_file_sep) { - # exit while loop if finding new separator - last; - } else { - # If not hitting ::: or :::: - # Append it to the group - push @group, $arg; - } - } - - if($group eq $Global::arg_file_sep - or ($opt::internal_pipe_means_argfiles and $opt::pipe) - ) { - # Group of file names on the command line. - # Append args into -a - push @opt::a, @group; - } elsif($group eq $Global::arg_sep) { - # Group of arguments on the command line. - # Put them into a file. - # Create argfile - my ($outfh,$name) = ::tmpfile(SUFFIX => ".arg"); - unlink($name); - # Put args into argfile - print $outfh map { $_,$/ } @group; - seek $outfh, 0, 0; - # Append filehandle to -a - push @opt::a, $outfh; - } else { - ::die_bug("Unknown command line group: $group"); - } - if(defined($arg)) { - # $arg is ::: or :::: - redo; - } else { - # $arg is undef -> @ARGV empty - last; - } - } - push @new_argv, $arg; - } - # Output: @ARGV = command to run with options - return @new_argv; -} - -sub cleanup { - # Returns: N/A - if(@opt::basefile) { cleanup_basefile(); } -} - -sub __QUOTING_ARGUMENTS_FOR_SHELL__ {} - -sub shell_quote { - # Input: - # @strings = strings to be quoted - # Output: - # @shell_quoted_strings = string quoted with \ as needed by the shell - my @strings = (@_); - for my $a (@strings) { - $a =~ s/([\002-\011\013-\032\\\#\?\`\(\)\{\}\[\]\*\>\<\~\|\; \"\!\$\&\'\202-\377])/\\$1/g; - $a =~ s/[\n]/'\n'/g; # filenames with '\n' is quoted using \' - } - return wantarray ? @strings : "@strings"; -} - -sub shell_quote_empty { - # Inputs: - # @strings = strings to be quoted - # Returns: - # @quoted_strings = empty strings quoted as ''. - my @strings = shell_quote(@_); - for my $a (@strings) { - if($a eq "") { - $a = "''"; - } - } - return wantarray ? @strings : "@strings"; -} - -sub shell_quote_scalar { - # Quote the string so shell will not expand any special chars - # Inputs: - # $string = string to be quoted - # Returns: - # $shell_quoted = string quoted with \ as needed by the shell - my $a = $_[0]; - if(defined $a) { - # $a =~ s/([\002-\011\013-\032\\\#\?\`\(\)\{\}\[\]\*\>\<\~\|\; \"\!\$\&\'\202-\377])/\\$1/g; - # This is 1% faster than the above - $a =~ s/[\002-\011\013-\032\\\#\?\`\(\)\{\}\[\]\*\>\<\~\|\; \"\!\$\&\'\202-\377]/\\$&/go; - $a =~ s/[\n]/'\n'/go; # filenames with '\n' is quoted using \' - } - return $a; -} - -sub shell_quote_file { - # Quote the string so shell will not expand any special chars and prepend ./ if needed - # Input: - # $filename = filename to be shell quoted - # Returns: - # $quoted_filename = filename quoted with \ as needed by the shell and ./ if needed - my $a = shell_quote_scalar(shift); - if(defined $a) { - if($a =~ m:^/: or $a =~ m:^\./:) { - # /abs/path or ./rel/path => skip - } else { - # rel/path => ./rel/path - $a = "./".$a; - } - } - return $a; -} - -sub shellwords { - # Input: - # $string = shell line - # Returns: - # @shell_words = $string split into words as shell would do - $Global::use{"Text::ParseWords"} ||= eval "use Text::ParseWords; 1;"; - return Text::ParseWords::shellwords(@_); -} - - -sub __FILEHANDLES__ {} - - -sub save_stdin_stdout_stderr { - # Remember the original STDIN, STDOUT and STDERR - # and file descriptors opened by the shell (e.g. 3>/tmp/foo) - # Uses: - # %Global::fd - # $Global::original_stderr - # $Global::original_stdin - # Returns: N/A - - # Find file descriptors that are already opened (by the shell) - for my $fdno (1..61) { - # /dev/fd/62 and above are used by bash for <(cmd) - my $fh; - # 2-argument-open is used to be compatible with old perl 5.8.0 - # bug #43570: Perl 5.8.0 creates 61 files - if(open($fh,">&=$fdno")) { - $Global::fd{$fdno}=$fh; - } - } - open $Global::original_stderr, ">&", "STDERR" or - ::die_bug("Can't dup STDERR: $!"); - open $Global::original_stdin, "<&", "STDIN" or - ::die_bug("Can't dup STDIN: $!"); - $Global::is_terminal = (-t $Global::original_stderr) && !$ENV{'CIRCLECI'} && !$ENV{'TRAVIS'}; -} - -sub enough_file_handles { - # Check that we have enough filehandles available for starting - # another job - # Uses: - # $opt::ungroup - # %Global::fd - # Returns: - # 1 if ungrouped (thus not needing extra filehandles) - # 0 if too few filehandles - # 1 if enough filehandles - if(not $opt::ungroup) { - my %fh; - my $enough_filehandles = 1; - # perl uses 7 filehandles for something? - # open3 uses 2 extra filehandles temporarily - # We need a filehandle for each redirected file descriptor - # (normally just STDOUT and STDERR) - for my $i (1..(7+2+keys %Global::fd)) { - $enough_filehandles &&= open($fh{$i}, "<", "/dev/null"); - } - for (values %fh) { close $_; } - return $enough_filehandles; - } else { - # Ungrouped does not need extra file handles - return 1; - } -} - -sub open_or_exit { - # Open a file name or exit if the file cannot be opened - # Inputs: - # $file = filehandle or filename to open - # Uses: - # $Global::stdin_in_opt_a - # $Global::original_stdin - # Returns: - # $fh = file handle to read-opened file - my $file = shift; - if($file eq "-") { - $Global::stdin_in_opt_a = 1; - return ($Global::original_stdin || *STDIN); - } - if(ref $file eq "GLOB") { - # This is an open filehandle - return $file; - } - my $fh = gensym; - if(not open($fh, "<", $file)) { - ::error("Cannot open input file `$file': No such file or directory.\n"); - wait_and_exit(255); - } - return $fh; -} - -sub __RUNNING_THE_JOBS_AND_PRINTING_PROGRESS__ {} - -# Variable structure: -# -# $Global::running{$pid} = Pointer to Job-object -# @Global::virgin_jobs = Pointer to Job-object that have received no input -# $Global::host{$sshlogin} = Pointer to SSHLogin-object -# $Global::total_running = total number of running jobs -# $Global::total_started = total jobs started - -sub init_run_jobs { - $Global::total_running = 0; - $Global::total_started = 0; - $Global::tty_taken = 0; - $SIG{USR1} = \&list_running_jobs; - $SIG{USR2} = \&toggle_progress; - if(@opt::basefile) { setup_basefile(); } -} - -{ - my $last_time; - my %last_mtime; - -sub start_more_jobs { - # Run start_another_job() but only if: - # * not $Global::start_no_new_jobs set - # * not JobQueue is empty - # * not load on server is too high - # * not server swapping - # * not too short time since last remote login - # Uses: - # $Global::max_procs_file - # $Global::max_procs_file_last_mod - # %Global::host - # @opt::sshloginfile - # $Global::start_no_new_jobs - # $opt::filter_hosts - # $Global::JobQueue - # $opt::pipe - # $opt::load - # $opt::noswap - # $opt::delay - # $Global::newest_starttime - # Returns: - # $jobs_started = number of jobs started - my $jobs_started = 0; - my $jobs_started_this_round = 0; - if($Global::start_no_new_jobs) { - return $jobs_started; - } - if(time - ($last_time||0) > 1) { - # At most do this every second - $last_time = time; - if($Global::max_procs_file) { - # --jobs filename - my $mtime = (stat($Global::max_procs_file))[9]; - if($mtime > $Global::max_procs_file_last_mod) { - # file changed: Force re-computing max_jobs_running - $Global::max_procs_file_last_mod = $mtime; - for my $sshlogin (values %Global::host) { - $sshlogin->set_max_jobs_running(undef); - } - } - } - if(@opt::sshloginfile) { - # Is --sshloginfile changed? - for my $slf (@opt::sshloginfile) { - my $actual_file = expand_slf_shorthand($slf); - my $mtime = (stat($actual_file))[9]; - $last_mtime{$actual_file} ||= $mtime; - if($mtime - $last_mtime{$actual_file} > 1) { - ::debug("run","--sshloginfile $actual_file changed. reload\n"); - $last_mtime{$actual_file} = $mtime; - # Reload $slf - # Empty sshlogins - @Global::sshlogin = (); - for (values %Global::host) { - # Don't start new jobs on any host - # except the ones added back later - $_->set_max_jobs_running(0); - } - # This will set max_jobs_running on the SSHlogins - read_sshloginfile($actual_file); - parse_sshlogin(); - $opt::filter_hosts and filter_hosts(); - setup_basefile(); - } - } - } - } - do { - $jobs_started_this_round = 0; - # This will start 1 job on each --sshlogin (if possible) - # thus distribute the jobs on the --sshlogins round robin - - for my $sshlogin (values %Global::host) { - if($Global::JobQueue->empty() and not $opt::pipe) { - # No more jobs in the queue - last; - } - debug("run", "Running jobs before on ", $sshlogin->string(), ": ", - $sshlogin->jobs_running(), "\n"); - if ($sshlogin->jobs_running() < $sshlogin->max_jobs_running()) { - if($opt::load and $sshlogin->loadavg_too_high()) { - # The load is too high or unknown - next; - } - if($opt::noswap and $sshlogin->swapping()) { - # The server is swapping - next; - } - if($sshlogin->too_fast_remote_login()) { - # It has been too short since - next; - } - if($opt::delay and $opt::delay > ::now() - $Global::newest_starttime) { - # It has been too short since last start - next; - } - debug("run", $sshlogin->string(), " has ", $sshlogin->jobs_running(), - " out of ", $sshlogin->max_jobs_running(), - " jobs running. Start another.\n"); - if(start_another_job($sshlogin) == 0) { - # No more jobs to start on this $sshlogin - debug("run","No jobs started on ", $sshlogin->string(), "\n"); - next; - } - $sshlogin->inc_jobs_running(); - $sshlogin->set_last_login_at(::now()); - $jobs_started++; - $jobs_started_this_round++; - } - debug("run","Running jobs after on ", $sshlogin->string(), ": ", - $sshlogin->jobs_running(), " of ", - $sshlogin->max_jobs_running(), "\n"); - } - } while($jobs_started_this_round); - - return $jobs_started; -} -} - -{ - my $no_more_file_handles_warned; - -sub start_another_job { - # If there are enough filehandles - # and JobQueue not empty - # and not $job is in joblog - # Then grab a job from Global::JobQueue, - # start it at sshlogin - # mark it as virgin_job - # Inputs: - # $sshlogin = the SSHLogin to start the job on - # Uses: - # $Global::JobQueue - # $opt::pipe - # $opt::results - # $opt::resume - # @Global::virgin_jobs - # Returns: - # 1 if another jobs was started - # 0 otherwise - my $sshlogin = shift; - # Do we have enough file handles to start another job? - if(enough_file_handles()) { - if($Global::JobQueue->empty() and not $opt::pipe) { - # No more commands to run - debug("start", "Not starting: JobQueue empty\n"); - return 0; - } else { - my $job; - # Skip jobs already in job log - # Skip jobs already in results - do { - $job = get_job_with_sshlogin($sshlogin); - if(not defined $job) { - # No command available for that sshlogin - debug("start", "Not starting: no jobs available for ", - $sshlogin->string(), "\n"); - return 0; - } - } while ($job->is_already_in_joblog() - or - ($opt::results and $opt::resume and $job->is_already_in_results())); - debug("start", "Command to run on '", $job->sshlogin()->string(), "': '", - $job->replaced(),"'\n"); - if($job->start()) { - if($opt::pipe) { - push(@Global::virgin_jobs,$job); - } - debug("start", "Started as seq ", $job->seq(), - " pid:", $job->pid(), "\n"); - return 1; - } else { - # Not enough processes to run the job. - # Put it back on the queue. - $Global::JobQueue->unget($job); - # Count down the number of jobs to run for this SSHLogin. - my $max = $sshlogin->max_jobs_running(); - if($max > 1) { $max--; } else { - ::error("No more processes: cannot run a single job. Something is wrong.\n"); - ::wait_and_exit(255); - } - $sshlogin->set_max_jobs_running($max); - # Sleep up to 300 ms to give other processes time to die - ::usleep(rand()*300); - ::warning("No more processes: ", - "Decreasing number of running jobs to $max. ", - "Raising ulimit -u or /etc/security/limits.conf may help.\n"); - return 0; - } - } - } else { - # No more file handles - $no_more_file_handles_warned++ or - ::warning("No more file handles. ", - "Raising ulimit -n or /etc/security/limits.conf may help.\n"); - return 0; - } -} -} - -$opt::min_progress_interval = 0; - -sub init_progress { - # Uses: - # $opt::bar - # Returns: - # list of computers for progress output - $|=1; - if (not $Global::is_terminal) { - $opt::min_progress_interval = 30; - } - if($opt::bar) { - return("",""); - } - my %progress = progress(); - return ("\nComputers / CPU cores / Max jobs to run\n", - $progress{'workerlist'}); -} - -sub drain_job_queue { - # Uses: - # $opt::progress - # $Global::original_stderr - # $Global::total_running - # $Global::max_jobs_running - # %Global::running - # $Global::JobQueue - # %Global::host - # $Global::start_no_new_jobs - # Returns: N/A - if($opt::progress) { - print $Global::original_stderr init_progress(); - } - my $last_header=""; - my $sleep = 0.2; - my $last_left = 1000000000; - my $last_progress_time = 0; - my $ps_reported = 0; - do { - while($Global::total_running > 0) { - debug($Global::total_running, "==", scalar - keys %Global::running," slots: ", $Global::max_jobs_running); - if($opt::pipe) { - # When using --pipe sometimes file handles are not closed properly - for my $job (values %Global::running) { - close $job->fh(0,"w"); - } - } - # When not connected to terminal, assume CI (e.g. CircleCI). In - # that case we want occasional progress output to prevent abort - # due to timeout with no output, but we also need to stop sending - # progress output if there has been no actual progress, so that - # the job can time out appropriately (CirecleCI: 10m) in case of - # a hung test. But without special output, it is extremely - # annoying to diagnose which test is hung, so we add that using - # `ps` below. - if($opt::progress and - ($Global::is_terminal or (time() - $last_progress_time) >= 30)) { - my %progress = progress(); - if($last_header ne $progress{'header'}) { - print $Global::original_stderr "\n", $progress{'header'}, "\n"; - $last_header = $progress{'header'}; - } - if ($Global::is_terminal) { - print $Global::original_stderr "\r",$progress{'status'}; - } - if ($last_left > $Global::left) { - if (not $Global::is_terminal) { - print $Global::original_stderr $progress{'status'},"\n"; - } - $last_progress_time = time(); - $ps_reported = 0; - } elsif (not $ps_reported and (time() - $last_progress_time) >= 60) { - # No progress in at least 60 seconds: run ps - print $Global::original_stderr "\n"; - system("ps", "-wf"); - $ps_reported = 1; - } - $last_left = $Global::left; - flush $Global::original_stderr; - } - if($Global::total_running < $Global::max_jobs_running - and not $Global::JobQueue->empty()) { - # These jobs may not be started because of loadavg - # or too little time between each ssh login. - if(start_more_jobs() > 0) { - # Exponential back-on if jobs were started - $sleep = $sleep/2+0.001; - } - } - # Sometimes SIGCHLD is not registered, so force reaper - $sleep = ::reap_usleep($sleep); - } - if(not $Global::JobQueue->empty()) { - # These jobs may not be started: - # * because there the --filter-hosts has removed all - if(not %Global::host) { - ::error("There are no hosts left to run on.\n"); - ::wait_and_exit(255); - } - # * because of loadavg - # * because of too little time between each ssh login. - start_more_jobs(); - $sleep = ::reap_usleep($sleep); - if($Global::max_jobs_running == 0) { - ::warning("There are no job slots available. Increase --jobs.\n"); - } - } - } while ($Global::total_running > 0 - or - not $Global::start_no_new_jobs and not $Global::JobQueue->empty()); - if($opt::progress) { - my %progress = progress(); - print $Global::original_stderr $opt::progress_sep, $progress{'status'}, "\n"; - flush $Global::original_stderr; - } -} - -sub toggle_progress { - # Turn on/off progress view - # Uses: - # $opt::progress - # $Global::original_stderr - # Returns: N/A - $opt::progress = not $opt::progress; - if($opt::progress) { - print $Global::original_stderr init_progress(); - } -} - -sub progress { - # Uses: - # $opt::bar - # $opt::eta - # %Global::host - # $Global::total_started - # Returns: - # $workerlist = list of workers - # $header = that will fit on the screen - # $status = message that will fit on the screen - if($opt::bar) { - return ("workerlist" => "", "header" => "", "status" => bar()); - } - my $eta = ""; - my ($status,$header)=("",""); - if($opt::eta) { - my($total, $completed, $left, $pctcomplete, $avgtime, $this_eta) = - compute_eta(); - $eta = sprintf("ETA: %ds Left: %d AVG: %.2fs ", - $this_eta, $left, $avgtime); - $Global::left = $left; - } - my $termcols = terminal_columns(); - my @workers = sort keys %Global::host; - my %sshlogin = map { $_ eq ":" ? ($_=>"local") : ($_=>$_) } @workers; - my $workerno = 1; - my %workerno = map { ($_=>$workerno++) } @workers; - my $workerlist = ""; - for my $w (@workers) { - $workerlist .= - $workerno{$w}.":".$sshlogin{$w} ." / ". - ($Global::host{$w}->ncpus() || "-")." / ". - $Global::host{$w}->max_jobs_running()."\n"; - } - $status = "x"x($termcols+1); - if(length $status > $termcols) { - # sshlogin1:XX/XX/XX%/XX.Xs sshlogin2:XX/XX/XX%/XX.Xs sshlogin3:XX/XX/XX%/XX.Xs - $header = "Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete"; - $status = $eta . - join(" ",map - { - if($Global::total_started) { - my $completed = ($Global::host{$_}->jobs_completed()||0); - my $running = $Global::host{$_}->jobs_running(); - my $time = $completed ? (time-$^T)/($completed) : "0"; - sprintf("%s:%d/%d/%d%%/%.1fs ", - $sshlogin{$_}, $running, $completed, - ($running+$completed)*100 - / $Global::total_started, $time); - } - } @workers); - } - if(length $status > $termcols) { - # 1:XX/XX/XX%/XX.Xs 2:XX/XX/XX%/XX.Xs 3:XX/XX/XX%/XX.Xs 4:XX/XX/XX%/XX.Xs - $header = "Computer:jobs running/jobs completed/%of started jobs"; - $status = $eta . - join(" ",map - { - my $completed = ($Global::host{$_}->jobs_completed()||0); - my $running = $Global::host{$_}->jobs_running(); - my $time = $completed ? (time-$^T)/($completed) : "0"; - sprintf("%s:%d/%d/%d%%/%.1fs ", - $workerno{$_}, $running, $completed, - ($running+$completed)*100 - / $Global::total_started, $time); - } @workers); - } - if(length $status > $termcols) { - # sshlogin1:XX/XX/XX% sshlogin2:XX/XX/XX% sshlogin3:XX/XX/XX% - $header = "Computer:jobs running/jobs completed/%of started jobs"; - $status = $eta . - join(" ",map - { sprintf("%s:%d/%d/%d%%", - $sshlogin{$_}, - $Global::host{$_}->jobs_running(), - ($Global::host{$_}->jobs_completed()||0), - ($Global::host{$_}->jobs_running()+ - ($Global::host{$_}->jobs_completed()||0))*100 - / $Global::total_started) } - @workers); - } - if(length $status > $termcols) { - # 1:XX/XX/XX% 2:XX/XX/XX% 3:XX/XX/XX% 4:XX/XX/XX% 5:XX/XX/XX% 6:XX/XX/XX% - $header = "Computer:jobs running/jobs completed/%of started jobs"; - $status = $eta . - join(" ",map - { sprintf("%s:%d/%d/%d%%", - $workerno{$_}, - $Global::host{$_}->jobs_running(), - ($Global::host{$_}->jobs_completed()||0), - ($Global::host{$_}->jobs_running()+ - ($Global::host{$_}->jobs_completed()||0))*100 - / $Global::total_started) } - @workers); - } - if(length $status > $termcols) { - # sshlogin1:XX/XX/XX% sshlogin2:XX/XX/XX% sshlogin3:XX/XX sshlogin4:XX/XX - $header = "Computer:jobs running/jobs completed"; - $status = $eta . - join(" ",map - { sprintf("%s:%d/%d", - $sshlogin{$_}, $Global::host{$_}->jobs_running(), - ($Global::host{$_}->jobs_completed()||0)) } - @workers); - } - if(length $status > $termcols) { - # sshlogin1:XX/XX sshlogin2:XX/XX sshlogin3:XX/XX sshlogin4:XX/XX - $header = "Computer:jobs running/jobs completed"; - $status = $eta . - join(" ",map - { sprintf("%s:%d/%d", - $sshlogin{$_}, $Global::host{$_}->jobs_running(), - ($Global::host{$_}->jobs_completed()||0)) } - @workers); - } - if(length $status > $termcols) { - # 1:XX/XX 2:XX/XX 3:XX/XX 4:XX/XX 5:XX/XX 6:XX/XX - $header = "Computer:jobs running/jobs completed"; - $status = $eta . - join(" ",map - { sprintf("%s:%d/%d", - $workerno{$_}, $Global::host{$_}->jobs_running(), - ($Global::host{$_}->jobs_completed()||0)) } - @workers); - } - if(length $status > $termcols) { - # sshlogin1:XX sshlogin2:XX sshlogin3:XX sshlogin4:XX sshlogin5:XX - $header = "Computer:jobs completed"; - $status = $eta . - join(" ",map - { sprintf("%s:%d", - $sshlogin{$_}, - ($Global::host{$_}->jobs_completed()||0)) } - @workers); - } - if(length $status > $termcols) { - # 1:XX 2:XX 3:XX 4:XX 5:XX 6:XX - $header = "Computer:jobs completed"; - $status = $eta . - join(" ",map - { sprintf("%s:%d", - $workerno{$_}, - ($Global::host{$_}->jobs_completed()||0)) } - @workers); - } - return ("workerlist" => $workerlist, "header" => $header, "status" => $status); -} - -{ - my ($total, $first_completed, $smoothed_avg_time); - - sub compute_eta { - # Calculate important numbers for ETA - # Returns: - # $total = number of jobs in total - # $completed = number of jobs completed - # $left = number of jobs left - # $pctcomplete = percent of jobs completed - # $avgtime = averaged time - # $eta = smoothed eta - $total ||= $Global::JobQueue->total_jobs(); - my $completed = 0; - for(values %Global::host) { $completed += $_->jobs_completed() } - my $left = $total - $completed; - if(not $completed) { - return($total, $completed, $left, 0, 0, 0); - } - my $pctcomplete = $completed / $total; - $first_completed ||= time; - my $timepassed = (time - $first_completed); - my $avgtime = $timepassed / $completed; - $smoothed_avg_time ||= $avgtime; - # Smooth the eta so it does not jump wildly - $smoothed_avg_time = (1 - $pctcomplete) * $smoothed_avg_time + - $pctcomplete * $avgtime; - my $eta = int($left * $smoothed_avg_time); - return($total, $completed, $left, $pctcomplete, $avgtime, $eta); - } -} - -{ - my ($rev,$reset); - - sub bar { - # Return: - # $status = bar with eta, completed jobs, arg and pct - $rev ||= "\033[7m"; - $reset ||= "\033[0m"; - my($total, $completed, $left, $pctcomplete, $avgtime, $eta) = - compute_eta(); - my $arg = $Global::newest_job ? - $Global::newest_job->{'commandline'}->replace_placeholders(["\257<\257>"],0,0) : ""; - # These chars mess up display in the terminal - $arg =~ tr/[\011-\016\033\302-\365]//d; - my $bar_text = - sprintf("%d%% %d:%d=%ds %s", - $pctcomplete*100, $completed, $left, $eta, $arg); - my $terminal_width = terminal_columns(); - my $s = sprintf("%-${terminal_width}s", - substr($bar_text." "x$terminal_width, - 0,$terminal_width)); - my $width = int($terminal_width * $pctcomplete); - substr($s,$width,0) = $reset; - my $zenity = sprintf("%-${terminal_width}s", - substr("# $eta sec $arg", - 0,$terminal_width)); - $s = "\r" . $zenity . "\r" . $pctcomplete*100 . # Prefix with zenity header - "\r" . $rev . $s . $reset; - return $s; - } -} - -{ - my ($columns,$last_column_time); - - sub terminal_columns { - # Get the number of columns of the display - # Returns: - # number of columns of the screen - if(not $columns or $last_column_time < time) { - $last_column_time = time; - $columns = $ENV{'COLUMNS'}; - if(not $columns) { - my $resize = qx{ resize 2>/dev/null }; - $resize =~ /COLUMNS=(\d+);/ and do { $columns = $1; }; - } - $columns ||= 80; - } - return $columns; - } -} - -sub get_job_with_sshlogin { - # Returns: - # next job object for $sshlogin if any available - my $sshlogin = shift; - my $job = undef; - - if ($opt::hostgroups) { - my @other_hostgroup_jobs = (); - - while($job = $Global::JobQueue->get()) { - if($sshlogin->in_hostgroups($job->hostgroups())) { - # Found a job for this hostgroup - last; - } else { - # This job was not in the hostgroups of $sshlogin - push @other_hostgroup_jobs, $job; - } - } - $Global::JobQueue->unget(@other_hostgroup_jobs); - if(not defined $job) { - # No more jobs - return undef; - } - } else { - $job = $Global::JobQueue->get(); - if(not defined $job) { - # No more jobs - ::debug("start", "No more jobs: JobQueue empty\n"); - return undef; - } - } - - my $clean_command = $job->replaced(); - if($clean_command =~ /^\s*$/) { - # Do not run empty lines - if(not $Global::JobQueue->empty()) { - return get_job_with_sshlogin($sshlogin); - } else { - return undef; - } - } - $job->set_sshlogin($sshlogin); - if($opt::retries and $clean_command and - $job->failed_here()) { - # This command with these args failed for this sshlogin - my ($no_of_failed_sshlogins,$min_failures) = $job->min_failed(); - # Only look at the Global::host that have > 0 jobslots - if($no_of_failed_sshlogins == grep { $_->max_jobs_running() > 0 } values %Global::host - and $job->failed_here() == $min_failures) { - # It failed the same or more times on another host: - # run it on this host - } else { - # If it failed fewer times on another host: - # Find another job to run - my $nextjob; - if(not $Global::JobQueue->empty()) { - # This can potentially recurse for all args - no warnings 'recursion'; - $nextjob = get_job_with_sshlogin($sshlogin); - } - # Push the command back on the queue - $Global::JobQueue->unget($job); - return $nextjob; - } - } - return $job; -} - -sub __REMOTE_SSH__ {} - -sub read_sshloginfiles { - # Returns: N/A - for my $s (@_) { - read_sshloginfile(expand_slf_shorthand($s)); - } -} - -sub expand_slf_shorthand { - my $file = shift; - if($file eq "-") { - # skip: It is stdin - } elsif($file eq "..") { - $file = $ENV{'HOME'}."/.parallel/sshloginfile"; - } elsif($file eq ".") { - $file = "/etc/parallel/sshloginfile"; - } elsif(not -r $file) { - if(not -r $ENV{'HOME'}."/.parallel/".$file) { - # Try prepending ~/.parallel - ::error("Cannot open $file.\n"); - ::wait_and_exit(255); - } else { - $file = $ENV{'HOME'}."/.parallel/".$file; - } - } - return $file; -} - -sub read_sshloginfile { - # Returns: N/A - my $file = shift; - my $close = 1; - my $in_fh; - ::debug("init","--slf ",$file); - if($file eq "-") { - $in_fh = *STDIN; - $close = 0; - } else { - if(not open($in_fh, "<", $file)) { - # Try the filename - ::error("Cannot open $file.\n"); - ::wait_and_exit(255); - } - } - while(<$in_fh>) { - chomp; - /^\s*#/ and next; - /^\s*$/ and next; - push @Global::sshlogin, $_; - } - if($close) { - close $in_fh; - } -} - -sub parse_sshlogin { - # Returns: N/A - my @login; - if(not @Global::sshlogin) { @Global::sshlogin = (":"); } - for my $sshlogin (@Global::sshlogin) { - # Split up -S sshlogin,sshlogin - for my $s (split /,/, $sshlogin) { - if ($s eq ".." or $s eq "-") { - # This may add to @Global::sshlogin - possibly bug - read_sshloginfile(expand_slf_shorthand($s)); - } else { - push (@login, $s); - } - } - } - $Global::minimal_command_line_length = 8_000_000; - my @allowed_hostgroups; - for my $ncpu_sshlogin_string (::uniq(@login)) { - my $sshlogin = SSHLogin->new($ncpu_sshlogin_string); - my $sshlogin_string = $sshlogin->string(); - if($sshlogin_string eq "") { - # This is an ssh group: -S @webservers - push @allowed_hostgroups, $sshlogin->hostgroups(); - next; - } - if($Global::host{$sshlogin_string}) { - # This sshlogin has already been added: - # It is probably a host that has come back - # Set the max_jobs_running back to the original - debug("run","Already seen $sshlogin_string\n"); - if($sshlogin->{'ncpus'}) { - # If ncpus set by '#/' of the sshlogin, overwrite it: - $Global::host{$sshlogin_string}->set_ncpus($sshlogin->ncpus()); - } - $Global::host{$sshlogin_string}->set_max_jobs_running(undef); - next; - } - if($sshlogin_string eq ":") { - $sshlogin->set_maxlength(Limits::Command::max_length()); - } else { - # If all chars needs to be quoted, every other character will be \ - $sshlogin->set_maxlength(int(Limits::Command::max_length()/2)); - } - $Global::minimal_command_line_length = - ::min($Global::minimal_command_line_length, $sshlogin->maxlength()); - $Global::host{$sshlogin_string} = $sshlogin; - } - if(@allowed_hostgroups) { - # Remove hosts that are not in these groups - while (my ($string, $sshlogin) = each %Global::host) { - if(not $sshlogin->in_hostgroups(@allowed_hostgroups)) { - delete $Global::host{$string}; - } - } - } - - # debug("start", "sshlogin: ", my_dump(%Global::host),"\n"); - if($opt::transfer or @opt::return or $opt::cleanup or @opt::basefile) { - if(not remote_hosts()) { - # There are no remote hosts - if(@opt::trc) { - ::warning("--trc ignored as there are no remote --sshlogin.\n"); - } elsif (defined $opt::transfer) { - ::warning("--transfer ignored as there are no remote --sshlogin.\n"); - } elsif (@opt::return) { - ::warning("--return ignored as there are no remote --sshlogin.\n"); - } elsif (defined $opt::cleanup) { - ::warning("--cleanup ignored as there are no remote --sshlogin.\n"); - } elsif (@opt::basefile) { - ::warning("--basefile ignored as there are no remote --sshlogin.\n"); - } - } - } -} - -sub remote_hosts { - # Return sshlogins that are not ':' - # Returns: - # list of sshlogins with ':' removed - return grep !/^:$/, keys %Global::host; -} - -sub setup_basefile { - # Transfer basefiles to each $sshlogin - # This needs to be done before first jobs on $sshlogin is run - # Returns: N/A - my $cmd = ""; - my $rsync_destdir; - my $workdir; - for my $sshlogin (values %Global::host) { - if($sshlogin->string() eq ":") { next } - for my $file (@opt::basefile) { - if($file !~ m:^/: and $opt::workdir eq "...") { - ::error("Work dir '...' will not work with relative basefiles\n"); - ::wait_and_exit(255); - } - $workdir ||= Job->new("")->workdir(); - $cmd .= $sshlogin->rsync_transfer_cmd($file,$workdir) . "&"; - } - } - $cmd .= "wait;"; - debug("init", "basesetup: $cmd\n"); - print `$cmd`; -} - -sub cleanup_basefile { - # Remove the basefiles transferred - # Returns: N/A - my $cmd=""; - my $workdir = Job->new("")->workdir(); - for my $sshlogin (values %Global::host) { - if($sshlogin->string() eq ":") { next } - for my $file (@opt::basefile) { - $cmd .= $sshlogin->cleanup_cmd($file,$workdir)."&"; - } - } - $cmd .= "wait;"; - debug("init", "basecleanup: $cmd\n"); - print `$cmd`; -} - -sub filter_hosts { - my(@cores, @cpus, @maxline, @echo); - my $envvar = ::shell_quote_scalar($Global::envvar); - while (my ($host, $sshlogin) = each %Global::host) { - if($host eq ":") { next } - # The 'true' is used to get the $host out later - my $sshcmd = "true $host;" . $sshlogin->sshcommand()." ".$sshlogin->serverlogin(); - push(@cores, $host."\t".$sshcmd." ".$envvar." parallel --number-of-cores\n\0"); - push(@cpus, $host."\t".$sshcmd." ".$envvar." parallel --number-of-cpus\n\0"); - push(@maxline, $host."\t".$sshcmd." ".$envvar." parallel --max-line-length-allowed\n\0"); - # 'echo' is used to get the best possible value for an ssh login time - push(@echo, $host."\t".$sshcmd." echo\n\0"); - } - my ($fh, $tmpfile) = ::tmpfile(SUFFIX => ".ssh"); - print $fh @cores, @cpus, @maxline, @echo; - close $fh; - # --timeout 5: Setting up an SSH connection and running a simple - # command should never take > 5 sec. - # --delay 0.1: If multiple sshlogins use the same proxy the delay - # will make it less likely to overload the ssh daemon. - # --retries 3: If the ssh daemon it overloaded, try 3 times - # -s 16000: Half of the max line on UnixWare - my $cmd = "cat $tmpfile | $0 -j0 --timeout 5 -s 16000 --joblog - --plain --delay 0.1 --retries 3 --tag --tagstring {1} -0 --colsep '\t' -k eval {2} 2>/dev/null"; - ::debug("init", $cmd, "\n"); - open(my $host_fh, "-|", $cmd) || ::die_bug("parallel host check: $cmd"); - my (%ncores, %ncpus, %time_to_login, %maxlen, %echo, @down_hosts); - my $prepend = ""; - while(<$host_fh>) { - if(/\'$/) { - # if last char = ' then append next line - # This may be due to quoting of $Global::envvar - $prepend .= $_; - next; - } - $_ = $prepend . $_; - $prepend = ""; - chomp; - my @col = split /\t/, $_; - if(defined $col[6]) { - # This is a line from --joblog - # seq host time spent sent received exit signal command - # 2 : 1372607672.654 0.675 0 0 0 0 eval true\ m\;ssh\ m\ parallel\ --number-of-cores - if($col[0] eq "Seq" and $col[1] eq "Host" and - $col[2] eq "Starttime") { - # Header => skip - next; - } - # Get server from: eval true server\; - $col[8] =~ /eval true..([^;]+).;/ or ::die_bug("col8 does not contain host: $col[8]"); - my $host = $1; - $host =~ tr/\\//d; - $Global::host{$host} or next; - if($col[6] eq "255" or $col[7] eq "15") { - # exit == 255 or signal == 15: ssh failed - # Remove sshlogin - ::debug("init", "--filtered $host\n"); - push(@down_hosts, $host); - @down_hosts = uniq(@down_hosts); - } elsif($col[6] eq "127") { - # signal == 127: parallel not installed remote - # Set ncpus and ncores = 1 - ::warning("Could not figure out ", - "number of cpus on $host. Using 1.\n"); - $ncores{$host} = 1; - $ncpus{$host} = 1; - $maxlen{$host} = Limits::Command::max_length(); - } elsif($col[0] =~ /^\d+$/ and $Global::host{$host}) { - # Remember how log it took to log in - # 2 : 1372607672.654 0.675 0 0 0 0 eval true\ m\;ssh\ m\ echo - $time_to_login{$host} = ::min($time_to_login{$host},$col[3]); - } else { - ::die_bug("host check unmatched long jobline: $_"); - } - } elsif($Global::host{$col[0]}) { - # This output from --number-of-cores, --number-of-cpus, - # --max-line-length-allowed - # ncores: server 8 - # ncpus: server 2 - # maxlen: server 131071 - if(not $ncores{$col[0]}) { - $ncores{$col[0]} = $col[1]; - } elsif(not $ncpus{$col[0]}) { - $ncpus{$col[0]} = $col[1]; - } elsif(not $maxlen{$col[0]}) { - $maxlen{$col[0]} = $col[1]; - } elsif(not $echo{$col[0]}) { - $echo{$col[0]} = $col[1]; - } elsif(m/perl: warning:|LANGUAGE =|LC_ALL =|LANG =|are supported and installed/) { - # Skip these: - # perl: warning: Setting locale failed. - # perl: warning: Please check that your locale settings: - # LANGUAGE = (unset), - # LC_ALL = (unset), - # LANG = "en_US.UTF-8" - # are supported and installed on your system. - # perl: warning: Falling back to the standard locale ("C"). - } else { - ::die_bug("host check too many col0: $_"); - } - } else { - ::die_bug("host check unmatched short jobline ($col[0]): $_"); - } - } - close $host_fh; - $Global::debug or unlink $tmpfile; - delete @Global::host{@down_hosts}; - @down_hosts and ::warning("Removed @down_hosts\n"); - $Global::minimal_command_line_length = 8_000_000; - while (my ($sshlogin, $obj) = each %Global::host) { - if($sshlogin eq ":") { next } - $ncpus{$sshlogin} or ::die_bug("ncpus missing: ".$obj->serverlogin()); - $ncores{$sshlogin} or ::die_bug("ncores missing: ".$obj->serverlogin()); - $time_to_login{$sshlogin} or ::die_bug("time_to_login missing: ".$obj->serverlogin()); - $maxlen{$sshlogin} or ::die_bug("maxlen missing: ".$obj->serverlogin()); - if($opt::use_cpus_instead_of_cores) { - $obj->set_ncpus($ncpus{$sshlogin}); - } else { - $obj->set_ncpus($ncores{$sshlogin}); - } - $obj->set_time_to_login($time_to_login{$sshlogin}); - $obj->set_maxlength($maxlen{$sshlogin}); - $Global::minimal_command_line_length = - ::min($Global::minimal_command_line_length, - int($maxlen{$sshlogin}/2)); - ::debug("init", "Timing from -S:$sshlogin ncpus:",$ncpus{$sshlogin}, - " ncores:", $ncores{$sshlogin}, - " time_to_login:", $time_to_login{$sshlogin}, - " maxlen:", $maxlen{$sshlogin}, - " min_max_len:", $Global::minimal_command_line_length,"\n"); - } -} - -sub onall { - sub tmp_joblog { - my $joblog = shift; - if(not defined $joblog) { - return undef; - } - my ($fh, $tmpfile) = ::tmpfile(SUFFIX => ".log"); - close $fh; - return $tmpfile; - } - my @command = @_; - if($Global::quoting) { - @command = shell_quote_empty(@command); - } - - # Copy all @fhlist into tempfiles - my @argfiles = (); - for my $fh (@fhlist) { - my ($outfh, $name) = ::tmpfile(SUFFIX => ".all", UNLINK => 1); - print $outfh (<$fh>); - close $outfh; - push @argfiles, $name; - } - if(@opt::basefile) { setup_basefile(); } - # for each sshlogin do: - # parallel -S $sshlogin $command :::: @argfiles - # - # Pass some of the options to the sub-parallels, not all of them as - # -P should only go to the first, and -S should not be copied at all. - my $options = - join(" ", - ((defined $opt::jobs) ? "-P $opt::jobs" : ""), - ((defined $opt::linebuffer) ? "--linebuffer" : ""), - ((defined $opt::ungroup) ? "-u" : ""), - ((defined $opt::group) ? "-g" : ""), - ((defined $opt::keeporder) ? "--keeporder" : ""), - ((defined $opt::D) ? "-D $opt::D" : ""), - ((defined $opt::plain) ? "--plain" : ""), - ((defined $opt::max_chars) ? "--max-chars ".$opt::max_chars : ""), - ); - my $suboptions = - join(" ", - ((defined $opt::ungroup) ? "-u" : ""), - ((defined $opt::linebuffer) ? "--linebuffer" : ""), - ((defined $opt::group) ? "-g" : ""), - ((defined $opt::files) ? "--files" : ""), - ((defined $opt::keeporder) ? "--keeporder" : ""), - ((defined $opt::colsep) ? "--colsep ".shell_quote($opt::colsep) : ""), - ((@opt::v) ? "-vv" : ""), - ((defined $opt::D) ? "-D $opt::D" : ""), - ((defined $opt::timeout) ? "--timeout ".$opt::timeout : ""), - ((defined $opt::plain) ? "--plain" : ""), - ((defined $opt::retries) ? "--retries ".$opt::retries : ""), - ((defined $opt::max_chars) ? "--max-chars ".$opt::max_chars : ""), - ((defined $opt::arg_sep) ? "--arg-sep ".$opt::arg_sep : ""), - ((defined $opt::arg_file_sep) ? "--arg-file-sep ".$opt::arg_file_sep : ""), - (@opt::env ? map { "--env ".::shell_quote_scalar($_) } @opt::env : ""), - ); - ::debug("init", "| $0 $options\n"); - open(my $parallel_fh, "|-", "$0 --no-notice -j0 $options") || - ::die_bug("This does not run GNU Parallel: $0 $options"); - my @joblogs; - for my $host (sort keys %Global::host) { - my $sshlogin = $Global::host{$host}; - my $joblog = tmp_joblog($opt::joblog); - if($joblog) { - push @joblogs, $joblog; - $joblog = "--joblog $joblog"; - } - my $quad = $opt::arg_file_sep || "::::"; - ::debug("init", "$0 $suboptions -j1 $joblog ", - ((defined $opt::tag) ? - "--tagstring ".shell_quote_scalar($sshlogin->string()) : ""), - " -S ", shell_quote_scalar($sshlogin->string())," ", - join(" ",shell_quote(@command))," $quad @argfiles\n"); - print $parallel_fh "$0 $suboptions -j1 $joblog ", - ((defined $opt::tag) ? - "--tagstring ".shell_quote_scalar($sshlogin->string()) : ""), - " -S ", shell_quote_scalar($sshlogin->string())," ", - join(" ",shell_quote(@command))," $quad @argfiles\n"; - } - close $parallel_fh; - $Global::exitstatus = $? >> 8; - debug("init", "--onall exitvalue ", $?); - if(@opt::basefile) { cleanup_basefile(); } - $Global::debug or unlink(@argfiles); - my %seen; - for my $joblog (@joblogs) { - # Append to $joblog - open(my $fh, "<", $joblog) || ::die_bug("Cannot open tmp joblog $joblog"); - # Skip first line (header); - <$fh>; - print $Global::joblog (<$fh>); - close $fh; - unlink($joblog); - } -} - -sub __SIGNAL_HANDLING__ {} - -sub save_original_signal_handler { - # Remember the original signal handler - # Returns: N/A - $SIG{TERM} ||= sub { exit 0; }; # $SIG{TERM} is not set on Mac OS X - $SIG{INT} = sub { if($opt::tmux) { qx { tmux kill-session -t p$$ }; } - unlink keys %Global::unlink; exit -1 }; - $SIG{TERM} = sub { if($opt::tmux) { qx { tmux kill-session -t p$$ }; } - unlink keys %Global::unlink; exit -1 }; - %Global::original_sig = %SIG; - $SIG{TERM} = sub {}; # Dummy until jobs really start -} - -sub list_running_jobs { - # Returns: N/A - for my $v (values %Global::running) { - print $Global::original_stderr "$Global::progname: ",$v->replaced(),"\n"; - } -} - -sub start_no_new_jobs { - # Returns: N/A - $SIG{TERM} = $Global::original_sig{TERM}; - print $Global::original_stderr - ("$Global::progname: SIGTERM received. No new jobs will be started.\n", - "$Global::progname: Waiting for these ", scalar(keys %Global::running), - " jobs to finish. Send SIGTERM again to stop now.\n"); - list_running_jobs(); - $Global::start_no_new_jobs ||= 1; -} - -sub reaper { - # A job finished. - # Print the output. - # Start another job - # Returns: N/A - my $stiff; - my $children_reaped = 0; - debug("run", "Reaper "); - while (($stiff = waitpid(-1, &WNOHANG)) > 0) { - $children_reaped++; - if($Global::sshmaster{$stiff}) { - # This is one of the ssh -M: ignore - next; - } - my $job = $Global::running{$stiff}; - # '-a <(seq 10)' will give us a pid not in %Global::running - $job or next; - $job->set_exitstatus($? >> 8); - $job->set_exitsignal($? & 127); - debug("run", "died (", $job->exitstatus(), "): ", $job->seq()); - $job->set_endtime(::now()); - if($stiff == $Global::tty_taken) { - # The process that died had the tty => release it - $Global::tty_taken = 0; - } - - if(not $job->should_be_retried()) { - # The job is done - # Free the jobslot - push @Global::slots, $job->slot(); - if($opt::timeout) { - # Update average runtime for timeout - $Global::timeoutq->update_delta_time($job->runtime()); - } - # Force printing now if the job failed and we are going to exit - my $print_now = ($opt::halt_on_error and $opt::halt_on_error == 2 - and $job->exitstatus()); - if($opt::keeporder and not $print_now) { - print_earlier_jobs($job); - } else { - $job->print(); - } - if($job->exitstatus()) { - process_failed_job($job); - } - - } - my $sshlogin = $job->sshlogin(); - $sshlogin->dec_jobs_running(); - $sshlogin->inc_jobs_completed(); - $Global::total_running--; - delete $Global::running{$stiff}; - start_more_jobs(); - } - debug("run", "done "); - return $children_reaped; -} - -sub process_failed_job { - # The jobs had a exit status <> 0, so error - # Returns: N/A - my $job = shift; - $Global::exitstatus++; - $Global::total_failed++; - if($opt::halt_on_error) { - if($opt::halt_on_error == 1 - or - ($opt::halt_on_error < 1 and $Global::total_failed > 3 - and - $Global::total_failed / $Global::total_started > $opt::halt_on_error)) { - # If halt on error == 1 or --halt 10% - # we should gracefully exit - print $Global::original_stderr - ("$Global::progname: Starting no more jobs. ", - "Waiting for ", scalar(keys %Global::running), - " jobs to finish. This job failed:\n", - $job->replaced(),"\n"); - $Global::start_no_new_jobs ||= 1; - $Global::halt_on_error_exitstatus = $job->exitstatus(); - } elsif($opt::halt_on_error == 2) { - # If halt on error == 2 we should exit immediately - print $Global::original_stderr - ("$Global::progname: This job failed:\n", - $job->replaced(),"\n"); - exit ($job->exitstatus()); - } - } -} - -{ - my (%print_later,$job_end_sequence); - - sub print_earlier_jobs { - # Print jobs completed earlier - # Returns: N/A - my $job = shift; - $print_later{$job->seq()} = $job; - $job_end_sequence ||= 1; - debug("run", "Looking for: $job_end_sequence ", - "Current: ", $job->seq(), "\n"); - for(my $j = $print_later{$job_end_sequence}; - $j or vec($Global::job_already_run,$job_end_sequence,1); - $job_end_sequence++, - $j = $print_later{$job_end_sequence}) { - debug("run", "Found job end $job_end_sequence"); - if($j) { - $j->print(); - delete $print_later{$job_end_sequence}; - } - } - } -} - -sub __USAGE__ {} - -sub wait_and_exit { - # If we do not wait, we sometimes get segfault - # Returns: N/A - my $error = shift; - if($error) { - # Kill all without printing - for my $job (values %Global::running) { - $job->kill("TERM"); - $job->kill("TERM"); - } - } - for (keys %Global::unkilled_children) { - kill 9, $_; - waitpid($_,0); - delete $Global::unkilled_children{$_}; - } - wait(); - exit($error); -} - -sub die_usage { - # Returns: N/A - usage(); - wait_and_exit(255); -} - -sub usage { - # Returns: N/A - print join - ("\n", - "Usage:", - "", - "$Global::progname [options] [command [arguments]] < list_of_arguments", - "$Global::progname [options] [command [arguments]] (::: arguments|:::: argfile(s))...", - "cat ... | $Global::progname --pipe [options] [command [arguments]]", - "", - "-j n Run n jobs in parallel", - "-k Keep same order", - "-X Multiple arguments with context replace", - "--colsep regexp Split input on regexp for positional replacements", - "{} {.} {/} {/.} {#} {%} {= perl code =} Replacement strings", - "{3} {3.} {3/} {3/.} {=3 perl code =} Positional replacement strings", - "With --plus: {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} =", - " {+/}/{/..}.{+..} = {...}.{+...} = {+/}/{/...}.{+...}", - "", - "-S sshlogin Example: foo\@server.example.com", - "--slf .. Use ~/.parallel/sshloginfile as the list of sshlogins", - "--trc {}.bar Shorthand for --transfer --return {}.bar --cleanup", - "--onall Run the given command with argument on all sshlogins", - "--nonall Run the given command with no arguments on all sshlogins", - "", - "--pipe Split stdin (standard input) to multiple jobs.", - "--recend str Record end separator for --pipe.", - "--recstart str Record start separator for --pipe.", - "", - "See 'man $Global::progname' for details", - "", - "When using programs that use GNU Parallel to process data for publication please cite:", - "", - "O. Tange (2011): GNU Parallel - The Command-Line Power Tool,", - ";login: The USENIX Magazine, February 2011:42-47.", - "", - "Or you can get GNU Parallel without this requirement by paying 10000 EUR.", - ""); -} - - -sub citation_notice { - # if --no-notice or --plain: do nothing - # if stderr redirected: do nothing - # if ~/.parallel/will-cite: do nothing - # else: print citation notice to stderr - if($opt::no_notice - or - $opt::plain - or - not -t $Global::original_stderr - or - -e $ENV{'HOME'}."/.parallel/will-cite") { - # skip - } else { - print $Global::original_stderr - ("When using programs that use GNU Parallel to process data for publication please cite:\n", - "\n", - " O. Tange (2011): GNU Parallel - The Command-Line Power Tool,\n", - " ;login: The USENIX Magazine, February 2011:42-47.\n", - "\n", - "This helps funding further development; and it won't cost you a cent.\n", - "Or you can get GNU Parallel without this requirement by paying 10000 EUR.\n", - "\n", - "To silence this citation notice run 'parallel --bibtex' once or use '--no-notice'.\n\n", - ); - flush $Global::original_stderr; - } -} - - -sub warning { - my @w = @_; - my $fh = $Global::original_stderr || *STDERR; - my $prog = $Global::progname || "parallel"; - print $fh $prog, ": Warning: ", @w; -} - - -sub error { - my @w = @_; - my $fh = $Global::original_stderr || *STDERR; - my $prog = $Global::progname || "parallel"; - print $fh $prog, ": Error: ", @w; -} - - -sub die_bug { - my $bugid = shift; - print STDERR - ("$Global::progname: This should not happen. You have found a bug.\n", - "Please contact and include:\n", - "* The version number: $Global::version\n", - "* The bugid: $bugid\n", - "* The command line being run\n", - "* The files being read (put the files on a webserver if they are big)\n", - "\n", - "If you get the error on smaller/fewer files, please include those instead.\n"); - ::wait_and_exit(255); -} - -sub version { - # Returns: N/A - if($opt::tollef and not $opt::gnu) { - print "WARNING: YOU ARE USING --tollef. IF THINGS ARE ACTING WEIRD USE --gnu.\n"; - } - print join("\n", - "GNU $Global::progname $Global::version", - "Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014 Ole Tange and Free Software Foundation, Inc.", - "License GPLv3+: GNU GPL version 3 or later ", - "This is free software: you are free to change and redistribute it.", - "GNU $Global::progname comes with no warranty.", - "", - "Web site: http://www.gnu.org/software/${Global::progname}\n", - "When using programs that use GNU Parallel to process data for publication please cite:\n", - "O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ", - ";login: The USENIX Magazine, February 2011:42-47.\n", - "Or you can get GNU Parallel without this requirement by paying 10000 EUR.\n", - ); -} - -sub bibtex { - # Returns: N/A - if($opt::tollef and not $opt::gnu) { - print "WARNING: YOU ARE USING --tollef. IF THINGS ARE ACTING WEIRD USE --gnu.\n"; - } - print join("\n", - "When using programs that use GNU Parallel to process data for publication please cite:", - "", - "\@article{Tange2011a,", - " title = {GNU Parallel - The Command-Line Power Tool},", - " author = {O. Tange},", - " address = {Frederiksberg, Denmark},", - " journal = {;login: The USENIX Magazine},", - " month = {Feb},", - " number = {1},", - " volume = {36},", - " url = {http://www.gnu.org/s/parallel},", - " year = {2011},", - " pages = {42-47}", - "}", - "", - "(Feel free to use \\nocite{Tange2011a})", - "", - "This helps funding further development.", - "", - "Or you can get GNU Parallel without this requirement by paying 10000 EUR.", - "" - ); - while(not -e $ENV{'HOME'}."/.parallel/will-cite") { - print "\nType: 'will cite' and press enter.\n> "; - my $input = ; - if($input =~ /will cite/i) { - mkdir $ENV{'HOME'}."/.parallel"; - open (my $fh, ">", $ENV{'HOME'}."/.parallel/will-cite") - || ::die_bug("Cannot write: ".$ENV{'HOME'}."/.parallel/will-cite"); - close $fh; - print "\nThank you for your support. It is much appreciated. The citation\n", - "notice is now silenced.\n"; - } - } -} - -sub show_limits { - # Returns: N/A - print("Maximal size of command: ",Limits::Command::real_max_length(),"\n", - "Maximal used size of command: ",Limits::Command::max_length(),"\n", - "\n", - "Execution of will continue now, and it will try to read its input\n", - "and run commands; if this is not what you wanted to happen, please\n", - "press CTRL-D or CTRL-C\n"); -} - -sub __GENERIC_COMMON_FUNCTION__ {} - -sub uniq { - # Remove duplicates and return unique values - return keys %{{ map { $_ => 1 } @_ }}; -} - -sub min { - # Returns: - # Minimum value of array - my $min; - for (@_) { - # Skip undefs - defined $_ or next; - defined $min or do { $min = $_; next; }; # Set $_ to the first non-undef - $min = ($min < $_) ? $min : $_; - } - return $min; -} - -sub max { - # Returns: - # Maximum value of array - my $max; - for (@_) { - # Skip undefs - defined $_ or next; - defined $max or do { $max = $_; next; }; # Set $_ to the first non-undef - $max = ($max > $_) ? $max : $_; - } - return $max; -} - -sub sum { - # Returns: - # Sum of values of array - my @args = @_; - my $sum = 0; - for (@args) { - # Skip undefs - $_ and do { $sum += $_; } - } - return $sum; -} - -sub undef_as_zero { - my $a = shift; - return $a ? $a : 0; -} - -sub undef_as_empty { - my $a = shift; - return $a ? $a : ""; -} - -{ - my $hostname; - sub hostname { - if(not $hostname) { - $hostname = `hostname`; - chomp($hostname); - $hostname ||= "nohostname"; - } - return $hostname; - } -} - -sub which { - # Input: - # @programs = programs to find the path to - # Returns: - # @full_path = full paths to @programs. Nothing if not found - my @which; - for my $prg (@_) { - push @which, map { $_."/".$prg } grep { -x $_."/".$prg } split(":",$ENV{'PATH'}); - } - return @which; -} - -{ - my ($regexp,%fakename); - - sub parent_shell { - # Input: - # $pid = pid to see if (grand)*parent is a shell - # Returns: - # $shellpath = path to shell - undef if no shell found - my $pid = shift; - if(not $regexp) { - # All shells known to mankind - # - # ash bash csh dash fdsh fish fizsh ksh ksh93 mksh pdksh - # posh rbash rush rzsh sash sh static-sh tcsh yash zsh - my @shells = qw(ash bash csh dash fdsh fish fizsh ksh - ksh93 mksh pdksh posh rbash rush rzsh - sash sh static-sh tcsh yash zsh -sh -csh); - # Can be formatted as: - # [sh] -sh sh busybox sh - # /bin/sh /sbin/sh /opt/csw/sh - # NOT: foo.sh sshd crash flush pdflush scosh fsflush ssh - my $shell = "(?:".join("|",@shells).")"; - $regexp = '^((\[)('. $shell. ')(\])|(|\S+/|busybox )('. $shell. '))($| )'; - %fakename = ( - # csh and tcsh disguise themselves as -sh/-csh - "-sh" => ["csh", "tcsh"], - "-csh" => ["tcsh", "csh"], - ); - } - my ($children_of_ref, $parent_of_ref, $name_of_ref) = pid_table(); - my $shellpath; - my $testpid = $pid; - while($testpid) { - ::debug("init", "shell? ". $name_of_ref->{$testpid}."\n"); - if($name_of_ref->{$testpid} =~ /$regexp/o) { - ::debug("init", "which ".($3||$6)." => "); - $shellpath = (which($3 || $6,@{$fakename{$3 || $6}}))[0]; - ::debug("init", "shell path $shellpath\n"); - $shellpath and last; - } - $testpid = $parent_of_ref->{$testpid}; - } - return $shellpath; - } -} - -{ - my %pid_parentpid_cmd; - - sub pid_table { - # Returns: - # %children_of = { pid -> children of pid } - # %parent_of = { pid -> pid of parent } - # %name_of = { pid -> commandname } - - if(not %pid_parentpid_cmd) { - # Filter for SysV-style `ps` - my $sysv = q( ps -ef | perl -ane '1..1 and /^(.*)CO?MM?A?N?D/ and $s=length $1;). - q(s/^.{$s}//; print "@F[1,2] $_"' ); - # BSD-style `ps` - my $bsd = q(ps -o pid,ppid,command -ax); - %pid_parentpid_cmd = - ( - 'aix' => $sysv, - 'cygwin' => $sysv, - 'msys' => $sysv, - 'dec_osf' => $sysv, - 'darwin' => $bsd, - 'dragonfly' => $bsd, - 'freebsd' => $bsd, - 'gnu' => $sysv, - 'hpux' => $sysv, - 'linux' => $sysv, - 'mirbsd' => $bsd, - 'netbsd' => $bsd, - 'nto' => $sysv, - 'openbsd' => $bsd, - 'solaris' => $sysv, - 'svr5' => $sysv, - ); - } - $pid_parentpid_cmd{$^O} or ::die_bug("pid_parentpid_cmd for $^O missing"); - - my (@pidtable,%parent_of,%children_of,%name_of); - # Table with pid -> children of pid - @pidtable = `$pid_parentpid_cmd{$^O}`; - my $p=$$; - for (@pidtable) { - # must match: 24436 21224 busybox ash - /(\S+)\s+(\S+)\s+(\S+.*)/ or ::die_bug("pidtable format: $_"); - $parent_of{$1} = $2; - push @{$children_of{$2}}, $1; - $name_of{$1} = $3; - } - return(\%children_of, \%parent_of, \%name_of); - } -} - -sub reap_usleep { - # Reap dead children. - # If no dead children: Sleep specified amount with exponential backoff - # Input: - # $ms = milliseconds to sleep - # Returns: - # $ms/2+0.001 if children reaped - # $ms*1.1 if no children reaped - my $ms = shift; - if(reaper()) { - # Sleep exponentially shorter (1/2^n) if a job finished - return $ms/2+0.001; - } else { - if($opt::timeout) { - $Global::timeoutq->process_timeouts(); - } - usleep($ms); - Job::exit_if_disk_full(); - if($opt::linebuffer) { - for my $job (values %Global::running) { - $job->print(); - } - } - # Sleep exponentially longer (1.1^n) if a job did not finish - # though at most 1000 ms. - return (($ms < 1000) ? ($ms * 1.1) : ($ms)); - } -} - -sub usleep { - # Sleep this many milliseconds. - # Input: - # $ms = milliseconds to sleep - my $ms = shift; - ::debug(int($ms),"ms "); - select(undef, undef, undef, $ms/1000); -} - -sub now { - # Returns time since epoch as in seconds with 3 decimals - # Uses: - # @Global::use - # Returns: - # $time = time now with millisecond accuracy - if(not $Global::use{"Time::HiRes"}) { - if(eval "use Time::HiRes qw ( time );") { - eval "sub TimeHiRestime { return Time::HiRes::time };"; - } else { - eval "sub TimeHiRestime { return time() };"; - } - $Global::use{"Time::HiRes"} = 1; - } - - return (int(TimeHiRestime()*1000))/1000; -} - -sub multiply_binary_prefix { - # Evalualte numbers with binary prefix - # Ki=2^10, Mi=2^20, Gi=2^30, Ti=2^40, Pi=2^50, Ei=2^70, Zi=2^80, Yi=2^80 - # ki=2^10, mi=2^20, gi=2^30, ti=2^40, pi=2^50, ei=2^70, zi=2^80, yi=2^80 - # K =2^10, M =2^20, G =2^30, T =2^40, P =2^50, E =2^70, Z =2^80, Y =2^80 - # k =10^3, m =10^6, g =10^9, t=10^12, p=10^15, e=10^18, z=10^21, y=10^24 - # 13G = 13*1024*1024*1024 = 13958643712 - # Input: - # $s = string with prefixes - # Returns: - # $value = int with prefixes multiplied - my $s = shift; - $s =~ s/ki/*1024/gi; - $s =~ s/mi/*1024*1024/gi; - $s =~ s/gi/*1024*1024*1024/gi; - $s =~ s/ti/*1024*1024*1024*1024/gi; - $s =~ s/pi/*1024*1024*1024*1024*1024/gi; - $s =~ s/ei/*1024*1024*1024*1024*1024*1024/gi; - $s =~ s/zi/*1024*1024*1024*1024*1024*1024*1024/gi; - $s =~ s/yi/*1024*1024*1024*1024*1024*1024*1024*1024/gi; - $s =~ s/xi/*1024*1024*1024*1024*1024*1024*1024*1024*1024/gi; - - $s =~ s/K/*1024/g; - $s =~ s/M/*1024*1024/g; - $s =~ s/G/*1024*1024*1024/g; - $s =~ s/T/*1024*1024*1024*1024/g; - $s =~ s/P/*1024*1024*1024*1024*1024/g; - $s =~ s/E/*1024*1024*1024*1024*1024*1024/g; - $s =~ s/Z/*1024*1024*1024*1024*1024*1024*1024/g; - $s =~ s/Y/*1024*1024*1024*1024*1024*1024*1024*1024/g; - $s =~ s/X/*1024*1024*1024*1024*1024*1024*1024*1024*1024/g; - - $s =~ s/k/*1000/g; - $s =~ s/m/*1000*1000/g; - $s =~ s/g/*1000*1000*1000/g; - $s =~ s/t/*1000*1000*1000*1000/g; - $s =~ s/p/*1000*1000*1000*1000*1000/g; - $s =~ s/e/*1000*1000*1000*1000*1000*1000/g; - $s =~ s/z/*1000*1000*1000*1000*1000*1000*1000/g; - $s =~ s/y/*1000*1000*1000*1000*1000*1000*1000*1000/g; - $s =~ s/x/*1000*1000*1000*1000*1000*1000*1000*1000*1000/g; - - $s = eval $s; - ::debug($s); - return $s; -} - -sub tmpfile { - # Create tempfile as $TMPDIR/parXXXXX - # Returns: - # $filename = file name created - return ::tempfile(DIR=>$ENV{'TMPDIR'}, TEMPLATE => 'parXXXXX', @_); -} - -sub __DEBUGGING__ {} - -sub debug { - # Uses: - # $Global::debug - # %Global::fd - # Returns: N/A - $Global::debug or return; - @_ = grep { defined $_ ? $_ : "" } @_; - if($Global::debug eq "all" or $Global::debug eq $_[0]) { - if($Global::fd{1}) { - # Original stdout was saved - my $stdout = $Global::fd{1}; - print $stdout @_[1..$#_]; - } else { - print @_[1..$#_]; - } - } -} - -sub my_memory_usage { - # Returns: - # memory usage if found - # 0 otherwise - use strict; - use FileHandle; - - my $pid = $$; - if(-e "/proc/$pid/stat") { - my $fh = FileHandle->new("; - chomp $data; - $fh->close; - - my @procinfo = split(/\s+/,$data); - - return undef_as_zero($procinfo[22]); - } else { - return 0; - } -} - -sub my_size { - # Returns: - # $size = size of object if Devel::Size is installed - # -1 otherwise - my @size_this = (@_); - eval "use Devel::Size qw(size total_size)"; - if ($@) { - return -1; - } else { - return total_size(@_); - } -} - -sub my_dump { - # Returns: - # ascii expression of object if Data::Dump(er) is installed - # error code otherwise - my @dump_this = (@_); - eval "use Data::Dump qw(dump);"; - if ($@) { - # Data::Dump not installed - eval "use Data::Dumper;"; - if ($@) { - my $err = "Neither Data::Dump nor Data::Dumper is installed\n". - "Not dumping output\n"; - print $Global::original_stderr $err; - return $err; - } else { - return Dumper(@dump_this); - } - } else { - # Create a dummy Data::Dump:dump as Hans Schou sometimes has - # it undefined - eval "sub Data::Dump:dump {}"; - eval "use Data::Dump qw(dump);"; - return (Data::Dump::dump(@dump_this)); - } -} - -sub my_croak { - eval "use Carp; 1"; - $Carp::Verbose = 1; - croak(@_); -} - -sub my_carp { - eval "use Carp; 1"; - $Carp::Verbose = 1; - carp(@_); -} - -sub __OBJECT_ORIENTED_PARTS__ {} - -package SSHLogin; - -sub new { - my $class = shift; - my $sshlogin_string = shift; - my $ncpus; - my %hostgroups; - # SSHLogins can have these formats: - # @grp+grp/ncpu//usr/bin/ssh user@server - # ncpu//usr/bin/ssh user@server - # /usr/bin/ssh user@server - # user@server - # ncpu/user@server - # @grp+grp/user@server - if($sshlogin_string =~ s:^\@([^/]+)/?::) { - # Look for SSHLogin hostgroups - %hostgroups = map { $_ => 1 } split(/\+/, $1); - } - if ($sshlogin_string =~ s:^(\d+)/::) { - # Override default autodetected ncpus unless missing - $ncpus = $1; - } - my $string = $sshlogin_string; - # An SSHLogin is always in the hostgroup of its $string-name - $hostgroups{$string} = 1; - @Global::hostgroups{keys %hostgroups} = values %hostgroups; - my @unget = (); - my $no_slash_string = $string; - $no_slash_string =~ s/[^-a-z0-9:]/_/gi; - return bless { - 'string' => $string, - 'jobs_running' => 0, - 'jobs_completed' => 0, - 'maxlength' => undef, - 'max_jobs_running' => undef, - 'orig_max_jobs_running' => undef, - 'ncpus' => $ncpus, - 'hostgroups' => \%hostgroups, - 'sshcommand' => undef, - 'serverlogin' => undef, - 'control_path_dir' => undef, - 'control_path' => undef, - 'time_to_login' => undef, - 'last_login_at' => undef, - 'loadavg_file' => $ENV{'HOME'} . "/.parallel/tmp/loadavg-" . - $no_slash_string, - 'loadavg' => undef, - 'last_loadavg_update' => 0, - 'swap_activity_file' => $ENV{'HOME'} . "/.parallel/tmp/swap_activity-" . - $no_slash_string, - 'swap_activity' => undef, - }, ref($class) || $class; -} - -sub DESTROY { - my $self = shift; - # Remove temporary files if they are created. - unlink $self->{'loadavg_file'}; - unlink $self->{'swap_activity_file'}; -} - -sub string { - my $self = shift; - return $self->{'string'}; -} - -sub jobs_running { - my $self = shift; - - return ($self->{'jobs_running'} || "0"); -} - -sub inc_jobs_running { - my $self = shift; - $self->{'jobs_running'}++; -} - -sub dec_jobs_running { - my $self = shift; - $self->{'jobs_running'}--; -} - -sub set_maxlength { - my $self = shift; - $self->{'maxlength'} = shift; -} - -sub maxlength { - my $self = shift; - return $self->{'maxlength'}; -} - -sub jobs_completed { - my $self = shift; - return $self->{'jobs_completed'}; -} - -sub in_hostgroups { - # Input: - # @hostgroups = the hostgroups to look for - # Returns: - # true if intersection of @hostgroups and the hostgroups of this - # SSHLogin is non-empty - my $self = shift; - return grep { defined $self->{'hostgroups'}{$_} } @_; -} - -sub hostgroups { - my $self = shift; - return keys %{$self->{'hostgroups'}}; -} - -sub inc_jobs_completed { - my $self = shift; - $self->{'jobs_completed'}++; -} - -sub set_max_jobs_running { - my $self = shift; - if(defined $self->{'max_jobs_running'}) { - $Global::max_jobs_running -= $self->{'max_jobs_running'}; - } - $self->{'max_jobs_running'} = shift; - if(defined $self->{'max_jobs_running'}) { - # max_jobs_running could be resat if -j is a changed file - $Global::max_jobs_running += $self->{'max_jobs_running'}; - } - # Initialize orig to the first non-zero value that comes around - $self->{'orig_max_jobs_running'} ||= $self->{'max_jobs_running'}; -} - -sub swapping { - my $self = shift; - my $swapping = $self->swap_activity(); - return (not defined $swapping or $swapping) -} - -sub swap_activity { - # If the currently known swap activity is too old: - # Recompute a new one in the background - # Returns: - # last swap activity computed - my $self = shift; - # Should we update the swap_activity file? - my $update_swap_activity_file = 0; - if(-r $self->{'swap_activity_file'}) { - open(my $swap_fh, "<", $self->{'swap_activity_file'}) || ::die_bug("swap_activity_file-r"); - my $swap_out = <$swap_fh>; - close $swap_fh; - if($swap_out =~ /^(\d+)$/) { - $self->{'swap_activity'} = $1; - ::debug("swap", "New swap_activity: ", $self->{'swap_activity'}); - } - ::debug("swap", "Last update: ", $self->{'last_swap_activity_update'}); - if(time - $self->{'last_swap_activity_update'} > 10) { - # last swap activity update was started 10 seconds ago - ::debug("swap", "Older than 10 sec: ", $self->{'swap_activity_file'}); - $update_swap_activity_file = 1; - } - } else { - ::debug("swap", "No swap_activity file: ", $self->{'swap_activity_file'}); - $self->{'swap_activity'} = undef; - $update_swap_activity_file = 1; - } - if($update_swap_activity_file) { - ::debug("swap", "Updating swap_activity file ", $self->{'swap_activity_file'}); - $self->{'last_swap_activity_update'} = time; - -e $ENV{'HOME'}."/.parallel" or mkdir $ENV{'HOME'}."/.parallel"; - -e $ENV{'HOME'}."/.parallel/tmp" or mkdir $ENV{'HOME'}."/.parallel/tmp"; - my $swap_activity; - $swap_activity = swapactivityscript(); - if($self->{'string'} ne ":") { - $swap_activity = $self->sshcommand() . " " . $self->serverlogin() . " " . - ::shell_quote_scalar($swap_activity); - } - # Run swap_activity measuring. - # As the command can take long to run if run remote - # save it to a tmp file before moving it to the correct file - my $file = $self->{'swap_activity_file'}; - my ($dummy_fh, $tmpfile) = ::tmpfile(SUFFIX => ".swp"); - ::debug("swap", "\n", $swap_activity, "\n"); - qx{ ($swap_activity > $tmpfile && mv $tmpfile $file || rm $tmpfile) & }; - } - return $self->{'swap_activity'}; -} - -{ - my $script; - - sub swapactivityscript { - # Returns: - # shellscript for detecting swap activity - # - # arguments for vmstat are OS dependant - # swap_in and swap_out are in different columns depending on OS - # - if(not $script) { - my %vmstat = ( - # linux: $7*$8 - # $ vmstat 1 2 - # procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- - # r b swpd free buff cache si so bi bo in cs us sy id wa - # 5 0 51208 1701096 198012 18857888 0 0 37 153 28 19 56 11 33 1 - # 3 0 51208 1701288 198012 18857972 0 0 0 0 3638 10412 15 3 82 0 - 'linux' => ['vmstat 1 2 | tail -n1', '$7*$8'], - - # solaris: $6*$7 - # $ vmstat -S 1 2 - # kthr memory page disk faults cpu - # r b w swap free si so pi po fr de sr s3 s4 -- -- in sy cs us sy id - # 0 0 0 4628952 3208408 0 0 3 1 1 0 0 -0 2 0 0 263 613 246 1 2 97 - # 0 0 0 4552504 3166360 0 0 0 0 0 0 0 0 0 0 0 246 213 240 1 1 98 - 'solaris' => ['vmstat -S 1 2 | tail -1', '$6*$7'], - - # darwin (macosx): $21*$22 - # $ vm_stat -c 2 1 - # Mach Virtual Memory Statistics: (page size of 4096 bytes) - # free active specul inactive throttle wired prgable faults copy 0fill reactive purged file-backed anonymous cmprssed cmprssor dcomprs comprs pageins pageout swapins swapouts - # 346306 829050 74871 606027 0 240231 90367 544858K 62343596 270837K 14178 415070 570102 939846 356 370 116 922 4019813 4 0 0 - # 345740 830383 74875 606031 0 239234 90369 2696 359 553 0 0 570110 941179 356 370 0 0 0 0 0 0 - 'darwin' => ['vm_stat -c 2 1 | tail -n1', '$21*$22'], - - # ultrix: $12*$13 - # $ vmstat -S 1 2 - # procs faults cpu memory page disk - # r b w in sy cs us sy id avm fre si so pi po fr de sr s0 - # 1 0 0 4 23 2 3 0 97 7743 217k 0 0 0 0 0 0 0 0 - # 1 0 0 6 40 8 0 1 99 7743 217k 0 0 3 0 0 0 0 0 - 'ultrix' => ['vmstat -S 1 2 | tail -1', '$12*$13'], - - # aix: $6*$7 - # $ vmstat 1 2 - # System configuration: lcpu=1 mem=2048MB - # - # kthr memory page faults cpu - # ----- ----------- ------------------------ ------------ ----------- - # r b avm fre re pi po fr sr cy in sy cs us sy id wa - # 0 0 333933 241803 0 0 0 0 0 0 10 143 90 0 0 99 0 - # 0 0 334125 241569 0 0 0 0 0 0 37 5368 184 0 9 86 5 - 'aix' => ['vmstat 1 2 | tail -n1', '$6*$7'], - - # freebsd: $8*$9 - # $ vmstat -H 1 2 - # procs memory page disks faults cpu - # r b w avm fre flt re pi po fr sr ad0 ad1 in sy cs us sy id - # 1 0 0 596716 19560 32 0 0 0 33 8 0 0 11 220 277 0 0 99 - # 0 0 0 596716 19560 2 0 0 0 0 0 0 0 11 144 263 0 1 99 - 'freebsd' => ['vmstat -H 1 2 | tail -n1', '$8*$9'], - - # mirbsd: $8*$9 - # $ vmstat 1 2 - # procs memory page disks traps cpu - # r b w avm fre flt re pi po fr sr wd0 cd0 int sys cs us sy id - # 0 0 0 25776 164968 34 0 0 0 0 0 0 0 230 259 38 4 0 96 - # 0 0 0 25776 164968 24 0 0 0 0 0 0 0 237 275 37 0 0 100 - 'mirbsd' => ['vmstat 1 2 | tail -n1', '$8*$9'], - - # netbsd: $7*$8 - # $ vmstat 1 2 - # procs memory page disks faults cpu - # r b avm fre flt re pi po fr sr w0 w1 in sy cs us sy id - # 0 0 138452 6012 54 0 0 0 1 2 3 0 4 100 23 0 0 100 - # 0 0 138456 6008 1 0 0 0 0 0 0 0 7 26 19 0 0 100 - 'netbsd' => ['vmstat 1 2 | tail -n1', '$7*$8'], - - # openbsd: $8*$9 - # $ vmstat 1 2 - # procs memory page disks traps cpu - # r b w avm fre flt re pi po fr sr wd0 wd1 int sys cs us sy id - # 0 0 0 76596 109944 73 0 0 0 0 0 0 1 5 259 22 0 1 99 - # 0 0 0 76604 109936 24 0 0 0 0 0 0 0 7 114 20 0 1 99 - 'openbsd' => ['vmstat 1 2 | tail -n1', '$8*$9'], - - # hpux: $8*$9 - # $ vmstat 1 2 - # procs memory page faults cpu - # r b w avm free re at pi po fr de sr in sy cs us sy id - # 1 0 0 247211 216476 4 1 0 0 0 0 0 102 73005 54 6 11 83 - # 1 0 0 247211 216421 43 9 0 0 0 0 0 144 1675 96 25269512791222387000 25269512791222387000 105 - 'hpux' => ['vmstat 1 2 | tail -n1', '$8*$9'], - - # dec_osf (tru64): $11*$12 - # $ vmstat 1 2 - # Virtual Memory Statistics: (pagesize = 8192) - # procs memory pages intr cpu - # r w u act free wire fault cow zero react pin pout in sy cs us sy id - # 3 181 36 51K 1895 8696 348M 59M 122M 259 79M 0 5 218 302 4 1 94 - # 3 181 36 51K 1893 8696 3 15 21 0 28 0 4 81 321 1 1 98 - 'dec_osf' => ['vmstat 1 2 | tail -n1', '$11*$12'], - - # gnu (hurd): $7*$8 - # $ vmstat -k 1 2 - # (pagesize: 4, size: 512288, swap size: 894972) - # free actv inact wired zeroed react pgins pgouts pfaults cowpfs hrat caobj cache swfree - # 371940 30844 89228 20276 298348 0 48192 19016 756105 99808 98% 876 20628 894972 - # 371940 30844 89228 20276 +0 +0 +0 +0 +42 +2 98% 876 20628 894972 - 'gnu' => ['vmstat -k 1 2 | tail -n1', '$7*$8'], - - # -nto (qnx has no swap) - #-irix - #-svr5 (scosysv) - ); - my $perlscript = ""; - for my $os (keys %vmstat) { - #q[ { vmstat 1 2 2> /dev/null || vmstat -c 1 2; } | ]. - # q[ awk 'NR!=4{next} NF==17||NF==16{print $7*$8} NF==22{print $21*$22} {exit}' ]; - $vmstat{$os}[1] =~ s/\$/\\\\\\\$/g; # $ => \\\$ - $perlscript .= 'if($^O eq "'.$os.'") { print `'.$vmstat{$os}[0].' | awk "{print ' . - $vmstat{$os}[1] . '}"` }'; - } - $perlscript = "perl -e " . ::shell_quote_scalar($perlscript); - $script = $Global::envvar. " " .$perlscript; - } - return $script; - } -} - -sub too_fast_remote_login { - my $self = shift; - if($self->{'last_login_at'} and $self->{'time_to_login'}) { - # sshd normally allows 10 simultaneous logins - # A login takes time_to_login - # So time_to_login/5 should be safe - # If now <= last_login + time_to_login/5: Then it is too soon. - my $too_fast = (::now() <= $self->{'last_login_at'} - + $self->{'time_to_login'}/5); - ::debug("run", "Too fast? $too_fast "); - return $too_fast; - } else { - # No logins so far (or time_to_login not computed): it is not too fast - return 0; - } -} - -sub last_login_at { - my $self = shift; - return $self->{'last_login_at'}; -} - -sub set_last_login_at { - my $self = shift; - $self->{'last_login_at'} = shift; -} - -sub loadavg_too_high { - my $self = shift; - my $loadavg = $self->loadavg(); - return (not defined $loadavg or - $loadavg > $self->max_loadavg()); -} - -sub loadavg { - # If the currently know loadavg is too old: - # Recompute a new one in the background - # The load average is computed as the number of processes waiting for disk - # or CPU right now. So it is the server load this instant and not averaged over - # several minutes. This is needed so GNU Parallel will at most start one job - # that will push the load over the limit. - # - # Returns: - # $last_loadavg = last load average computed (undef if none) - my $self = shift; - # Should we update the loadavg file? - my $update_loadavg_file = 0; - if(open(my $load_fh, "<", $self->{'loadavg_file'})) { - local $/ = undef; - my $load_out = <$load_fh>; - close $load_fh; - my $load =()= ($load_out=~/(^[DR]....[^\[])/gm); - if($load > 0) { - # load is overestimated by 1 - $self->{'loadavg'} = $load - 1; - ::debug("load", "New loadavg: ", $self->{'loadavg'}); - } else { - ::die_bug("loadavg_invalid_content: $load_out"); - } - ::debug("load", "Last update: ", $self->{'last_loadavg_update'}); - if(time - $self->{'last_loadavg_update'} > 10) { - # last loadavg was started 10 seconds ago - ::debug("load", time - $self->{'last_loadavg_update'}, " secs old: ", - $self->{'loadavg_file'}); - $update_loadavg_file = 1; - } - } else { - ::debug("load", "No loadavg file: ", $self->{'loadavg_file'}); - $self->{'loadavg'} = undef; - $update_loadavg_file = 1; - } - if($update_loadavg_file) { - ::debug("load", "Updating loadavg file", $self->{'loadavg_file'}, "\n"); - $self->{'last_loadavg_update'} = time; - -e $ENV{'HOME'}."/.parallel" or mkdir $ENV{'HOME'}."/.parallel"; - -e $ENV{'HOME'}."/.parallel/tmp" or mkdir $ENV{'HOME'}."/.parallel/tmp"; - my $cmd = ""; - if($self->{'string'} ne ":") { - $cmd = $self->sshcommand() . " " . $self->serverlogin() . " "; - } - # TODO Is is called 'ps ax -o state,command' on other platforms? - $cmd .= "ps ax -o state,command"; - # As the command can take long to run if run remote - # save it to a tmp file before moving it to the correct file - my $file = $self->{'loadavg_file'}; - my ($dummy_fh, $tmpfile) = ::tmpfile(SUFFIX => ".loa"); - qx{ ($cmd > $tmpfile && mv $tmpfile $file || rm $tmpfile) & }; - } - return $self->{'loadavg'}; -} - -sub max_loadavg { - my $self = shift; - # If --load is a file it might be changed - if($Global::max_load_file) { - my $mtime = (stat($Global::max_load_file))[9]; - if($mtime > $Global::max_load_file_last_mod) { - $Global::max_load_file_last_mod = $mtime; - for my $sshlogin (values %Global::host) { - $sshlogin->set_max_loadavg(undef); - } - } - } - if(not defined $self->{'max_loadavg'}) { - $self->{'max_loadavg'} = - $self->compute_max_loadavg($opt::load); - } - ::debug("load", "max_loadavg: ", $self->string(), " ", $self->{'max_loadavg'}); - return $self->{'max_loadavg'}; -} - -sub set_max_loadavg { - my $self = shift; - $self->{'max_loadavg'} = shift; -} - -sub compute_max_loadavg { - # Parse the max loadaverage that the user asked for using --load - # Returns: - # max loadaverage - my $self = shift; - my $loadspec = shift; - my $load; - if(defined $loadspec) { - if($loadspec =~ /^\+(\d+)$/) { - # E.g. --load +2 - my $j = $1; - $load = - $self->ncpus() + $j; - } elsif ($loadspec =~ /^-(\d+)$/) { - # E.g. --load -2 - my $j = $1; - $load = - $self->ncpus() - $j; - } elsif ($loadspec =~ /^(\d+)\%$/) { - my $j = $1; - $load = - $self->ncpus() * $j / 100; - } elsif ($loadspec =~ /^(\d+(\.\d+)?)$/) { - $load = $1; - } elsif (-f $loadspec) { - $Global::max_load_file = $loadspec; - $Global::max_load_file_last_mod = (stat($Global::max_load_file))[9]; - if(open(my $in_fh, "<", $Global::max_load_file)) { - my $opt_load_file = join("",<$in_fh>); - close $in_fh; - $load = $self->compute_max_loadavg($opt_load_file); - } else { - print $Global::original_stderr "Cannot open $loadspec\n"; - ::wait_and_exit(255); - } - } else { - print $Global::original_stderr "Parsing of --load failed\n"; - ::die_usage(); - } - if($load < 0.01) { - $load = 0.01; - } - } - return $load; -} - -sub time_to_login { - my $self = shift; - return $self->{'time_to_login'}; -} - -sub set_time_to_login { - my $self = shift; - $self->{'time_to_login'} = shift; -} - -sub max_jobs_running { - my $self = shift; - if(not defined $self->{'max_jobs_running'}) { - my $nproc = $self->compute_number_of_processes($opt::jobs); - $self->set_max_jobs_running($nproc); - } - return $self->{'max_jobs_running'}; -} - -sub orig_max_jobs_running { - my $self = shift; - return $self->{'orig_max_jobs_running'}; -} - -sub compute_number_of_processes { - # Number of processes wanted and limited by system resources - # Returns: - # Number of processes - my $self = shift; - my $opt_P = shift; - my $wanted_processes = $self->user_requested_processes($opt_P); - if(not defined $wanted_processes) { - $wanted_processes = $Global::default_simultaneous_sshlogins; - } - ::debug("load", "Wanted procs: $wanted_processes\n"); - my $system_limit = - $self->processes_available_by_system_limit($wanted_processes); - ::debug("load", "Limited to procs: $system_limit\n"); - return $system_limit; -} - -sub processes_available_by_system_limit { - # If the wanted number of processes is bigger than the system limits: - # Limit them to the system limits - # Limits are: File handles, number of input lines, processes, - # and taking > 1 second to spawn 10 extra processes - # Returns: - # Number of processes - my $self = shift; - my $wanted_processes = shift; - - my $system_limit = 0; - my @jobs = (); - my $job; - my @args = (); - my $arg; - my $more_filehandles = 1; - my $max_system_proc_reached = 0; - my $slow_spawining_warning_printed = 0; - my $time = time; - my %fh; - my @children; - - # Reserve filehandles - # perl uses 7 filehandles for something? - # parallel uses 1 for memory_usage - # parallel uses 4 for ? - for my $i (1..12) { - open($fh{"init-$i"}, "<", "/dev/null"); - } - - for(1..2) { - # System process limit - my $child; - if($child = fork()) { - push (@children,$child); - $Global::unkilled_children{$child} = 1; - } elsif(defined $child) { - # The child takes one process slot - # It will be killed later - $SIG{TERM} = $Global::original_sig{TERM}; - sleep 10000000; - exit(0); - } else { - $max_system_proc_reached = 1; - } - } - my $count_jobs_already_read = $Global::JobQueue->next_seq(); - my $wait_time_for_getting_args = 0; - my $start_time = time; - while(1) { - $system_limit >= $wanted_processes and last; - not $more_filehandles and last; - $max_system_proc_reached and last; - my $before_getting_arg = time; - if($Global::semaphore or $opt::pipe) { - # Skip: No need to get args - } elsif(defined $opt::retries and $count_jobs_already_read) { - # For retries we may need to run all jobs on this sshlogin - # so include the already read jobs for this sshlogin - $count_jobs_already_read--; - } else { - if($opt::X or $opt::m) { - # The arguments may have to be re-spread over several jobslots - # So pessimistically only read one arg per jobslot - # instead of a full commandline - if($Global::JobQueue->{'commandlinequeue'}->{'arg_queue'}->empty()) { - if($Global::JobQueue->empty()) { - last; - } else { - ($job) = $Global::JobQueue->get(); - push(@jobs, $job); - } - } else { - ($arg) = $Global::JobQueue->{'commandlinequeue'}->{'arg_queue'}->get(); - push(@args, $arg); - } - } else { - # If there are no more command lines, then we have a process - # per command line, so no need to go further - $Global::JobQueue->empty() and last; - ($job) = $Global::JobQueue->get(); - push(@jobs, $job); - } - } - $wait_time_for_getting_args += time - $before_getting_arg; - $system_limit++; - - # Every simultaneous process uses 2 filehandles when grouping - # Every simultaneous process uses 2 filehandles when compressing - $more_filehandles = open($fh{$system_limit*10}, "<", "/dev/null") - && open($fh{$system_limit*10+2}, "<", "/dev/null") - && open($fh{$system_limit*10+3}, "<", "/dev/null") - && open($fh{$system_limit*10+4}, "<", "/dev/null"); - - # System process limit - my $child; - if($child = fork()) { - push (@children,$child); - $Global::unkilled_children{$child} = 1; - } elsif(defined $child) { - # The child takes one process slot - # It will be killed later - $SIG{TERM} = $Global::original_sig{TERM}; - sleep 10000000; - exit(0); - } else { - $max_system_proc_reached = 1; - } - my $forktime = time - $time - $wait_time_for_getting_args; - ::debug("run", "Time to fork $system_limit procs: $wait_time_for_getting_args ", - $forktime, - " (processes so far: ", $system_limit,")\n"); - if($system_limit > 10 and - $forktime > 1 and - $forktime > $system_limit * 0.01 - and not $slow_spawining_warning_printed) { - # It took more than 0.01 second to fork a processes on avg. - # Give the user a warning. He can press Ctrl-C if this - # sucks. - print $Global::original_stderr - ("parallel: Warning: Starting $system_limit processes took > $forktime sec.\n", - "Consider adjusting -j. Press CTRL-C to stop.\n"); - $slow_spawining_warning_printed = 1; - } - } - # Cleanup: Close the files - for (values %fh) { close $_ } - # Cleanup: Kill the children - for my $pid (@children) { - kill 9, $pid; - waitpid($pid,0); - delete $Global::unkilled_children{$pid}; - } - # Cleanup: Unget the command_lines or the @args - $Global::JobQueue->{'commandlinequeue'}->{'arg_queue'}->unget(@args); - $Global::JobQueue->unget(@jobs); - if($system_limit < $wanted_processes) { - # The system_limit is less than the wanted_processes - if($system_limit < 1 and not $Global::JobQueue->empty()) { - ::warning("Cannot spawn any jobs. Raising ulimit -u or /etc/security/limits.conf\n", - "or /proc/sys/kernel/pid_max may help.\n"); - ::wait_and_exit(255); - } - if(not $more_filehandles) { - ::warning("Only enough file handles to run ", $system_limit, " jobs in parallel.\n", - "Running 'parallel -j0 -N", $system_limit, " --pipe parallel -j0' or ", - "raising ulimit -n or /etc/security/limits.conf may help.\n"); - } - if($max_system_proc_reached) { - ::warning("Only enough available processes to run ", $system_limit, - " jobs in parallel. Raising ulimit -u or /etc/security/limits.conf\n", - "or /proc/sys/kernel/pid_max may help.\n"); - } - } - if($] == 5.008008 and $system_limit > 1000) { - # https://savannah.gnu.org/bugs/?36942 - $system_limit = 1000; - } - if($Global::JobQueue->empty()) { - $system_limit ||= 1; - } - if($self->string() ne ":" and - $system_limit > $Global::default_simultaneous_sshlogins) { - $system_limit = - $self->simultaneous_sshlogin_limit($system_limit); - } - return $system_limit; -} - -sub simultaneous_sshlogin_limit { - # Test by logging in wanted number of times simultaneously - # Returns: - # min($wanted_processes,$working_simultaneous_ssh_logins-1) - my $self = shift; - my $wanted_processes = shift; - if($self->{'time_to_login'}) { - return $wanted_processes; - } - - # Try twice because it guesses wrong sometimes - # Choose the minimal - my $ssh_limit = - ::min($self->simultaneous_sshlogin($wanted_processes), - $self->simultaneous_sshlogin($wanted_processes)); - if($ssh_limit < $wanted_processes) { - my $serverlogin = $self->serverlogin(); - ::warning("ssh to $serverlogin only allows ", - "for $ssh_limit simultaneous logins.\n", - "You may raise this by changing ", - "/etc/ssh/sshd_config:MaxStartups and MaxSessions on $serverlogin.\n", - "Using only ",$ssh_limit-1," connections ", - "to avoid race conditions.\n"); - } - # Race condition can cause problem if using all sshs. - if($ssh_limit > 1) { $ssh_limit -= 1; } - return $ssh_limit; -} - -sub simultaneous_sshlogin { - # Using $sshlogin try to see if we can do $wanted_processes - # simultaneous logins - # (ssh host echo simultaneouslogin & ssh host echo simultaneouslogin & ...)|grep simul|wc -l - # Returns: - # Number of succesful logins - my $self = shift; - my $wanted_processes = shift; - my $sshcmd = $self->sshcommand(); - my $serverlogin = $self->serverlogin(); - my $sshdelay = $opt::sshdelay ? "sleep $opt::sshdelay;" : ""; - my $cmd = "$sshdelay$sshcmd $serverlogin echo simultaneouslogin &1 &"x$wanted_processes; - ::debug("init", "Trying $wanted_processes logins at $serverlogin\n"); - open (my $simul_fh, "-|", "($cmd)|grep simultaneouslogin | wc -l") or - ::die_bug("simultaneouslogin"); - my $ssh_limit = <$simul_fh>; - close $simul_fh; - chomp $ssh_limit; - return $ssh_limit; -} - -sub set_ncpus { - my $self = shift; - $self->{'ncpus'} = shift; -} - -sub user_requested_processes { - # Parse the number of processes that the user asked for using -j - # Returns: - # the number of processes to run on this sshlogin - my $self = shift; - my $opt_P = shift; - my $processes; - if(defined $opt_P) { - if($opt_P =~ /^\+(\d+)$/) { - # E.g. -P +2 - my $j = $1; - $processes = - $self->ncpus() + $j; - } elsif ($opt_P =~ /^-(\d+)$/) { - # E.g. -P -2 - my $j = $1; - $processes = - $self->ncpus() - $j; - } elsif ($opt_P =~ /^(\d+(\.\d+)?)\%$/) { - # E.g. -P 10.5% - my $j = $1; - $processes = - $self->ncpus() * $j / 100; - } elsif ($opt_P =~ /^(\d+)$/) { - $processes = $1; - if($processes == 0) { - # -P 0 = infinity (or at least close) - $processes = $Global::infinity; - } - } elsif (-f $opt_P) { - $Global::max_procs_file = $opt_P; - $Global::max_procs_file_last_mod = (stat($Global::max_procs_file))[9]; - if(open(my $in_fh, "<", $Global::max_procs_file)) { - my $opt_P_file = join("",<$in_fh>); - close $in_fh; - $processes = $self->user_requested_processes($opt_P_file); - } else { - ::error("Cannot open $opt_P.\n"); - ::wait_and_exit(255); - } - } else { - ::error("Parsing of --jobs/-j/--max-procs/-P failed.\n"); - ::die_usage(); - } - $processes = ::ceil($processes); - } - return $processes; -} - -sub ncpus { - my $self = shift; - if(not defined $self->{'ncpus'}) { - my $sshcmd = $self->sshcommand(); - my $serverlogin = $self->serverlogin(); - if($serverlogin eq ":") { - if($opt::use_cpus_instead_of_cores) { - $self->{'ncpus'} = no_of_cpus(); - } else { - $self->{'ncpus'} = no_of_cores(); - } - } else { - my $ncpu; - my $sqe = ::shell_quote_scalar($Global::envvar); - if($opt::use_cpus_instead_of_cores) { - $ncpu = qx(echo|$sshcmd $serverlogin $sqe parallel --number-of-cpus); - } else { - ::debug("init",qq(echo|$sshcmd $serverlogin $sqe parallel --number-of-cores\n)); - $ncpu = qx(echo|$sshcmd $serverlogin $sqe parallel --number-of-cores); - } - chomp $ncpu; - if($ncpu =~ /^\s*[0-9]+\s*$/s) { - $self->{'ncpus'} = $ncpu; - } else { - ::warning("Could not figure out ", - "number of cpus on $serverlogin ($ncpu). Using 1.\n"); - $self->{'ncpus'} = 1; - } - } - } - return $self->{'ncpus'}; -} - -sub no_of_cpus { - # Returns: - # Number of physical CPUs - local $/="\n"; # If delimiter is set, then $/ will be wrong - my $no_of_cpus; - if ($^O eq 'linux') { - $no_of_cpus = no_of_cpus_gnu_linux() || no_of_cores_gnu_linux(); - } elsif ($^O eq 'freebsd') { - $no_of_cpus = no_of_cpus_freebsd(); - } elsif ($^O eq 'netbsd') { - $no_of_cpus = no_of_cpus_netbsd(); - } elsif ($^O eq 'openbsd') { - $no_of_cpus = no_of_cpus_openbsd(); - } elsif ($^O eq 'gnu') { - $no_of_cpus = no_of_cpus_hurd(); - } elsif ($^O eq 'darwin') { - $no_of_cpus = no_of_cpus_darwin(); - } elsif ($^O eq 'solaris') { - $no_of_cpus = no_of_cpus_solaris(); - } elsif ($^O eq 'aix') { - $no_of_cpus = no_of_cpus_aix(); - } elsif ($^O eq 'hpux') { - $no_of_cpus = no_of_cpus_hpux(); - } elsif ($^O eq 'nto') { - $no_of_cpus = no_of_cpus_qnx(); - } elsif ($^O eq 'svr5') { - $no_of_cpus = no_of_cpus_openserver(); - } elsif ($^O eq 'irix') { - $no_of_cpus = no_of_cpus_irix(); - } elsif ($^O eq 'dec_osf') { - $no_of_cpus = no_of_cpus_tru64(); - } else { - $no_of_cpus = (no_of_cpus_gnu_linux() - || no_of_cpus_freebsd() - || no_of_cpus_netbsd() - || no_of_cpus_openbsd() - || no_of_cpus_hurd() - || no_of_cpus_darwin() - || no_of_cpus_solaris() - || no_of_cpus_aix() - || no_of_cpus_hpux() - || no_of_cpus_qnx() - || no_of_cpus_openserver() - || no_of_cpus_irix() - || no_of_cpus_tru64() - # Number of cores is better than no guess for #CPUs - || nproc() - ); - } - if($no_of_cpus) { - chomp $no_of_cpus; - return $no_of_cpus; - } else { - ::warning("Cannot figure out number of cpus. Using 1.\n"); - return 1; - } -} - -sub no_of_cores { - # Returns: - # Number of CPU cores - local $/="\n"; # If delimiter is set, then $/ will be wrong - my $no_of_cores; - if ($^O eq 'linux') { - $no_of_cores = no_of_cores_gnu_linux(); - } elsif ($^O eq 'freebsd') { - $no_of_cores = no_of_cores_freebsd(); - } elsif ($^O eq 'netbsd') { - $no_of_cores = no_of_cores_netbsd(); - } elsif ($^O eq 'openbsd') { - $no_of_cores = no_of_cores_openbsd(); - } elsif ($^O eq 'gnu') { - $no_of_cores = no_of_cores_hurd(); - } elsif ($^O eq 'darwin') { - $no_of_cores = no_of_cores_darwin(); - } elsif ($^O eq 'solaris') { - $no_of_cores = no_of_cores_solaris(); - } elsif ($^O eq 'aix') { - $no_of_cores = no_of_cores_aix(); - } elsif ($^O eq 'hpux') { - $no_of_cores = no_of_cores_hpux(); - } elsif ($^O eq 'nto') { - $no_of_cores = no_of_cores_qnx(); - } elsif ($^O eq 'svr5') { - $no_of_cores = no_of_cores_openserver(); - } elsif ($^O eq 'irix') { - $no_of_cores = no_of_cores_irix(); - } elsif ($^O eq 'dec_osf') { - $no_of_cores = no_of_cores_tru64(); - } else { - $no_of_cores = (no_of_cores_gnu_linux() - || no_of_cores_freebsd() - || no_of_cores_netbsd() - || no_of_cores_openbsd() - || no_of_cores_hurd() - || no_of_cores_darwin() - || no_of_cores_solaris() - || no_of_cores_aix() - || no_of_cores_hpux() - || no_of_cores_qnx() - || no_of_cores_openserver() - || no_of_cores_irix() - || no_of_cores_tru64() - || nproc() - ); - } - if($no_of_cores) { - chomp $no_of_cores; - return $no_of_cores; - } else { - ::warning("Cannot figure out number of CPU cores. Using 1.\n"); - return 1; - } -} - -sub nproc { - # Returns: - # Number of cores using `nproc` - my $no_of_cores = `nproc 2>/dev/null`; - return $no_of_cores; -} - -sub no_of_cpus_gnu_linux { - # Returns: - # Number of physical CPUs on GNU/Linux - # undef if not GNU/Linux - my $no_of_cpus; - my $no_of_cores; - if(-e "/proc/cpuinfo") { - $no_of_cpus = 0; - $no_of_cores = 0; - my %seen; - open(my $in_fh, "<", "/proc/cpuinfo") || return undef; - while(<$in_fh>) { - if(/^physical id.*[:](.*)/ and not $seen{$1}++) { - $no_of_cpus++; - } - /^processor.*[:]/i and $no_of_cores++; - } - close $in_fh; - } - return ($no_of_cpus||$no_of_cores); -} - -sub no_of_cores_gnu_linux { - # Returns: - # Number of CPU cores on GNU/Linux - # undef if not GNU/Linux - my $no_of_cores; - if(-e "/proc/cpuinfo") { - $no_of_cores = 0; - open(my $in_fh, "<", "/proc/cpuinfo") || return undef; - while(<$in_fh>) { - /^processor.*[:]/i and $no_of_cores++; - } - close $in_fh; - } - return $no_of_cores; -} - -sub no_of_cpus_freebsd { - # Returns: - # Number of physical CPUs on FreeBSD - # undef if not FreeBSD - my $no_of_cpus = - (`sysctl -a dev.cpu 2>/dev/null | grep \%parent | awk '{ print \$2 }' | uniq | wc -l | awk '{ print \$1 }'` - or - `sysctl hw.ncpu 2>/dev/null | awk '{ print \$2 }'`); - chomp $no_of_cpus; - return $no_of_cpus; -} - -sub no_of_cores_freebsd { - # Returns: - # Number of CPU cores on FreeBSD - # undef if not FreeBSD - my $no_of_cores = - (`sysctl hw.ncpu 2>/dev/null | awk '{ print \$2 }'` - or - `sysctl -a hw 2>/dev/null | grep [^a-z]logicalcpu[^a-z] | awk '{ print \$2 }'`); - chomp $no_of_cores; - return $no_of_cores; -} - -sub no_of_cpus_netbsd { - # Returns: - # Number of physical CPUs on NetBSD - # undef if not NetBSD - my $no_of_cpus = `sysctl -n hw.ncpu 2>/dev/null`; - chomp $no_of_cpus; - return $no_of_cpus; -} - -sub no_of_cores_netbsd { - # Returns: - # Number of CPU cores on NetBSD - # undef if not NetBSD - my $no_of_cores = `sysctl -n hw.ncpu 2>/dev/null`; - chomp $no_of_cores; - return $no_of_cores; -} - -sub no_of_cpus_openbsd { - # Returns: - # Number of physical CPUs on OpenBSD - # undef if not OpenBSD - my $no_of_cpus = `sysctl -n hw.ncpu 2>/dev/null`; - chomp $no_of_cpus; - return $no_of_cpus; -} - -sub no_of_cores_openbsd { - # Returns: - # Number of CPU cores on OpenBSD - # undef if not OpenBSD - my $no_of_cores = `sysctl -n hw.ncpu 2>/dev/null`; - chomp $no_of_cores; - return $no_of_cores; -} - -sub no_of_cpus_hurd { - # Returns: - # Number of physical CPUs on HURD - # undef if not HURD - my $no_of_cpus = `nproc`; - chomp $no_of_cpus; - return $no_of_cpus; -} - -sub no_of_cores_hurd { - # Returns: - # Number of physical CPUs on HURD - # undef if not HURD - my $no_of_cores = `nproc`; - chomp $no_of_cores; - return $no_of_cores; -} - -sub no_of_cpus_darwin { - # Returns: - # Number of physical CPUs on Mac Darwin - # undef if not Mac Darwin - my $no_of_cpus = - (`sysctl -n hw.physicalcpu 2>/dev/null` - or - `sysctl -a hw 2>/dev/null | grep [^a-z]physicalcpu[^a-z] | awk '{ print \$2 }'`); - return $no_of_cpus; -} - -sub no_of_cores_darwin { - # Returns: - # Number of CPU cores on Mac Darwin - # undef if not Mac Darwin - my $no_of_cores = - (`sysctl -n hw.logicalcpu 2>/dev/null` - or - `sysctl -a hw 2>/dev/null | grep [^a-z]logicalcpu[^a-z] | awk '{ print \$2 }'`); - return $no_of_cores; -} - -sub no_of_cpus_solaris { - # Returns: - # Number of physical CPUs on Solaris - # undef if not Solaris - if(-x "/usr/sbin/psrinfo") { - my @psrinfo = `/usr/sbin/psrinfo`; - if($#psrinfo >= 0) { - return $#psrinfo +1; - } - } - if(-x "/usr/sbin/prtconf") { - my @prtconf = `/usr/sbin/prtconf | grep cpu..instance`; - if($#prtconf >= 0) { - return $#prtconf +1; - } - } - return undef; -} - -sub no_of_cores_solaris { - # Returns: - # Number of CPU cores on Solaris - # undef if not Solaris - if(-x "/usr/sbin/psrinfo") { - my @psrinfo = `/usr/sbin/psrinfo`; - if($#psrinfo >= 0) { - return $#psrinfo +1; - } - } - if(-x "/usr/sbin/prtconf") { - my @prtconf = `/usr/sbin/prtconf | grep cpu..instance`; - if($#prtconf >= 0) { - return $#prtconf +1; - } - } - return undef; -} - -sub no_of_cpus_aix { - # Returns: - # Number of physical CPUs on AIX - # undef if not AIX - my $no_of_cpus = 0; - if(-x "/usr/sbin/lscfg") { - open(my $in_fh, "-|", "/usr/sbin/lscfg -vs |grep proc | wc -l|tr -d ' '") - || return undef; - $no_of_cpus = <$in_fh>; - chomp ($no_of_cpus); - close $in_fh; - } - return $no_of_cpus; -} - -sub no_of_cores_aix { - # Returns: - # Number of CPU cores on AIX - # undef if not AIX - my $no_of_cores; - if(-x "/usr/bin/vmstat") { - open(my $in_fh, "-|", "/usr/bin/vmstat 1 1") || return undef; - while(<$in_fh>) { - /lcpu=([0-9]*) / and $no_of_cores = $1; - } - close $in_fh; - } - return $no_of_cores; -} - -sub no_of_cpus_hpux { - # Returns: - # Number of physical CPUs on HP-UX - # undef if not HP-UX - my $no_of_cpus = - (`/usr/bin/mpsched -s 2>&1 | grep 'Locality Domain Count' | awk '{ print \$4 }'`); - return $no_of_cpus; -} - -sub no_of_cores_hpux { - # Returns: - # Number of CPU cores on HP-UX - # undef if not HP-UX - my $no_of_cores = - (`/usr/bin/mpsched -s 2>&1 | grep 'Processor Count' | awk '{ print \$3 }'`); - return $no_of_cores; -} - -sub no_of_cpus_qnx { - # Returns: - # Number of physical CPUs on QNX - # undef if not QNX - # BUG: It is now known how to calculate this. - my $no_of_cpus = 0; - return $no_of_cpus; -} - -sub no_of_cores_qnx { - # Returns: - # Number of CPU cores on QNX - # undef if not QNX - # BUG: It is now known how to calculate this. - my $no_of_cores = 0; - return $no_of_cores; -} - -sub no_of_cpus_openserver { - # Returns: - # Number of physical CPUs on SCO OpenServer - # undef if not SCO OpenServer - my $no_of_cpus = 0; - if(-x "/usr/sbin/psrinfo") { - my @psrinfo = `/usr/sbin/psrinfo`; - if($#psrinfo >= 0) { - return $#psrinfo +1; - } - } - return $no_of_cpus; -} - -sub no_of_cores_openserver { - # Returns: - # Number of CPU cores on SCO OpenServer - # undef if not SCO OpenServer - my $no_of_cores = 0; - if(-x "/usr/sbin/psrinfo") { - my @psrinfo = `/usr/sbin/psrinfo`; - if($#psrinfo >= 0) { - return $#psrinfo +1; - } - } - return $no_of_cores; -} - -sub no_of_cpus_irix { - # Returns: - # Number of physical CPUs on IRIX - # undef if not IRIX - my $no_of_cpus = `hinv | grep HZ | grep Processor | awk '{print \$1}'`; - return $no_of_cpus; -} - -sub no_of_cores_irix { - # Returns: - # Number of CPU cores on IRIX - # undef if not IRIX - my $no_of_cores = `hinv | grep HZ | grep Processor | awk '{print \$1}'`; - return $no_of_cores; -} - -sub no_of_cpus_tru64 { - # Returns: - # Number of physical CPUs on Tru64 - # undef if not Tru64 - my $no_of_cpus = `sizer -pr`; - return $no_of_cpus; -} - -sub no_of_cores_tru64 { - # Returns: - # Number of CPU cores on Tru64 - # undef if not Tru64 - my $no_of_cores = `sizer -pr`; - return $no_of_cores; -} - -sub sshcommand { - my $self = shift; - if (not defined $self->{'sshcommand'}) { - $self->sshcommand_of_sshlogin(); - } - return $self->{'sshcommand'}; -} - -sub serverlogin { - my $self = shift; - if (not defined $self->{'serverlogin'}) { - $self->sshcommand_of_sshlogin(); - } - return $self->{'serverlogin'}; -} - -sub sshcommand_of_sshlogin { - # 'server' -> ('ssh -S /tmp/parallel-ssh-RANDOM/host-','server') - # 'user@server' -> ('ssh','user@server') - # 'myssh user@server' -> ('myssh','user@server') - # 'myssh -l user server' -> ('myssh -l user','server') - # '/usr/bin/myssh -l user server' -> ('/usr/bin/myssh -l user','server') - # Returns: - # sshcommand - defaults to 'ssh' - # login@host - my $self = shift; - my ($sshcmd, $serverlogin); - if($self->{'string'} =~ /(.+) (\S+)$/) { - # Own ssh command - $sshcmd = $1; $serverlogin = $2; - } else { - # Normal ssh - if($opt::controlmaster) { - # Use control_path to make ssh faster - my $control_path = $self->control_path_dir()."/ssh-%r@%h:%p"; - $sshcmd = "ssh -S ".$control_path; - $serverlogin = $self->{'string'}; - if(not $self->{'control_path'}{$control_path}++) { - # Master is not running for this control_path - # Start it - my $pid = fork(); - if($pid) { - $Global::sshmaster{$pid} ||= 1; - } else { - $SIG{'TERM'} = undef; - # Ignore the 'foo' being printed - open(STDOUT,">","/dev/null"); - # OpenSSH_3.6.1p2 gives 'tcgetattr: Invalid argument' with -tt - # STDERR >/dev/null to ignore "process_mux_new_session: tcgetattr: Invalid argument" - open(STDERR,">","/dev/null"); - open(STDIN,"<","/dev/null"); - # Run a sleep that outputs data, so it will discover if the ssh connection closes. - my $sleep = ::shell_quote_scalar('$|=1;while(1){sleep 1;print "foo\n"}'); - my @master = ("ssh", "-tt", "-MTS", $control_path, $serverlogin, "perl", "-e", $sleep); - exec(@master); - } - } - } else { - $sshcmd = "ssh"; $serverlogin = $self->{'string'}; - } - } - $self->{'sshcommand'} = $sshcmd; - $self->{'serverlogin'} = $serverlogin; -} - -sub control_path_dir { - # Returns: - # path to directory - my $self = shift; - if(not defined $self->{'control_path_dir'}) { - -e $ENV{'HOME'}."/.parallel" or mkdir $ENV{'HOME'}."/.parallel"; - -e $ENV{'HOME'}."/.parallel/tmp" or mkdir $ENV{'HOME'}."/.parallel/tmp"; - $self->{'control_path_dir'} = - File::Temp::tempdir($ENV{'HOME'} - . "/.parallel/tmp/control_path_dir-XXXX", - CLEANUP => 1); - } - return $self->{'control_path_dir'}; -} - -sub rsync_transfer_cmd { - # Command to run to transfer a file - # Input: - # $file = filename of file to transfer - # $workdir = destination dir - # Returns: - # $cmd = rsync command to run to transfer $file ("" if unreadable) - my $self = shift; - my $file = shift; - my $workdir = shift; - if(not -r $file) { - ::warning($file, " is not readable and will not be transferred.\n"); - return "true"; - } - my $rsync_destdir; - if($file =~ m:^/:) { - # rsync /foo/bar / - $rsync_destdir = "/"; - } else { - $rsync_destdir = ::shell_quote_file($workdir); - } - $file = ::shell_quote_file($file); - my $sshcmd = $self->sshcommand(); - my $rsync_opt = "-rlDzR -e" . ::shell_quote_scalar($sshcmd); - my $serverlogin = $self->serverlogin(); - # Make dir if it does not exist - return "( $sshcmd $serverlogin mkdir -p $rsync_destdir;" . - rsync()." $rsync_opt $file $serverlogin:$rsync_destdir )"; -} - -sub cleanup_cmd { - # Command to run to remove the remote file - # Input: - # $file = filename to remove - # $workdir = destination dir - # Returns: - # $cmd = ssh command to run to remove $file and empty parent dirs - my $self = shift; - my $file = shift; - my $workdir = shift; - my $f = $file; - if($f =~ m:/\./:) { - # foo/bar/./baz/quux => workdir/baz/quux - # /foo/bar/./baz/quux => workdir/baz/quux - $f =~ s:.*/\./:$workdir/:; - } elsif($f =~ m:^[^/]:) { - # foo/bar => workdir/foo/bar - $f = $workdir."/".$f; - } - my @subdirs = split m:/:, ::dirname($f); - my @rmdir; - my $dir = ""; - for(@subdirs) { - $dir .= $_."/"; - unshift @rmdir, ::shell_quote_file($dir); - } - my $rmdir = @rmdir ? "rmdir @rmdir 2>/dev/null;" : ""; - if(defined $opt::workdir and $opt::workdir eq "...") { - $rmdir .= "rm -rf " . ::shell_quote_file($workdir).';'; - } - - $f = ::shell_quote_file($f); - my $sshcmd = $self->sshcommand(); - my $serverlogin = $self->serverlogin(); - return "$sshcmd $serverlogin ".::shell_quote_scalar("(rm -f $f; $rmdir)"); -} - -{ - my $rsync; - - sub rsync { - # rsync 3.1.x uses protocol 31 which is unsupported by 2.5.7. - # If the version >= 3.1.0: downgrade to protocol 30 - if(not $rsync) { - my @out = `rsync --version`; - for (@out) { - if(/version (\d+.\d+)(.\d+)?/) { - if($1 >= 3.1) { - # Version 3.1.0 or later: Downgrade to protocol 30 - $rsync = "rsync --protocol 30"; - } else { - $rsync = "rsync"; - } - } - } - $rsync or ::die_bug("Cannot figure out version of rsync: @out"); - } - return $rsync; - } -} - - -package JobQueue; - -sub new { - my $class = shift; - my $commandref = shift; - my $read_from = shift; - my $context_replace = shift; - my $max_number_of_args = shift; - my $return_files = shift; - my $commandlinequeue = CommandLineQueue->new - ($commandref, $read_from, $context_replace, $max_number_of_args, - $return_files); - my @unget = (); - return bless { - 'unget' => \@unget, - 'commandlinequeue' => $commandlinequeue, - 'total_jobs' => undef, - }, ref($class) || $class; -} - -sub get { - my $self = shift; - - if(@{$self->{'unget'}}) { - my $job = shift @{$self->{'unget'}}; - return ($job); - } else { - my $commandline = $self->{'commandlinequeue'}->get(); - if(defined $commandline) { - my $job = Job->new($commandline); - return $job; - } else { - return undef; - } - } -} - -sub unget { - my $self = shift; - unshift @{$self->{'unget'}}, @_; -} - -sub empty { - my $self = shift; - my $empty = (not @{$self->{'unget'}}) - && $self->{'commandlinequeue'}->empty(); - ::debug("run", "JobQueue->empty $empty "); - return $empty; -} - -sub total_jobs { - my $self = shift; - if(not defined $self->{'total_jobs'}) { - my $job; - my @queue; - my $start = time; - while($job = $self->get()) { - if(time - $start > 10) { - ::warning("Reading all arguments takes longer than 10 seconds.\n"); - $opt::eta && ::warning("Consider removing --eta.\n"); - $opt::bar && ::warning("Consider removing --bar.\n"); - last; - } - push @queue, $job; - } - while($job = $self->get()) { - push @queue, $job; - } - - $self->unget(@queue); - $self->{'total_jobs'} = $#queue+1; - } - return $self->{'total_jobs'}; -} - -sub next_seq { - my $self = shift; - - return $self->{'commandlinequeue'}->seq(); -} - -sub quote_args { - my $self = shift; - return $self->{'commandlinequeue'}->quote_args(); -} - - -package Job; - -sub new { - my $class = shift; - my $commandlineref = shift; - return bless { - 'commandline' => $commandlineref, # CommandLine object - 'workdir' => undef, # --workdir - 'stdin' => undef, # filehandle for stdin (used for --pipe) - # filename for writing stdout to (used for --files) - 'remaining' => "", # remaining data not sent to stdin (used for --pipe) - 'datawritten' => 0, # amount of data sent via stdin (used for --pipe) - 'transfersize' => 0, # size of files using --transfer - 'returnsize' => 0, # size of files using --return - 'pid' => undef, - # hash of { SSHLogins => number of times the command failed there } - 'failed' => undef, - 'sshlogin' => undef, - # The commandline wrapped with rsync and ssh - 'sshlogin_wrap' => undef, - 'exitstatus' => undef, - 'exitsignal' => undef, - # Timestamp for timeout if any - 'timeout' => undef, - 'virgin' => 1, - }, ref($class) || $class; -} - -sub replaced { - my $self = shift; - $self->{'commandline'} or ::die_bug("commandline empty"); - return $self->{'commandline'}->replaced(); -} - -sub seq { - my $self = shift; - return $self->{'commandline'}->seq(); -} - -sub slot { - my $self = shift; - return $self->{'commandline'}->slot(); -} - -{ - my($cattail); - - sub cattail { - # Returns: - # $cattail = perl program for: cattail "decompress program" writerpid [file_to_decompress or stdin] [file_to_unlink] - if(not $cattail) { - $cattail = q{ - # cat followed by tail. - # If $writerpid dead: finish after this round - use Fcntl; - - $|=1; - - my ($cmd, $writerpid, $read_file, $unlink_file) = @ARGV; - if($read_file) { - open(IN,"<",$read_file) || die("cattail: Cannot open $read_file"); - } else { - *IN = *STDIN; - } - - my $flags; - fcntl(IN, F_GETFL, $flags) || die $!; # Get the current flags on the filehandle - $flags |= O_NONBLOCK; # Add non-blocking to the flags - fcntl(IN, F_SETFL, $flags) || die $!; # Set the flags on the filehandle - open(OUT,"|-",$cmd) || die("cattail: Cannot run $cmd"); - - while(1) { - # clear EOF - seek(IN,0,1); - my $writer_running = kill 0, $writerpid; - $read = sysread(IN,$buf,32768); - if($read) { - # We can unlink the file now: The writer has written something - -e $unlink_file and unlink $unlink_file; - # Blocking print - while($buf) { - my $bytes_written = syswrite(OUT,$buf); - # syswrite may be interrupted by SIGHUP - substr($buf,0,$bytes_written) = ""; - } - # Something printed: Wait less next time - $sleep /= 2; - } else { - if(eof(IN) and not $writer_running) { - # Writer dead: There will never be more to read => exit - exit; - } - # TODO This could probably be done more efficiently using select(2) - # Nothing read: Wait longer before next read - # Up to 30 milliseconds - $sleep = ($sleep < 30) ? ($sleep * 1.001 + 0.01) : ($sleep); - usleep($sleep); - } - } - - sub usleep { - # Sleep this many milliseconds. - my $secs = shift; - select(undef, undef, undef, $secs/1000); - } - }; - $cattail =~ s/#.*//mg; - $cattail =~ s/\s+/ /g; - } - return $cattail; - } -} - -sub openoutputfiles { - # Open files for STDOUT and STDERR - # Set file handles in $self->fh - my $self = shift; - my ($outfhw, $errfhw, $outname, $errname); - if($opt::results) { - my $args_as_dirname = $self->{'commandline'}->args_as_dirname(); - # Output in: prefix/name1/val1/name2/val2/stdout - my $dir = $opt::results."/".$args_as_dirname; - if(eval{ File::Path::mkpath($dir); }) { - # OK - } else { - # mkpath failed: Argument probably too long. - # Set $Global::max_file_length, which will keep the individual - # dir names shorter than the max length - max_file_name_length($opt::results); - $args_as_dirname = $self->{'commandline'}->args_as_dirname(); - # prefix/name1/val1/name2/val2/ - $dir = $opt::results."/".$args_as_dirname; - File::Path::mkpath($dir); - } - # prefix/name1/val1/name2/val2/stdout - $outname = "$dir/stdout"; - if(not open($outfhw, "+>", $outname)) { - ::error("Cannot write to `$outname'.\n"); - ::wait_and_exit(255); - } - # prefix/name1/val1/name2/val2/stderr - $errname = "$dir/stderr"; - if(not open($errfhw, "+>", $errname)) { - ::error("Cannot write to `$errname'.\n"); - ::wait_and_exit(255); - } - $self->set_fh(1,"unlink",""); - $self->set_fh(2,"unlink",""); - } elsif(not $opt::ungroup) { - # To group we create temporary files for STDOUT and STDERR - # To avoid the cleanup unlink the files immediately (but keep them open) - if(@Global::tee_jobs) { - # files must be removed when the tee is done - } elsif($opt::files) { - ($outfhw, $outname) = ::tmpfile(SUFFIX => ".par"); - ($errfhw, $errname) = ::tmpfile(SUFFIX => ".par"); - # --files => only remove stderr - $self->set_fh(1,"unlink",""); - $self->set_fh(2,"unlink",$errname); - } else { - ($outfhw, $outname) = ::tmpfile(SUFFIX => ".par"); - ($errfhw, $errname) = ::tmpfile(SUFFIX => ".par"); - $self->set_fh(1,"unlink",$outname); - $self->set_fh(2,"unlink",$errname); - } - } else { - # --ungroup - open($outfhw,">&",$Global::fd{1}) || die; - open($errfhw,">&",$Global::fd{2}) || die; - # File name must be empty as it will otherwise be printed - $outname = ""; - $errname = ""; - $self->set_fh(1,"unlink",$outname); - $self->set_fh(2,"unlink",$errname); - } - # Set writing FD - $self->set_fh(1,'w',$outfhw); - $self->set_fh(2,'w',$errfhw); - $self->set_fh(1,'name',$outname); - $self->set_fh(2,'name',$errname); - if($opt::compress) { - # Send stdout to stdin for $opt::compress_program(1) - # Send stderr to stdin for $opt::compress_program(2) - # cattail get pid: $pid = $self->fh($fdno,'rpid'); - my $cattail = cattail(); - for my $fdno (1,2) { - my $wpid = open(my $fdw,"|-","$opt::compress_program >>". - $self->fh($fdno,'name')) || die $?; - $self->set_fh($fdno,'w',$fdw); - $self->set_fh($fdno,'wpid',$wpid); - my $rpid = open(my $fdr, "-|", "perl", "-e", $cattail, - $opt::decompress_program, $wpid, - $self->fh($fdno,'name'),$self->fh($fdno,'unlink')) || die $?; - $self->set_fh($fdno,'r',$fdr); - $self->set_fh($fdno,'rpid',$rpid); - } - } elsif(not $opt::ungroup) { - # Set reading FD if using --group (--ungroup does not need) - for my $fdno (1,2) { - # Re-open the file for reading - # so fdw can be closed separately - # and fdr can be seeked separately (for --line-buffer) - open(my $fdr,"<", $self->fh($fdno,'name')) || - ::die_bug("fdr: Cannot open ".$self->fh($fdno,'name')); - $self->set_fh($fdno,'r',$fdr); - # Unlink if required - $Global::debug or unlink $self->fh($fdno,"unlink"); - } - } - if($opt::linebuffer) { - # Set non-blocking when using --linebuffer - $Global::use{"Fcntl"} ||= eval "use Fcntl qw(:DEFAULT :flock); 1;"; - for my $fdno (1,2) { - my $fdr = $self->fh($fdno,'r'); - my $flags; - fcntl($fdr, &F_GETFL, $flags) || die $!; # Get the current flags on the filehandle - $flags |= &O_NONBLOCK; # Add non-blocking to the flags - fcntl($fdr, &F_SETFL, $flags) || die $!; # Set the flags on the filehandle - } - } -} - -sub max_file_name_length { - # Figure out the max length of a subdir - # TODO and the max total length - # Ext4 = 255,130816 - my $testdir = shift; - - my $upper = 8_000_000; - my $len = 8; - my $dir="x"x$len; - do { - rmdir($testdir."/".$dir); - $len *= 16; - $dir="x"x$len; - } while (mkdir $testdir."/".$dir); - # Then search for the actual max length between $len/16 and $len - my $min = $len/16; - my $max = $len; - while($max-$min > 5) { - # If we are within 5 chars of the exact value: - # it is not worth the extra time to find the exact value - my $test = int(($min+$max)/2); - $dir="x"x$test; - if(mkdir $testdir."/".$dir) { - rmdir($testdir."/".$dir); - $min = $test; - } else { - $max = $test; - } - } - $Global::max_file_length = $min; - return $min; -} - -sub set_fh { - # Set file handle - my ($self, $fd_no, $key, $fh) = @_; - $self->{'fd'}{$fd_no,$key} = $fh; -} - -sub fh { - # Get file handle - my ($self, $fd_no, $key) = @_; - return $self->{'fd'}{$fd_no,$key}; -} - -sub write { - my $self = shift; - my $remaining_ref = shift; - my $stdin_fh = $self->fh(0,"w"); - syswrite($stdin_fh,$$remaining_ref); -} - -sub set_stdin_buffer { - # Copy stdin buffer from $block_ref up to $endpos - # Prepend with $header_ref - # Remove $recstart and $recend if needed - # Input: - # $header_ref = ref to $header to prepend - # $block_ref = ref to $block to pass on - # $endpos = length of $block to pass on - # $recstart = --recstart regexp - # $recend = --recend regexp - # Returns: - # N/A - my $self = shift; - my ($header_ref,$block_ref,$endpos,$recstart,$recend) = @_; - $self->{'stdin_buffer'} = ($self->virgin() ? $$header_ref : "").substr($$block_ref,0,$endpos); - if($opt::remove_rec_sep) { - remove_rec_sep(\$self->{'stdin_buffer'},$recstart,$recend); - } - $self->{'stdin_buffer_length'} = length $self->{'stdin_buffer'}; - $self->{'stdin_buffer_pos'} = 0; -} - -sub stdin_buffer_length { - my $self = shift; - return $self->{'stdin_buffer_length'}; -} - -sub remove_rec_sep { - my ($block_ref,$recstart,$recend) = @_; - # Remove record separator - $$block_ref =~ s/$recend$recstart//gos; - $$block_ref =~ s/^$recstart//os; - $$block_ref =~ s/$recend$//os; -} - -sub non_block_write { - my $self = shift; - my $something_written = 0; - use POSIX qw(:errno_h); -# use Fcntl; -# my $flags = ''; - for my $buf (substr($self->{'stdin_buffer'},$self->{'stdin_buffer_pos'})) { - my $in = $self->fh(0,"w"); -# fcntl($in, F_GETFL, $flags) -# or die "Couldn't get flags for HANDLE : $!\n"; -# $flags |= O_NONBLOCK; -# fcntl($in, F_SETFL, $flags) -# or die "Couldn't set flags for HANDLE: $!\n"; - my $rv = syswrite($in, $buf); - if (!defined($rv) && $! == EAGAIN) { - # would block - $something_written = 0; - } elsif ($self->{'stdin_buffer_pos'}+$rv != $self->{'stdin_buffer_length'}) { - # incomplete write - # Remove the written part - $self->{'stdin_buffer_pos'} += $rv; - $something_written = $rv; - } else { - # successfully wrote everything - my $a=""; - $self->set_stdin_buffer(\$a,\$a,"",""); - $something_written = $rv; - } - } - - ::debug("pipe", "Non-block: ", $something_written); - return $something_written; -} - - -sub virgin { - my $self = shift; - return $self->{'virgin'}; -} - -sub set_virgin { - my $self = shift; - $self->{'virgin'} = shift; -} - -sub pid { - my $self = shift; - return $self->{'pid'}; -} - -sub set_pid { - my $self = shift; - $self->{'pid'} = shift; -} - -sub starttime { - # Returns: - # UNIX-timestamp this job started - my $self = shift; - return sprintf("%.3f",$self->{'starttime'}); -} - -sub set_starttime { - my $self = shift; - my $starttime = shift || ::now(); - $self->{'starttime'} = $starttime; -} - -sub runtime { - # Returns: - # Run time in seconds - my $self = shift; - return sprintf("%.3f",int(($self->endtime() - $self->starttime())*1000)/1000); -} - -sub endtime { - # Returns: - # UNIX-timestamp this job ended - # 0 if not ended yet - my $self = shift; - return ($self->{'endtime'} || 0); -} - -sub set_endtime { - my $self = shift; - my $endtime = shift; - $self->{'endtime'} = $endtime; -} - -sub timedout { - # Is the job timedout? - # Input: - # $delta_time = time that the job may run - # Returns: - # True or false - my $self = shift; - my $delta_time = shift; - return time > $self->{'starttime'} + $delta_time; -} - -sub kill { - # Kill the job. - # Send the signals to (grand)*children and pid. - # If no signals: TERM TERM KILL - # Wait 200 ms after each TERM. - # Input: - # @signals = signals to send - my $self = shift; - my @signals = @_; - my @family_pids = $self->family_pids(); - # Record this jobs as failed - $self->set_exitstatus(-1); - # Send two TERMs to give time to clean up - ::debug("run", "Kill seq ", $self->seq(), "\n"); - my @send_signals = @signals || ("TERM", "TERM", "KILL"); - for my $signal (@send_signals) { - my $alive = 0; - for my $pid (@family_pids) { - if(kill 0, $pid) { - # The job still running - kill $signal, $pid; - $alive = 1; - } - } - # If a signal was given as input, do not do the sleep below - @signals and next; - - if($signal eq "TERM" and $alive) { - # Wait up to 200 ms between TERMs - but only if any pids are alive - my $sleep = 1; - for (my $sleepsum = 0; kill 0, $family_pids[0] and $sleepsum < 200; - $sleepsum += $sleep) { - $sleep = ::reap_usleep($sleep); - } - } - } -} - -sub family_pids { - # Find the pids with this->pid as (grand)*parent - # Returns: - # @pids = pids of (grand)*children - my $self = shift; - my $pid = $self->pid(); - my @pids; - - my ($children_of_ref, $parent_of_ref, $name_of_ref) = ::pid_table(); - - my @more = ($pid); - # While more (grand)*children - while(@more) { - my @m; - push @pids, @more; - for my $parent (@more) { - if($children_of_ref->{$parent}) { - # add the children of this parent - push @m, @{$children_of_ref->{$parent}}; - } - } - @more = @m; - } - return (@pids); -} - -sub failed { - # return number of times failed for this $sshlogin - # Input: - # $sshlogin - # Returns: - # Number of times failed for $sshlogin - my $self = shift; - my $sshlogin = shift; - return $self->{'failed'}{$sshlogin}; -} - -sub failed_here { - # return number of times failed for the current $sshlogin - # Returns: - # Number of times failed for this sshlogin - my $self = shift; - return $self->{'failed'}{$self->sshlogin()}; -} - -sub add_failed { - # increase the number of times failed for this $sshlogin - my $self = shift; - my $sshlogin = shift; - $self->{'failed'}{$sshlogin}++; -} - -sub add_failed_here { - # increase the number of times failed for the current $sshlogin - my $self = shift; - $self->{'failed'}{$self->sshlogin()}++; -} - -sub reset_failed { - # increase the number of times failed for this $sshlogin - my $self = shift; - my $sshlogin = shift; - delete $self->{'failed'}{$sshlogin}; -} - -sub reset_failed_here { - # increase the number of times failed for this $sshlogin - my $self = shift; - delete $self->{'failed'}{$self->sshlogin()}; -} - -sub min_failed { - # Returns: - # the number of sshlogins this command has failed on - # the minimal number of times this command has failed - my $self = shift; - my $min_failures = - ::min(map { $self->{'failed'}{$_} } keys %{$self->{'failed'}}); - my $number_of_sshlogins_failed_on = scalar keys %{$self->{'failed'}}; - return ($number_of_sshlogins_failed_on,$min_failures); -} - -sub total_failed { - # Returns: - # $total_failures = the number of times this command has failed - my $self = shift; - my $total_failures = 0; - for (values %{$self->{'failed'}}) { - $total_failures += $_; - } - return $total_failures; -} - -sub wrapped { - # Wrap command with: - # * --shellquote - # * --nice - # * --cat - # * --fifo - # * --sshlogin - # * --pipepart (@Global::cat_partials) - # * --pipe - # * --tmux - # The ordering of the wrapping is important: - # * --nice/--cat/--fifo should be done on the remote machine - # * --pipepart/--pipe should be done on the local machine inside --tmux - # Uses: - # $Global::envvar - # $opt::shellquote - # $opt::nice - # $Global::shell - # $opt::cat - # $opt::fifo - # @Global::cat_partials - # $opt::pipe - # $opt::tmux - # Returns: - # $self->{'wrapped'} = the command wrapped with the above - my $self = shift; - if(not defined $self->{'wrapped'}) { - my $command = $Global::envvar.$self->replaced(); - if($opt::shellquote) { - # Prepend echo - # and quote twice - $command = "echo " . - ::shell_quote_scalar(::shell_quote_scalar($command)); - } - if($opt::nice) { - # Prepend \nice -n19 $SHELL -c - # and quote. - # The '\' before nice is needed to avoid tcsh's built-in - $command = '\nice'. " -n". $opt::nice. " ". - $Global::shell. " -c ". - ::shell_quote_scalar($command); - } - if($opt::cat) { - # Prepend 'cat > {};' - # Append '_EXIT=$?;(rm {};exit $_EXIT)' - $command = - $self->{'commandline'}->replace_placeholders(["cat > \257<\257>; "], 0, 0). - $command. - $self->{'commandline'}->replace_placeholders( - ["; _EXIT=\$?; rm \257<\257>; exit \$_EXIT"], 0, 0); - } elsif($opt::fifo) { - # Prepend 'mkfifo {}; (' - # Append ') & _PID=$!; cat > {}; wait $_PID; _EXIT=$?;(rm {};exit $_EXIT)' - $command = - $self->{'commandline'}->replace_placeholders(["mkfifo \257<\257>; ("], 0, 0). - $command. - $self->{'commandline'}->replace_placeholders([") & _PID=\$!; cat > \257<\257>; ", - "wait \$_PID; _EXIT=\$?; ", - "rm \257<\257>; exit \$_EXIT"], - 0,0); - } - # Wrap with ssh + tranferring of files - $command = $self->sshlogin_wrap($command); - if(@Global::cat_partials) { - # Prepend: - # < /tmp/foo perl -e 'while(@ARGV) { sysseek(STDIN,shift,0) || die; $left = shift; while($read = sysread(STDIN,$buf, ($left > 32768 ? 32768 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }' 0 0 0 11 | - $command = (shift @Global::cat_partials). "|". "(". $command. ")"; - } elsif($opt::pipe) { - # Prepend EOF-detector to avoid starting $command if EOF. - # The $tmpfile might exist if run on a remote system - we accept that risk - my ($dummy_fh, $tmpfile) = ::tmpfile(SUFFIX => ".chr"); - # Unlink to avoid leaving files if --dry-run or --sshlogin - unlink $tmpfile; - $command = - # Exit value: - # empty input = true - # some input = exit val from command - qq{ sh -c 'dd bs=1 count=1 of=$tmpfile 2>/dev/null'; }. - qq{ test \! -s "$tmpfile" && rm -f "$tmpfile" && exec true; }. - qq{ (cat $tmpfile; rm $tmpfile; cat - ) | }. - "($command);"; - } - if($opt::tmux) { - # Wrap command with 'tmux' - $command = $self->tmux_wrap($command); - } - $self->{'wrapped'} = $command; - } - return $self->{'wrapped'}; -} - -sub set_sshlogin { - my $self = shift; - my $sshlogin = shift; - $self->{'sshlogin'} = $sshlogin; - delete $self->{'sshlogin_wrap'}; # If sshlogin is changed the wrap is wrong - delete $self->{'wrapped'}; -} - -sub sshlogin { - my $self = shift; - return $self->{'sshlogin'}; -} - -sub sshlogin_wrap { - # Wrap the command with the commands needed to run remotely - # Returns: - # $self->{'sshlogin_wrap'} = command wrapped with ssh+transfer commands - my $self = shift; - my $command = shift; - if(not defined $self->{'sshlogin_wrap'}) { - my $sshlogin = $self->sshlogin(); - my $sshcmd = $sshlogin->sshcommand(); - my $serverlogin = $sshlogin->serverlogin(); - my ($pre,$post,$cleanup)=("","",""); - - if($serverlogin eq ":") { - # No transfer neeeded - $self->{'sshlogin_wrap'} = $command; - } else { - # --transfer - $pre .= $self->sshtransfer(); - # --return - $post .= $self->sshreturn(); - # --cleanup - $post .= $self->sshcleanup(); - if($post) { - # We need to save the exit status of the job - $post = '_EXIT_status=$?; ' . $post . ' exit $_EXIT_status;'; - } - # If the remote login shell is (t)csh then use 'setenv' - # otherwise use 'export' - # We cannot use parse_env_var(), as PARALLEL_SEQ changes - # for each command - my $parallel_env = - ($Global::envwarn - . q{ 'eval `echo $SHELL | grep "/t\\{0,1\\}csh" > /dev/null } - . q{ && echo setenv PARALLEL_SEQ '$PARALLEL_SEQ'\; } - . q{ setenv PARALLEL_PID '$PARALLEL_PID' } - . q{ || echo PARALLEL_SEQ='$PARALLEL_SEQ'\;export PARALLEL_SEQ\; } - . q{ PARALLEL_PID='$PARALLEL_PID'\;export PARALLEL_PID` ;' }); - my $remote_pre = ""; - my $ssh_options = ""; - if(($opt::pipe or $opt::pipepart) and $opt::ctrlc - or - not ($opt::pipe or $opt::pipepart) and not $opt::noctrlc) { - # TODO Determine if this is needed - # Propagating CTRL-C to kill remote jobs requires - # remote jobs to be run with a terminal. - $ssh_options = "-tt -oLogLevel=quiet"; -# $ssh_options = ""; - # tty - check if we have a tty. - # stty: - # -onlcr - make output 8-bit clean - # isig - pass CTRL-C as signal - # -echo - do not echo input - $remote_pre .= ::shell_quote_scalar('tty >/dev/null && stty isig -onlcr -echo;'); - } - if($opt::workdir) { - my $wd = ::shell_quote_file($self->workdir()); - $remote_pre .= ::shell_quote_scalar("mkdir -p ") . $wd . - ::shell_quote_scalar("; cd ") . $wd . - # exit 255 (instead of exec false) would be the correct thing, - # but that fails on tcsh - ::shell_quote_scalar(qq{ || exec false;}); - } - # This script is to solve the problem of - # * not mixing STDERR and STDOUT - # * terminating with ctrl-c - # It works on Linux but not Solaris - # Finishes on Solaris, but wrong exit code: - # $SIG{CHLD} = sub {exit ($?&127 ? 128+($?&127) : 1+$?>>8)}; - # Hangs on Solaris, but correct exit code on Linux: - # $SIG{CHLD} = sub { $done = 1 }; - # $p->poll; - my $signal_script = "perl -e '". - q{ - use IO::Poll; - $SIG{CHLD} = sub { $done = 1 }; - $p = IO::Poll->new; - $p->mask(STDOUT, POLLHUP); - $pid=fork; unless($pid) {setpgrp; exec $ENV{SHELL}, "-c", @ARGV; die "exec: $!\n"} - $p->poll; - kill SIGHUP, -${pid} unless $done; - wait; exit ($?&127 ? 128+($?&127) : 1+$?>>8) - } . "' "; - $signal_script =~ s/\s+/ /g; - - $self->{'sshlogin_wrap'} = - ($pre - . "$sshcmd $ssh_options $serverlogin $parallel_env " - . $remote_pre -# . ::shell_quote_scalar($signal_script . ::shell_quote_scalar($command)) - . ::shell_quote_scalar($command) - . ";" - . $post); - } - } - return $self->{'sshlogin_wrap'}; -} - -sub transfer { - # Files to transfer - # Returns: - # @transfer - File names of files to transfer - my $self = shift; - my @transfer = (); - $self->{'transfersize'} = 0; - if($opt::transfer) { - for my $record (@{$self->{'commandline'}{'arg_list'}}) { - # Merge arguments from records into args - for my $arg (@$record) { - CORE::push @transfer, $arg->orig(); - # filesize - if(-e $arg->orig()) { - $self->{'transfersize'} += (stat($arg->orig()))[7]; - } - } - } - } - return @transfer; -} - -sub transfersize { - my $self = shift; - return $self->{'transfersize'}; -} - -sub sshtransfer { - # Returns for each transfer file: - # rsync $file remote:$workdir - my $self = shift; - my @pre; - my $sshlogin = $self->sshlogin(); - my $workdir = $self->workdir(); - for my $file ($self->transfer()) { - push @pre, $sshlogin->rsync_transfer_cmd($file,$workdir).";"; - } - return join("",@pre); -} - -sub return { - # Files to return - # Non-quoted and with {...} substituted - # Returns: - # @non_quoted_filenames - my $self = shift; - return $self->{'commandline'}-> - replace_placeholders($self->{'commandline'}{'return_files'},0,0); -} - -sub returnsize { - # This is called after the job has finished - # Returns: - # $number_of_bytes transferred in return - my $self = shift; - for my $file ($self->return()) { - if(-e $file) { - $self->{'returnsize'} += (stat($file))[7]; - } - } - return $self->{'returnsize'}; -} - -sub sshreturn { - # Returns for each return-file: - # rsync remote:$workdir/$file . - my $self = shift; - my $sshlogin = $self->sshlogin(); - my $sshcmd = $sshlogin->sshcommand(); - my $serverlogin = $sshlogin->serverlogin(); - my $rsync_opt = "-rlDzR -e".::shell_quote_scalar($sshcmd); - my $pre = ""; - for my $file ($self->return()) { - $file =~ s:^\./::g; # Remove ./ if any - my $relpath = ($file !~ m:^/:); # Is the path relative? - my $cd = ""; - my $wd = ""; - if($relpath) { - # rsync -avR /foo/./bar/baz.c remote:/tmp/ - # == (on old systems) - # rsync -avR --rsync-path="cd /foo; rsync" remote:bar/baz.c /tmp/ - $wd = ::shell_quote_file($self->workdir()."/"); - } - # Only load File::Basename if actually needed - $Global::use{"File::Basename"} ||= eval "use File::Basename; 1;"; - # dir/./file means relative to dir, so remove dir on remote - $file =~ m:(.*)/\./:; - my $basedir = $1 ? ::shell_quote_file($1."/") : ""; - my $nobasedir = $file; - $nobasedir =~ s:.*/\./::; - $cd = ::shell_quote_file(::dirname($nobasedir)); - my $rsync_cd = '--rsync-path='.::shell_quote_scalar("cd $wd$cd; rsync"); - my $basename = ::shell_quote_scalar(::shell_quote_file(basename($file))); - # --return - # mkdir -p /home/tange/dir/subdir/; - # rsync (--protocol 30) -rlDzR --rsync-path="cd /home/tange/dir/subdir/; rsync" - # server:file.gz /home/tange/dir/subdir/ - $pre .= "mkdir -p $basedir$cd; ".$sshlogin->rsync()." $rsync_cd $rsync_opt $serverlogin:". - $basename . " ".$basedir.$cd.";"; - } - return $pre; -} - -sub sshcleanup { - # Return the sshcommand needed to remove the file - # Returns: - # ssh command needed to remove files from sshlogin - my $self = shift; - my $sshlogin = $self->sshlogin(); - my $sshcmd = $sshlogin->sshcommand(); - my $serverlogin = $sshlogin->serverlogin(); - my $workdir = $self->workdir(); - my $cleancmd = ""; - - for my $file ($self->cleanup()) { - my @subworkdirs = parentdirs_of($file); - $cleancmd .= $sshlogin->cleanup_cmd($file,$workdir).";"; - } - if(defined $opt::workdir and $opt::workdir eq "...") { - $cleancmd .= "$sshcmd $serverlogin rm -rf " . ::shell_quote_scalar($workdir).';'; - } - return $cleancmd; -} - -sub cleanup { - # Returns: - # Files to remove at cleanup - my $self = shift; - if($opt::cleanup) { - my @transfer = $self->transfer(); - my @return = $self->return(); - return (@transfer,@return); - } else { - return (); - } -} - -sub workdir { - # Returns: - # the workdir on a remote machine - my $self = shift; - if(not defined $self->{'workdir'}) { - my $workdir; - if(defined $opt::workdir) { - if($opt::workdir eq ".") { - # . means current dir - my $home = $ENV{'HOME'}; - eval 'use Cwd'; - my $cwd = cwd(); - $workdir = $cwd; - if($home) { - # If homedir exists: remove the homedir from - # workdir if cwd starts with homedir - # E.g. /home/foo/my/dir => my/dir - # E.g. /tmp/my/dir => /tmp/my/dir - my ($home_dev, $home_ino) = (stat($home))[0,1]; - my $parent = ""; - my @dir_parts = split(m:/:,$cwd); - my $part; - while(defined ($part = shift @dir_parts)) { - $part eq "" and next; - $parent .= "/".$part; - my ($parent_dev, $parent_ino) = (stat($parent))[0,1]; - if($parent_dev == $home_dev and $parent_ino == $home_ino) { - # dev and ino is the same: We found the homedir. - $workdir = join("/",@dir_parts); - last; - } - } - } - if($workdir eq "") { - $workdir = "."; - } - } elsif($opt::workdir eq "...") { - $workdir = ".parallel/tmp/" . ::hostname() . "-" . $$ - . "-" . $self->seq(); - } else { - $workdir = $opt::workdir; - # Rsync treats /./ special. We don't want that - $workdir =~ s:/\./:/:g; # Remove /./ - $workdir =~ s:/+$::; # Remove ending / if any - $workdir =~ s:^\./::g; # Remove starting ./ if any - } - } else { - $workdir = "."; - } - $self->{'workdir'} = ::shell_quote_scalar($workdir); - } - return $self->{'workdir'}; -} - -sub parentdirs_of { - # Return: - # all parentdirs except . of this dir or file - sorted desc by length - my $d = shift; - my @parents = (); - while($d =~ s:/[^/]+$::) { - if($d ne ".") { - push @parents, $d; - } - } - return @parents; -} - -sub start { - # Setup STDOUT and STDERR for a job and start it. - # Returns: - # job-object or undef if job not to run - my $job = shift; - # Get the shell command to be executed (possibly with ssh infront). - my $command = $job->wrapped(); - - if($Global::interactive or $Global::stderr_verbose) { - if($Global::interactive) { - print $Global::original_stderr "$command ?..."; - open(my $tty_fh, "<", "/dev/tty") || ::die_bug("interactive-tty"); - my $answer = <$tty_fh>; - close $tty_fh; - my $run_yes = ($answer =~ /^\s*y/i); - if (not $run_yes) { - $command = "true"; # Run the command 'true' - } - } else { - print $Global::original_stderr "$command\n"; - } - } - - my $pid; - $job->openoutputfiles(); - my($stdout_fh,$stderr_fh) = ($job->fh(1,"w"),$job->fh(2,"w")); - local (*IN,*OUT,*ERR); - open OUT, '>&', $stdout_fh or ::die_bug("Can't redirect STDOUT: $!"); - open ERR, '>&', $stderr_fh or ::die_bug("Can't dup STDOUT: $!"); - - if(($opt::dryrun or $Global::verbose) and $opt::ungroup) { - if($Global::verbose <= 1) { - print $stdout_fh $job->replaced(),"\n"; - } else { - # Verbose level > 1: Print the rsync and stuff - print $stdout_fh $command,"\n"; - } - } - if($opt::dryrun) { - $command = "true"; - } - $ENV{'PARALLEL_SEQ'} = $job->seq(); - $ENV{'PARALLEL_PID'} = $$; - ::debug("run", $Global::total_running, " processes . Starting (", - $job->seq(), "): $command\n"); - if($opt::pipe) { - my ($stdin_fh); - # The eval is needed to catch exception from open3 - eval { - $pid = ::open3($stdin_fh, ">&OUT", ">&ERR", $Global::shell, "-c", $command) || - ::die_bug("open3-pipe"); - 1; - }; - $job->set_fh(0,"w",$stdin_fh); - } elsif(@opt::a and not $Global::stdin_in_opt_a and $job->seq() == 1 - and $job->sshlogin()->string() eq ":") { - # Give STDIN to the first job if using -a (but only if running - # locally - otherwise CTRL-C does not work for other jobs Bug#36585) - *IN = *STDIN; - # The eval is needed to catch exception from open3 - eval { - $pid = ::open3("<&IN", ">&OUT", ">&ERR", $Global::shell, "-c", $command) || - ::die_bug("open3-a"); - 1; - }; - # Re-open to avoid complaining - open(STDIN, "<&", $Global::original_stdin) - or ::die_bug("dup-\$Global::original_stdin: $!"); - } elsif ($opt::tty and not $Global::tty_taken and -c "/dev/tty" and - open(my $devtty_fh, "<", "/dev/tty")) { - # Give /dev/tty to the command if no one else is using it - *IN = $devtty_fh; - # The eval is needed to catch exception from open3 - eval { - $pid = ::open3("<&IN", ">&OUT", ">&ERR", $Global::shell, "-c", $command) || - ::die_bug("open3-/dev/tty"); - $Global::tty_taken = $pid; - close $devtty_fh; - 1; - }; - } else { - # The eval is needed to catch exception from open3 - eval { - $pid = ::open3(::gensym, ">&OUT", ">&ERR", $Global::shell, "-c", $command) || - ::die_bug("open3-gensym"); - 1; - }; - } - if($pid) { - # A job was started - $Global::total_running++; - $Global::total_started++; - $job->set_pid($pid); - $job->set_starttime(); - $Global::running{$job->pid()} = $job; - if($opt::timeout) { - $Global::timeoutq->insert($job); - } - $Global::newest_job = $job; - $Global::newest_starttime = ::now(); - return $job; - } else { - # No more processes - ::debug("run", "Cannot spawn more jobs.\n"); - return undef; - } -} - -sub tmux_wrap { - # Wrap command with tmux for session pPID - # Input: - # $actual_command = the actual command being run (incl ssh wrap) - my $self = shift; - my $actual_command = shift; - # Temporary file name. Used for fifo to communicate exit val - my ($fh, $tmpfile) = ::tmpfile(SUFFIX => ".tmx"); - $Global::unlink{$tmpfile}=1; - close $fh; - unlink $tmpfile; - my $visual_command = $self->replaced(); - my $title = $visual_command; - # ; causes problems - # ascii 194-245 annoys tmux - $title =~ tr/[\011-\016;\302-\365]//d; - - my $tmux; - if($Global::total_running == 0) { - $tmux = "tmux new-session -s p$$ -d -n ". - ::shell_quote_scalar($title); - print $Global::original_stderr "See output with: tmux attach -t p$$\n"; - } else { - $tmux = "tmux new-window -t p$$ -n ".::shell_quote_scalar($title); - } - return "mkfifo $tmpfile; $tmux ". - # Run in tmux - ::shell_quote_scalar( - "(".$actual_command.');(echo $?$status;echo 255) >'.$tmpfile."&". - "echo ".::shell_quote_scalar($visual_command).";". - "echo \007Job finished at: `date`;sleep 10"). - # Run outside tmux - # Read the first line from the fifo and use that as status code - "; exit `perl -ne 'unlink \$ARGV; 1..1 and print' $tmpfile` "; -} - -sub is_already_in_results { - # Do we already have results for this job? - # Returns: - # $job_already_run = bool whether there is output for this or not - my $job = $_[0]; - my $args_as_dirname = $job->{'commandline'}->args_as_dirname(); - # prefix/name1/val1/name2/val2/ - my $dir = $opt::results."/".$args_as_dirname; - ::debug("run", "Test $dir/stdout", -e "$dir/stdout", "\n"); - return -e "$dir/stdout"; -} - -sub is_already_in_joblog { - my $job = shift; - return vec($Global::job_already_run,$job->seq(),1); -} - -sub set_job_in_joblog { - my $job = shift; - vec($Global::job_already_run,$job->seq(),1) = 1; -} - -sub should_be_retried { - # Should this job be retried? - # Returns - # 0 - do not retry - # 1 - job queued for retry - my $self = shift; - if (not $opt::retries) { - return 0; - } - if(not $self->exitstatus()) { - # Completed with success. If there is a recorded failure: forget it - $self->reset_failed_here(); - return 0 - } else { - # The job failed. Should it be retried? - $self->add_failed_here(); - if($self->total_failed() == $opt::retries) { - # This has been retried enough - return 0; - } else { - # This command should be retried - $self->set_endtime(undef); - $Global::JobQueue->unget($self); - ::debug("run", "Retry ", $self->seq(), "\n"); - return 1; - } - } -} - -sub print { - # Print the output of the jobs - # Returns: N/A - - my $self = shift; - ::debug("print", ">>joboutput ", $self->replaced(), "\n"); - if($opt::dryrun) { - # Nothing was printed to this job: - # cleanup tmp files if --files was set - unlink $self->fh(1,"name"); - } - if($opt::pipe and $self->virgin()) { - # Skip --joblog, --dryrun, --verbose - } else { - if($Global::joblog and defined $self->{'exitstatus'}) { - # Add to joblog when finished - $self->print_joblog(); - } - - # Printing is only relevant for grouped/--line-buffer output. - $opt::ungroup and return; - # Check for disk full - exit_if_disk_full(); - - if(($opt::dryrun or $Global::verbose) - and - not $self->{'verbose_printed'}) { - $self->{'verbose_printed'}++; - if($Global::verbose <= 1) { - print STDOUT $self->replaced(),"\n"; - } else { - # Verbose level > 1: Print the rsync and stuff - print STDOUT $self->wrapped(),"\n"; - } - # If STDOUT and STDERR are merged, - # we want the command to be printed first - # so flush to avoid STDOUT being buffered - flush STDOUT; - } - } - for my $fdno (sort { $a <=> $b } keys %Global::fd) { - # Sort by file descriptor numerically: 1,2,3,..,9,10,11 - $fdno == 0 and next; - my $out_fd = $Global::fd{$fdno}; - my $in_fh = $self->fh($fdno,"r"); - if(not $in_fh) { - if(not $Job::file_descriptor_warning_printed{$fdno}++) { - # ::warning("File descriptor $fdno not defined\n"); - } - next; - } - ::debug("print", "File descriptor $fdno (", $self->fh($fdno,"name"), "):"); - if($opt::files) { - # If --compress: $in_fh must be closed first. - close $self->fh($fdno,"w"); - close $in_fh; - if($opt::pipe and $self->virgin()) { - # Nothing was printed to this job: - # cleanup unused tmp files if --files was set - for my $fdno (1,2) { - unlink $self->fh($fdno,"name"); - unlink $self->fh($fdno,"unlink"); - } - } elsif($fdno == 1 and $self->fh($fdno,"name")) { - print $out_fd $self->fh($fdno,"name"),"\n"; - } - } elsif($opt::linebuffer) { - # Line buffered print out - $self->linebuffer_print($fdno,$in_fh,$out_fd); - } else { - my $buf; - close $self->fh($fdno,"w"); - seek $in_fh, 0, 0; - # $in_fh is now ready for reading at position 0 - if($opt::tag or defined $opt::tagstring) { - my $tag = $self->tag(); - if($fdno == 2) { - # OpenSSH_3.6.1p2 gives 'tcgetattr: Invalid argument' with -tt - # This is a crappy way of ignoring it. - while(<$in_fh>) { - if(/^(client_process_control: )?tcgetattr: Invalid argument\n/) { - # Skip - } else { - print $out_fd $tag,$_; - } - # At most run the loop once - last; - } - } - while(<$in_fh>) { - print $out_fd $tag,$_; - } - } else { - my $buf; - if($fdno == 2) { - # OpenSSH_3.6.1p2 gives 'tcgetattr: Invalid argument' with -tt - # This is a crappy way of ignoring it. - sysread($in_fh,$buf,1_000); - $buf =~ s/^(client_process_control: )?tcgetattr: Invalid argument\n//; - print $out_fd $buf; - } - while(sysread($in_fh,$buf,32768)) { - print $out_fd $buf; - } - } - close $in_fh; - } - flush $out_fd; - } - ::debug("print", "<{'partial_line',$fdno}; - - if(defined $self->{'exitstatus'}) { - # If the job is dead: close printing fh. Needed for --compress - close $self->fh($fdno,"w"); - if($opt::compress) { - # Blocked reading in final round - $Global::use{"Fcntl"} ||= eval "use Fcntl qw(:DEFAULT :flock); 1;"; - for my $fdno (1,2) { - my $fdr = $self->fh($fdno,'r'); - my $flags; - fcntl($fdr, &F_GETFL, $flags) || die $!; # Get the current flags on the filehandle - $flags &= ~&O_NONBLOCK; # Remove non-blocking to the flags - fcntl($fdr, &F_SETFL, $flags) || die $!; # Set the flags on the filehandle - } - } - } - # This seek will clear EOF - seek $in_fh, tell($in_fh), 0; - # The read is non-blocking: The $in_fh is set to non-blocking. - # 32768 --tag = 5.1s - # 327680 --tag = 4.4s - # 1024000 --tag = 4.4s - # 3276800 --tag = 4.3s - # 32768000 --tag = 4.7s - # 10240000 --tag = 4.3s - while(read($in_fh,substr($$partial,length $$partial),3276800)) { - # Append to $$partial - # Find the last \n - my $i = rindex($$partial,"\n"); - if($i != -1) { - # One or more complete lines were found - if($fdno == 2 and not $self->{'printed_first_line',$fdno}++) { - # OpenSSH_3.6.1p2 gives 'tcgetattr: Invalid argument' with -tt - # This is a crappy way of ignoring it. - $$partial =~ s/^(client_process_control: )?tcgetattr: Invalid argument\n//; - # Length of partial line has changed: Find the last \n again - $i = rindex($$partial,"\n"); - } - if($opt::tag or defined $opt::tagstring) { - # Replace ^ with $tag within the full line - my $tag = $self->tag(); - substr($$partial,0,$i+1) =~ s/^/$tag/gm; - # Length of partial line has changed: Find the last \n again - $i = rindex($$partial,"\n"); - } - # Print up to and including the last \n - print $out_fd substr($$partial,0,$i+1); - # Remove the printed part - substr($$partial,0,$i+1)=""; - } - } - if(defined $self->{'exitstatus'}) { - # If the job is dead: print the remaining partial line - # read remaining - if($$partial and ($opt::tag or defined $opt::tagstring)) { - my $tag = $self->tag(); - $$partial =~ s/^/$tag/gm; - } - print $out_fd $$partial; - # Release the memory - $$partial = undef; - if($self->fh($fdno,"rpid") and CORE::kill 0, $self->fh($fdno,"rpid")) { - # decompress still running - } else { - # decompress done: close fh - close $in_fh; - } - } -} - -sub print_joblog { - my $self = shift; - my $cmd; - if($Global::verbose <= 1) { - $cmd = $self->replaced(); - } else { - # Verbose level > 1: Print the rsync and stuff - $cmd = "@command"; - } - print $Global::joblog - join("\t", $self->seq(), $self->sshlogin()->string(), - $self->starttime(), sprintf("%10.3f",$self->runtime()), - $self->transfersize(), $self->returnsize(), - $self->exitstatus(), $self->exitsignal(), $cmd - ). "\n"; - flush $Global::joblog; - $self->set_job_in_joblog(); -} - -sub tag { - my $self = shift; - if(not defined $self->{'tag'}) { - $self->{'tag'} = $self->{'commandline'}-> - replace_placeholders([$opt::tagstring],0,0)."\t"; - } - return $self->{'tag'}; -} - -sub hostgroups { - my $self = shift; - if(not defined $self->{'hostgroups'}) { - $self->{'hostgroups'} = $self->{'commandline'}->{'arg_list'}[0][0]->{'hostgroups'}; - } - return @{$self->{'hostgroups'}}; -} - -sub exitstatus { - my $self = shift; - return $self->{'exitstatus'}; -} - -sub set_exitstatus { - my $self = shift; - my $exitstatus = shift; - if($exitstatus) { - # Overwrite status if non-zero - $self->{'exitstatus'} = $exitstatus; - } else { - # Set status but do not overwrite - # Status may have been set by --timeout - $self->{'exitstatus'} ||= $exitstatus; - } -} - -sub exitsignal { - my $self = shift; - return $self->{'exitsignal'}; -} - -sub set_exitsignal { - my $self = shift; - my $exitsignal = shift; - $self->{'exitsignal'} = $exitsignal; -} - -{ - my ($disk_full_fh, $b8193, $name); - sub exit_if_disk_full { - # Checks if $TMPDIR is full by writing 8kb to a tmpfile - # If the disk is full: Exit immediately. - # Returns: - # N/A - if(not $disk_full_fh) { - ($disk_full_fh, $name) = ::tmpfile(SUFFIX => ".df"); - unlink $name; - $b8193 = "x"x8193; - } - # Linux does not discover if a disk is full if writing <= 8192 - # Tested on: - # bfs btrfs cramfs ext2 ext3 ext4 ext4dev jffs2 jfs minix msdos - # ntfs reiserfs tmpfs ubifs vfat xfs - # TODO this should be tested on different OS similar to this: - # - # doit() { - # sudo mount /dev/ram0 /mnt/loop; sudo chmod 1777 /mnt/loop - # seq 100000 | parallel --tmpdir /mnt/loop/ true & - # seq 6900000 > /mnt/loop/i && echo seq OK - # seq 6980868 > /mnt/loop/i - # seq 10000 > /mnt/loop/ii - # sleep 3 - # sudo umount /mnt/loop/ || sudo umount -l /mnt/loop/ - # echo >&2 - # } - print $disk_full_fh $b8193; - if(not $disk_full_fh - or - tell $disk_full_fh == 0) { - ::error("Output is incomplete. Cannot append to buffer file in $ENV{'TMPDIR'}. Is the disk full?\n"); - ::error("Change \$TMPDIR with --tmpdir or use --compress.\n"); - ::wait_and_exit(255); - } - truncate $disk_full_fh, 0; - seek($disk_full_fh, 0, 0) || die; - } -} - - -package CommandLine; - -sub new { - my $class = shift; - my $seq = shift; - my $commandref = shift; - $commandref || die; - my $arg_queue = shift; - my $context_replace = shift; - my $max_number_of_args = shift; # for -N and normal (-n1) - my $return_files = shift; - my $replacecount_ref = shift; - my $len_ref = shift; - my %replacecount = %$replacecount_ref; - my %len = %$len_ref; - for (keys %$replacecount_ref) { - # Total length of this replacement string {} replaced with all args - $len{$_} = 0; - } - return bless { - 'command' => $commandref, - 'seq' => $seq, - 'len' => \%len, - 'arg_list' => [], - 'arg_queue' => $arg_queue, - 'max_number_of_args' => $max_number_of_args, - 'replacecount' => \%replacecount, - 'context_replace' => $context_replace, - 'return_files' => $return_files, - 'replaced' => undef, - }, ref($class) || $class; -} - -sub seq { - my $self = shift; - return $self->{'seq'}; -} - -{ - my $max_slot_number; - - sub slot { - # Find the number of a free job slot and return it - # Uses: - # @Global::slots - # Returns: - # $jobslot = number of jobslot - my $self = shift; - if(not $self->{'slot'}) { - if(not @Global::slots) { - # $Global::max_slot_number will typically be $Global::max_jobs_running - push @Global::slots, ++$max_slot_number; - } - $self->{'slot'} = shift @Global::slots; - } - return $self->{'slot'}; - } -} - -sub populate { - # Add arguments from arg_queue until the number of arguments or - # max line length is reached - # Uses: - # $Global::minimal_command_line_length - # $opt::cat - # $opt::fifo - # $Global::JobQueue - # $opt::m - # $opt::X - # $CommandLine::already_spread - # $Global::max_jobs_running - # Returns: N/A - my $self = shift; - my $next_arg; - my $max_len = $Global::minimal_command_line_length || Limits::Command::max_length(); - - if($opt::cat or $opt::fifo) { - # Generate a tempfile name that will be used as {} - my($outfh,$name) = ::tmpfile(SUFFIX => ".pip"); - close $outfh; - # Unlink is needed if: ssh otheruser@localhost - unlink $name; - $Global::JobQueue->{'commandlinequeue'}->{'arg_queue'}->unget([Arg->new($name)]); - } - - while (not $self->{'arg_queue'}->empty()) { - $next_arg = $self->{'arg_queue'}->get(); - if(not defined $next_arg) { - next; - } - $self->push($next_arg); - if($self->len() >= $max_len) { - # Command length is now > max_length - # If there are arguments: remove the last - # If there are no arguments: Error - # TODO stuff about -x opt_x - if($self->number_of_args() > 1) { - # There is something to work on - $self->{'arg_queue'}->unget($self->pop()); - last; - } else { - my $args = join(" ", map { $_->orig() } @$next_arg); - ::error("Command line too long (", - $self->len(), " >= ", - $max_len, - ") at number ", - $self->{'arg_queue'}->arg_number(), - ": ". - (substr($args,0,50))."...\n"); - $self->{'arg_queue'}->unget($self->pop()); - ::wait_and_exit(255); - } - } - - if(defined $self->{'max_number_of_args'}) { - if($self->number_of_args() >= $self->{'max_number_of_args'}) { - last; - } - } - } - if(($opt::m or $opt::X) and not $CommandLine::already_spread - and $self->{'arg_queue'}->empty() and $Global::max_jobs_running) { - # -m or -X and EOF => Spread the arguments over all jobslots - # (unless they are already spread) - $CommandLine::already_spread ||= 1; - if($self->number_of_args() > 1) { - $self->{'max_number_of_args'} = - ::ceil($self->number_of_args()/$Global::max_jobs_running); - $Global::JobQueue->{'commandlinequeue'}->{'max_number_of_args'} = - $self->{'max_number_of_args'}; - $self->{'arg_queue'}->unget($self->pop_all()); - while($self->number_of_args() < $self->{'max_number_of_args'}) { - $self->push($self->{'arg_queue'}->get()); - } - } - } -} - -sub push { - # Add one or more records as arguments - # Returns: N/A - my $self = shift; - my $record = shift; - push @{$self->{'arg_list'}}, $record; - - my $quote_arg = $Global::noquote ? 0 : not $Global::quoting; - my $rep; - for my $arg (@$record) { - if(defined $arg) { - for my $perlexpr (keys %{$self->{'replacecount'}}) { - # 50% faster than below - $self->{'len'}{$perlexpr} += length $arg->replace($perlexpr,$quote_arg,$self); - # $rep = $arg->replace($perlexpr,$quote_arg,$self); - # $self->{'len'}{$perlexpr} += length $rep; - # ::debug("length", "Length: ", length $rep, - # "(", $perlexpr, "=>", $rep, ")\n"); - } - } - } -} - -sub pop { - # Remove last argument - # Returns: - # the last record - my $self = shift; - my $record = pop @{$self->{'arg_list'}}; - my $quote_arg = $Global::noquote ? 0 : not $Global::quoting; - for my $arg (@$record) { - if(defined $arg) { - for my $perlexpr (keys %{$self->{'replacecount'}}) { - $self->{'len'}{$perlexpr} -= - length $arg->replace($perlexpr,$quote_arg,$self); - } - } - } - return $record; -} - -sub pop_all { - # Remove all arguments and zeros the length of replacement strings - # Returns: - # all records - my $self = shift; - my @popped = @{$self->{'arg_list'}}; - for my $replacement_string (keys %{$self->{'replacecount'}}) { - $self->{'len'}{$replacement_string} = 0; - } - $self->{'arg_list'} = []; - return @popped; -} - -sub number_of_args { - # The number of records - # Returns: - # number of records - my $self = shift; - # Ftq rudef oaawuq ime dqxqmeqp az 2011-01-24 mzp ime iaz nk MQhmd - # Mdzrvadp Nvmdymeaz az 2011-04-10. Ftue oaawuq dqxqmeqp az - # 2013-08-18 ue m nuf tmdpqd me kag tmhq fa geq daf14. Bxqmeq - # qymux oaawuq@fmzsq.pw itqz kag dqmp ftue. - # - # U my ftq ymuzfmuzqd ar m buqoq ar rdqq earfimdq omxxqp SZG - # Bmdmxxqx. Rdqq earfimdq sgmdmzfqqe kag mooqee fa ftq eagdoq - # oapq, ngf U tmhq nqqz iazpqduzs tai ymzk mofgmxxk _dqmp_ ftq - # eagdoq oapq. - # - # Fa fqef ftue U bgf uz m oayyqzf fqxxuzs bqabxq fa qymux yq itqz - # ftqk dqmp ftue. Ftq oayyqzf ime bgf uz m eqofuaz ar ftq oapq - # ftmf za azq iagxp xaaw fa ruj ad uybdahq ftq earfimdq - ea ftq - # eagdoq oapq qcguhmxqzf fa m pgefk oadzqd. Fa ymwq egdq ftq - # oayyqzf iagxp zaf etai gb ur eayq azq vgef sdqbbqp ftdagst ftq - # eagdoq oapq U daf13'qp ftq eagdoq oapq - # tffb://qz.iuwubqpum.ads/iuwu/DAF13 - # - # 2.5 yazfte xmfqd U dqoquhqp mz qymux rday eayqazq ita zaf azxk - # ymzmsqp fa ruzp ftq oayyqzf, ngf mxea ymzmsqp fa sgqee ftq oapq - # tmp fa nq daf13'qp. - # - # Ftue nduzse yq fa ftq oazoxgeuaz ftmf ftqdq _mdq_ bqabxq, ita - # mdq zaf mrruxumfqp iuft ftq bdavqof, ftmf iuxx dqmp ftq eagdoq - # oapq - ftagst uf ymk zaf tmbbqz hqdk arfqz. - # - # This is really the number of records - return $#{$self->{'arg_list'}}+1; -} - -sub number_of_recargs { - # The number of args in records - # Returns: - # number of args records - my $self = shift; - my $sum = 0; - my $nrec = scalar @{$self->{'arg_list'}}; - if($nrec) { - $sum = $nrec * (scalar @{$self->{'arg_list'}[0]}); - } - return $sum; -} - -sub args_as_string { - # Returns: - # all unmodified arguments joined with ' ' (similar to {}) - my $self = shift; - return (join " ", map { $_->orig() } - map { @$_ } @{$self->{'arg_list'}}); -} - -sub args_as_dirname { - # Returns: - # all unmodified arguments joined with '/' (similar to {}) - # \t \0 \\ and / are quoted as: \t \0 \\ \_ - # If $Global::max_file_length: Keep subdirs < $Global::max_file_length - my $self = shift; - my @res = (); - - for my $rec_ref (@{$self->{'arg_list'}}) { - # If headers are used, sort by them. - # Otherwise keep the order from the command line. - my @header_indexes_sorted = header_indexes_sorted($#$rec_ref+1); - for my $n (@header_indexes_sorted) { - CORE::push(@res, - $Global::input_source_header{$n}, - map { my $s = $_; - # \t \0 \\ and / are quoted as: \t \0 \\ \_ - $s =~ s/\\/\\\\/g; - $s =~ s/\t/\\t/g; - $s =~ s/\0/\\0/g; - $s =~ s:/:\\_:g; - if($Global::max_file_length) { - # Keep each subdir shorter than the longest - # allowed file name - $s = substr($s,0,$Global::max_file_length); - } - $s; } - $rec_ref->[$n-1]->orig()); - } - } - return join "/", @res; -} - -sub header_indexes_sorted { - # Sort headers first by number then by name. - # E.g.: 1a 1b 11a 11b - # Returns: - # Indexes of %Global::input_source_header sorted - my $max_col = shift; - - no warnings 'numeric'; - for my $col (1 .. $max_col) { - # Make sure the header is defined. If it is not: use column number - if(not defined $Global::input_source_header{$col}) { - $Global::input_source_header{$col} = $col; - } - } - my @header_indexes_sorted = sort { - # Sort headers numerically then asciibetically - $Global::input_source_header{$a} <=> $Global::input_source_header{$b} - or - $Global::input_source_header{$a} cmp $Global::input_source_header{$b} - } 1 .. $max_col; - return @header_indexes_sorted; -} - -sub len { - # Uses: - # $opt::shellquote - # The length of the command line with args substituted - my $self = shift; - my $len = 0; - # Add length of the original command with no args - # Length of command w/ all replacement args removed - $len += $self->{'len'}{'noncontext'} + @{$self->{'command'}} -1; - ::debug("length", "noncontext + command: $len\n"); - my $recargs = $self->number_of_recargs(); - if($self->{'context_replace'}) { - # Context is duplicated for each arg - $len += $recargs * $self->{'len'}{'context'}; - for my $replstring (keys %{$self->{'replacecount'}}) { - # If the replacements string is more than once: mulitply its length - $len += $self->{'len'}{$replstring} * - $self->{'replacecount'}{$replstring}; - ::debug("length", $replstring, " ", $self->{'len'}{$replstring}, "*", - $self->{'replacecount'}{$replstring}, "\n"); - } - # echo 11 22 33 44 55 66 77 88 99 1010 - # echo 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 - # 5 + ctxgrp*arg - ::debug("length", "Ctxgrp: ", $self->{'len'}{'contextgroups'}, - " Groups: ", $self->{'len'}{'noncontextgroups'}, "\n"); - # Add space between context groups - $len += ($recargs-1) * ($self->{'len'}{'contextgroups'}); - } else { - # Each replacement string may occur several times - # Add the length for each time - $len += 1*$self->{'len'}{'context'}; - ::debug("length", "context+noncontext + command: $len\n"); - for my $replstring (keys %{$self->{'replacecount'}}) { - # (space between regargs + length of replacement) - # * number this replacement is used - $len += ($recargs -1 + $self->{'len'}{$replstring}) * - $self->{'replacecount'}{$replstring}; - } - } - if($opt::nice) { - # Pessimistic length if --nice is set - # Worse than worst case: every char needs to be quoted with \ - $len *= 2; - } - if($Global::quoting) { - # Pessimistic length if -q is set - # Worse than worst case: every char needs to be quoted with \ - $len *= 2; - } - if($opt::shellquote) { - # Pessimistic length if --shellquote is set - # Worse than worst case: every char needs to be quoted with \ twice - $len *= 4; - } - # If we are using --env, add the prefix for that, too. - $len += $Global::envvarlen; - - return $len; -} - -sub replaced { - # Uses: - # $Global::noquote - # $Global::quoting - # Returns: - # $replaced = command with place holders replaced and prepended - my $self = shift; - if(not defined $self->{'replaced'}) { - # Don't quote arguments if the input is the full command line - my $quote_arg = $Global::noquote ? 0 : not $Global::quoting; - $self->{'replaced'} = $self->replace_placeholders($self->{'command'},$Global::quoting,$quote_arg); - my $len = length $self->{'replaced'}; - if ($len != $self->len()) { - ::debug("length", $len, " != ", $self->len(), " ", $self->{'replaced'}, "\n"); - } else { - ::debug("length", $len, " == ", $self->len(), " ", $self->{'replaced'}, "\n"); - } - } - return $self->{'replaced'}; -} - -sub replace_placeholders { - # Replace foo{}bar with fooargbar - # Input: - # $targetref = command as shell words - # $quote = should everything be quoted? - # $quote_arg = should replaced arguments be quoted? - # Returns: - # @target with placeholders replaced - my $self = shift; - my $targetref = shift; - my $quote = shift; - my $quote_arg = shift; - my $context_replace = $self->{'context_replace'}; - my @target = @$targetref; - ::debug("replace", "Replace @target\n"); - # -X = context replace - # maybe multiple input sources - # maybe --xapply - if(not @target) { - # @target is empty: Return empty array - return @target; - } - # Fish out the words that have replacement strings in them - my %word; - for (@target) { - my $tt = $_; - ::debug("replace", "Target: $tt"); - # a{1}b{}c{}d - # a{=1 $_=$_ =}b{= $_=$_ =}c{= $_=$_ =}d - # a\257<1 $_=$_ \257>b\257< $_=$_ \257>c\257< $_=$_ \257>d - # A B C => aAbA B CcA B Cd - # -X A B C => aAbAcAd aAbBcBd aAbCcCd - - if($context_replace) { - while($tt =~ s/([^\s\257]* # before {= - (?: - \257< # {= - [^\257]*? # The perl expression - \257> # =} - [^\s\257]* # after =} - )+)/ /x) { - # $1 = pre \257 perlexpr \257 post - $word{"$1"} ||= 1; - } - } else { - while($tt =~ s/( (?: \257<([^\257]*?)\257>) )//x) { - # $f = \257 perlexpr \257 - $word{$1} ||= 1; - } - } - } - my @word = keys %word; - - my %replace; - my @arg; - for my $record (@{$self->{'arg_list'}}) { - # $self->{'arg_list'} = [ [Arg11, Arg12], [Arg21, Arg22], [Arg31, Arg32] ] - # Merge arg-objects from records into @arg for easy access - CORE::push @arg, @$record; - } - # Add one arg if empty to allow {#} and {%} to be computed only once - if(not @arg) { @arg = (Arg->new("")); } - # Number of arguments - used for positional arguments - my $n = $#_+1; - - # This is actually a CommandLine-object, - # but it looks nice to be able to say {= $job->slot() =} - my $job = $self; - for my $word (@word) { - # word = AB \257< perlexpr \257> CD \257< perlexpr \257> EF - my $w = $word; - ::debug("replace", "Replacing in $w\n"); - - # Replace positional arguments - $w =~ s< ([^\s\257]*) # before {= - \257< # {= - (-?\d+) # Position (eg. -2 or 3) - ([^\257]*?) # The perl expression - \257> # =} - ([^\s\257]*) # after =} - > - { $1. # Context (pre) - ( - $arg[$2 > 0 ? $2-1 : $n+$2] ? # If defined: replace - $arg[$2 > 0 ? $2-1 : $n+$2]->replace($3,$quote_arg,$self) - : "") - .$4 }egx;# Context (post) - ::debug("replace", "Positional replaced $word with: $w\n"); - - if($w !~ /\257/) { - # No more replacement strings in $w: No need to do more - if($quote) { - CORE::push(@{$replace{::shell_quote($word)}}, $w); - } else { - CORE::push(@{$replace{$word}}, $w); - } - next; - } - # for each arg: - # compute replacement for each string - # replace replacement strings with replacement in the word value - # push to replace word value - ::debug("replace", "Positional done: $w\n"); - for my $arg (@arg) { - my $val = $w; - my $number_of_replacements = 0; - for my $perlexpr (keys %{$self->{'replacecount'}}) { - # Replace {= perl expr =} with value for each arg - $number_of_replacements += - $val =~ s{\257<\Q$perlexpr\E\257>} - {$arg ? $arg->replace($perlexpr,$quote_arg,$self) : ""}eg; - } - my $ww = $word; - if($quote) { - $ww = ::shell_quote_scalar($word); - $val = ::shell_quote_scalar($val); - } - if($number_of_replacements) { - CORE::push(@{$replace{$ww}}, $val); - } - } - } - - if($quote) { - @target = ::shell_quote(@target); - } - # ::debug("replace", "%replace=",::my_dump(%replace),"\n"); - if(%replace) { - # Substitute the replace strings with the replacement values - # Must be sorted by length if a short word is a substring of a long word - my $regexp = join('|', map { my $s = $_; $s =~ s/(\W)/\\$1/g; $s } - sort { length $b <=> length $a } keys %replace); - for(@target) { - s/($regexp)/join(" ",@{$replace{$1}})/ge; - } - } - ::debug("replace", "Return @target\n"); - return wantarray ? @target : "@target"; -} - - -package CommandLineQueue; - -sub new { - my $class = shift; - my $commandref = shift; - my $read_from = shift; - my $context_replace = shift; - my $max_number_of_args = shift; - my $return_files = shift; - my @unget = (); - my ($count,%replacecount,$posrpl,$perlexpr,%len); - my @command = @$commandref; - # If the first command start with '-' it is probably an option - if($command[0] =~ /^\s*(-\S+)/) { - # Is this really a command in $PATH starting with '-'? - my $cmd = $1; - if(not ::which($cmd)) { - ::error("Command ($cmd) starts with '-'. Is this a wrong option?\n"); - ::wait_and_exit(255); - } - } - # Replace replacement strings with {= perl expr =} - # Protect matching inside {= perl expr =} - # by replacing {= and =} with \257< and \257> - for(@command) { - if(/\257/) { - ::error("Command cannot contain the character \257. Use a function for that.\n"); - ::wait_and_exit(255); - } - s/\Q$Global::parensleft\E(.*?)\Q$Global::parensright\E/\257<$1\257>/gx; - } - for my $rpl (keys %Global::rpl) { - # Replace the short hand string with the {= perl expr =} in $command and $opt::tagstring - # Avoid replacing inside existing {= perl expr =} - for(@command,@Global::ret_files) { - while(s/((^|\257>)[^\257]*?) # Don't replace after \257 unless \257> - \Q$rpl\E/$1\257<$Global::rpl{$rpl}\257>/xg) { - } - } - if(defined $opt::tagstring) { - for($opt::tagstring) { - while(s/((^|\257>)[^\257]*?) # Don't replace after \257 unless \257> - \Q$rpl\E/$1\257<$Global::rpl{$rpl}\257>/x) {} - } - } - # Do the same for the positional replacement strings - # A bit harder as we have to put in the position number - $posrpl = $rpl; - if($posrpl =~ s/^\{//) { - # Only do this if the shorthand start with { - for(@command,@Global::ret_files) { - s/\{(-?\d+)\Q$posrpl\E/\257<$1 $Global::rpl{$rpl}\257>/g; - } - if(defined $opt::tagstring) { - $opt::tagstring =~ s/\{(-?\d+)\Q$posrpl\E/\257<$1 $perlexpr\257>/g; - } - } - } - my $sum = 0; - while($sum == 0) { - # Count how many times each replacement string is used - my @cmd = @command; - my $contextlen = 0; - my $noncontextlen = 0; - my $contextgroups = 0; - for my $c (@cmd) { - while($c =~ s/ \257<([^\257]*?)\257> /\000/x) { - # %replacecount = { "perlexpr" => number of times seen } - # e.g { "$_++" => 2 } - $replacecount{$1} ++; - $sum++; - } - # Measure the length of the context around the {= perl expr =} - # Use that {=...=} has been replaced with \000 above - # So there is no need to deal with \257< - while($c =~ s/ (\S*\000\S*) //x) { - my $w = $1; - $w =~ tr/\000//d; # Remove all \000's - $contextlen += length($w); - $contextgroups++; - } - # All {= perl expr =} have been removed: The rest is non-context - $noncontextlen += length $c; - } - if($opt::tagstring) { - my $t = $opt::tagstring; - while($t =~ s/ \257<([^\257]*)\257> //x) { - # %replacecount = { "perlexpr" => number of times seen } - # e.g { "$_++" => 2 } - # But for tagstring we just need to mark it as seen - $replacecount{$1}||=1; - } - } - - $len{'context'} = 0+$contextlen; - $len{'noncontext'} = $noncontextlen; - $len{'contextgroups'} = $contextgroups; - $len{'noncontextgroups'} = @cmd-$contextgroups; - ::debug("length", "@command Context: ", $len{'context'}, - " Non: ", $len{'noncontext'}, " Ctxgrp: ", $len{'contextgroups'}, - " NonCtxGrp: ", $len{'noncontextgroups'}, "\n"); - if($sum == 0) { - # Default command = {} - # If not replacement string: append {} - if(not @command) { - @command = ("\257<\257>"); - $Global::noquote = 1; - } elsif(($opt::pipe or $opt::pipepart) - and not $opt::fifo and not $opt::cat) { - # With --pipe / --pipe-part you can have no replacement - last; - } else { - # Append {} to the command if there are no {...}'s and no {=...=} - push @command, ("\257<\257>"); - } - } - } - - return bless { - 'unget' => \@unget, - 'command' => \@command, - 'replacecount' => \%replacecount, - 'arg_queue' => RecordQueue->new($read_from,$opt::colsep), - 'context_replace' => $context_replace, - 'len' => \%len, - 'max_number_of_args' => $max_number_of_args, - 'size' => undef, - 'return_files' => $return_files, - 'seq' => 1, - }, ref($class) || $class; -} - -sub get { - my $self = shift; - if(@{$self->{'unget'}}) { - my $cmd_line = shift @{$self->{'unget'}}; - return ($cmd_line); - } else { - my $cmd_line; - $cmd_line = CommandLine->new($self->seq(), - $self->{'command'}, - $self->{'arg_queue'}, - $self->{'context_replace'}, - $self->{'max_number_of_args'}, - $self->{'return_files'}, - $self->{'replacecount'}, - $self->{'len'}, - ); - $cmd_line->populate(); - ::debug("init","cmd_line->number_of_args ", - $cmd_line->number_of_args(), "\n"); - if($opt::pipe or $opt::pipepart) { - if($cmd_line->replaced() eq "") { - # Empty command - pipe requires a command - ::error("--pipe must have a command to pipe into (e.g. 'cat').\n"); - ::wait_and_exit(255); - } - } else { - if($cmd_line->number_of_args() == 0) { - # We did not get more args - maybe at EOF string? - return undef; - } elsif($cmd_line->replaced() eq "") { - # Empty command - get the next instead - return $self->get(); - } - } - $self->set_seq($self->seq()+1); - return $cmd_line; - } -} - -sub unget { - my $self = shift; - unshift @{$self->{'unget'}}, @_; -} - -sub empty { - my $self = shift; - my $empty = (not @{$self->{'unget'}}) && $self->{'arg_queue'}->empty(); - ::debug("run", "CommandLineQueue->empty $empty"); - return $empty; -} - -sub seq { - my $self = shift; - return $self->{'seq'}; -} - -sub set_seq { - my $self = shift; - $self->{'seq'} = shift; -} - -sub quote_args { - my $self = shift; - # If there is not command emulate |bash - return $self->{'command'}; -} - -sub size { - my $self = shift; - if(not $self->{'size'}) { - my @all_lines = (); - while(not $self->{'arg_queue'}->empty()) { - push @all_lines, CommandLine->new($self->{'command'}, - $self->{'arg_queue'}, - $self->{'context_replace'}, - $self->{'max_number_of_args'}); - } - $self->{'size'} = @all_lines; - $self->unget(@all_lines); - } - return $self->{'size'}; -} - - -package Limits::Command; - -# Maximal command line length (for -m and -X) -sub max_length { - # Find the max_length of a command line and cache it - # Returns: - # number of chars on the longest command line allowed - if(not $Limits::Command::line_max_len) { - # Disk cache of max command line length - my $len_cache = $ENV{'HOME'} . "/.parallel/tmp/linelen-" . ::hostname(); - my $cached_limit; - if(-e $len_cache) { - open(my $fh, "<", $len_cache) || ::die_bug("Cannot read $len_cache"); - $cached_limit = <$fh>; - close $fh; - } else { - $cached_limit = real_max_length(); - # If $HOME is write protected: Do not fail - mkdir($ENV{'HOME'} . "/.parallel"); - mkdir($ENV{'HOME'} . "/.parallel/tmp"); - open(my $fh, ">", $len_cache); - print $fh $cached_limit; - close $fh; - } - $Limits::Command::line_max_len = $cached_limit; - if($opt::max_chars) { - if($opt::max_chars <= $cached_limit) { - $Limits::Command::line_max_len = $opt::max_chars; - } else { - ::warning("Value for -s option ", - "should be < $cached_limit.\n"); - } - } - } - return $Limits::Command::line_max_len; -} - -sub real_max_length { - # Find the max_length of a command line - # Returns: - # The maximal command line length - # Use an upper bound of 8 MB if the shell allows for for infinite long lengths - my $upper = 8_000_000; - my $len = 8; - do { - if($len > $upper) { return $len }; - $len *= 16; - } while (is_acceptable_command_line_length($len)); - # Then search for the actual max length between 0 and upper bound - return binary_find_max_length(int($len/16),$len); -} - -sub binary_find_max_length { - # Given a lower and upper bound find the max_length of a command line - # Returns: - # number of chars on the longest command line allowed - my ($lower, $upper) = (@_); - if($lower == $upper or $lower == $upper-1) { return $lower; } - my $middle = int (($upper-$lower)/2 + $lower); - ::debug("init", "Maxlen: $lower,$upper,$middle : "); - if (is_acceptable_command_line_length($middle)) { - return binary_find_max_length($middle,$upper); - } else { - return binary_find_max_length($lower,$middle); - } -} - -sub is_acceptable_command_line_length { - # Test if a command line of this length can run - # Returns: - # 0 if the command line length is too long - # 1 otherwise - my $len = shift; - - local *STDERR; - open (STDERR, ">", "/dev/null"); - system "true "."x"x$len; - close STDERR; - ::debug("init", "$len=$? "); - return not $?; -} - - -package RecordQueue; - -sub new { - my $class = shift; - my $fhs = shift; - my $colsep = shift; - my @unget = (); - my $arg_sub_queue; - if($colsep) { - # Open one file with colsep - $arg_sub_queue = RecordColQueue->new($fhs); - } else { - # Open one or more files if multiple -a - $arg_sub_queue = MultifileQueue->new($fhs); - } - return bless { - 'unget' => \@unget, - 'arg_number' => 0, - 'arg_sub_queue' => $arg_sub_queue, - }, ref($class) || $class; -} - -sub get { - # Returns: - # reference to array of Arg-objects - my $self = shift; - if(@{$self->{'unget'}}) { - $self->{'arg_number'}++; - return shift @{$self->{'unget'}}; - } - my $ret = $self->{'arg_sub_queue'}->get(); - if(defined $Global::max_number_of_args - and $Global::max_number_of_args == 0) { - ::debug("run", "Read 1 but return 0 args\n"); - return [Arg->new("")]; - } else { - return $ret; - } -} - -sub unget { - my $self = shift; - ::debug("run", "RecordQueue-unget '@_'\n"); - $self->{'arg_number'} -= @_; - unshift @{$self->{'unget'}}, @_; -} - -sub empty { - my $self = shift; - my $empty = not @{$self->{'unget'}}; - $empty &&= $self->{'arg_sub_queue'}->empty(); - ::debug("run", "RecordQueue->empty $empty"); - return $empty; -} - -sub arg_number { - my $self = shift; - return $self->{'arg_number'}; -} - - -package RecordColQueue; - -sub new { - my $class = shift; - my $fhs = shift; - my @unget = (); - my $arg_sub_queue = MultifileQueue->new($fhs); - return bless { - 'unget' => \@unget, - 'arg_sub_queue' => $arg_sub_queue, - }, ref($class) || $class; -} - -sub get { - # Returns: - # reference to array of Arg-objects - my $self = shift; - if(@{$self->{'unget'}}) { - return shift @{$self->{'unget'}}; - } - my $unget_ref=$self->{'unget'}; - if($self->{'arg_sub_queue'}->empty()) { - return undef; - } - my $in_record = $self->{'arg_sub_queue'}->get(); - if(defined $in_record) { - my @out_record = (); - for my $arg (@$in_record) { - ::debug("run", "RecordColQueue::arg $arg\n"); - my $line = $arg->orig(); - ::debug("run", "line='$line'\n"); - if($line ne "") { - for my $s (split /$opt::colsep/o, $line, -1) { - push @out_record, Arg->new($s); - } - } else { - push @out_record, Arg->new(""); - } - } - return \@out_record; - } else { - return undef; - } -} - -sub unget { - my $self = shift; - ::debug("run", "RecordColQueue-unget '@_'\n"); - unshift @{$self->{'unget'}}, @_; -} - -sub empty { - my $self = shift; - my $empty = (not @{$self->{'unget'}} and $self->{'arg_sub_queue'}->empty()); - ::debug("run", "RecordColQueue->empty $empty"); - return $empty; -} - - -package MultifileQueue; - -@Global::unget_argv=(); - -sub new { - my $class = shift; - my $fhs = shift; - for my $fh (@$fhs) { - if(-t $fh) { - ::warning("Input is read from the terminal. ". - "Only experts do this on purpose. ". - "Press CTRL-D to exit.\n"); - } - } - return bless { - 'unget' => \@Global::unget_argv, - 'fhs' => $fhs, - 'arg_matrix' => undef, - }, ref($class) || $class; -} - -sub get { - my $self = shift; - if($opt::xapply) { - return $self->xapply_get(); - } else { - return $self->nest_get(); - } -} - -sub unget { - my $self = shift; - ::debug("run", "MultifileQueue-unget '@_'\n"); - unshift @{$self->{'unget'}}, @_; -} - -sub empty { - my $self = shift; - my $empty = (not @Global::unget_argv - and not @{$self->{'unget'}}); - for my $fh (@{$self->{'fhs'}}) { - $empty &&= eof($fh); - } - ::debug("run", "MultifileQueue->empty $empty "); - return $empty; -} - -sub xapply_get { - my $self = shift; - if(@{$self->{'unget'}}) { - return shift @{$self->{'unget'}}; - } - my @record = (); - my $prepend = undef; - my $empty = 1; - for my $fh (@{$self->{'fhs'}}) { - my $arg = read_arg_from_fh($fh); - if(defined $arg) { - # Record $arg for recycling at end of file - push @{$self->{'arg_matrix'}{$fh}}, $arg; - push @record, $arg; - $empty = 0; - } else { - ::debug("run", "EOA "); - # End of file: Recycle arguments - push @{$self->{'arg_matrix'}{$fh}}, shift @{$self->{'arg_matrix'}{$fh}}; - # return last @{$args->{'args'}{$fh}}; - push @record, @{$self->{'arg_matrix'}{$fh}}[-1]; - } - } - if($empty) { - return undef; - } else { - return \@record; - } -} - -sub nest_get { - my $self = shift; - if(@{$self->{'unget'}}) { - return shift @{$self->{'unget'}}; - } - my @record = (); - my $prepend = undef; - my $empty = 1; - my $no_of_inputsources = $#{$self->{'fhs'}} + 1; - if(not $self->{'arg_matrix'}) { - # Initialize @arg_matrix with one arg from each file - # read one line from each file - my @first_arg_set; - my $all_empty = 1; - for (my $fhno = 0; $fhno < $no_of_inputsources ; $fhno++) { - my $arg = read_arg_from_fh($self->{'fhs'}[$fhno]); - if(defined $arg) { - $all_empty = 0; - } - $self->{'arg_matrix'}[$fhno][0] = $arg || Arg->new(""); - push @first_arg_set, $self->{'arg_matrix'}[$fhno][0]; - } - if($all_empty) { - # All filehandles were at eof or eof-string - return undef; - } - return [@first_arg_set]; - } - - # Treat the case with one input source special. For multiple - # input sources we need to remember all previously read values to - # generate all combinations. But for one input source we can - # forget the value after first use. - if($no_of_inputsources == 1) { - my $arg = read_arg_from_fh($self->{'fhs'}[0]); - if(defined($arg)) { - return [$arg]; - } - return undef; - } - for (my $fhno = $no_of_inputsources - 1; $fhno >= 0; $fhno--) { - if(eof($self->{'fhs'}[$fhno])) { - next; - } else { - # read one - my $arg = read_arg_from_fh($self->{'fhs'}[$fhno]); - defined($arg) || next; # If we just read an EOF string: Treat this as EOF - my $len = $#{$self->{'arg_matrix'}[$fhno]} + 1; - $self->{'arg_matrix'}[$fhno][$len] = $arg; - # make all new combinations - my @combarg = (); - for (my $fhn = 0; $fhn < $no_of_inputsources; $fhn++) { - push @combarg, [0, $#{$self->{'arg_matrix'}[$fhn]}]; - } - $combarg[$fhno] = [$len,$len]; # Find only combinations with this new entry - # map combinations - # [ 1, 3, 7 ], [ 2, 4, 1 ] - # => - # [ m[0][1], m[1][3], m[3][7] ], [ m[0][2], m[1][4], m[2][1] ] - my @mapped; - for my $c (expand_combinations(@combarg)) { - my @a; - for my $n (0 .. $no_of_inputsources - 1 ) { - push @a, $self->{'arg_matrix'}[$n][$$c[$n]]; - } - push @mapped, \@a; - } - # append the mapped to the ungotten arguments - push @{$self->{'unget'}}, @mapped; - # get the first - return shift @{$self->{'unget'}}; - } - } - # all are eof or at EOF string; return from the unget queue - return shift @{$self->{'unget'}}; -} - -sub read_arg_from_fh { - # Read one Arg from filehandle - # Returns: - # Arg-object with one read line - # undef if end of file - my $fh = shift; - my $prepend = undef; - my $arg; - do {{ - # This makes 10% faster - if(not ($arg = <$fh>)) { - if(defined $prepend) { - return Arg->new($prepend); - } else { - return undef; - } - } -# ::debug("run", "read $arg\n"); - # Remove delimiter - $arg =~ s:$/$::; - if($Global::end_of_file_string and - $arg eq $Global::end_of_file_string) { - # Ignore the rest of input file - close $fh; - ::debug("run", "EOF-string ($arg) met\n"); - if(defined $prepend) { - return Arg->new($prepend); - } else { - return undef; - } - } - if(defined $prepend) { - $arg = $prepend.$arg; # For line continuation - $prepend = undef; #undef; - } - if($Global::ignore_empty) { - if($arg =~ /^\s*$/) { - redo; # Try the next line - } - } - if($Global::max_lines) { - if($arg =~ /\s$/) { - # Trailing space => continued on next line - $prepend = $arg; - redo; - } - } - }} while (1 == 0); # Dummy loop {{}} for redo - if(defined $arg) { - return Arg->new($arg); - } else { - ::die_bug("multiread arg undefined"); - } -} - -sub expand_combinations { - # Input: - # ([xmin,xmax], [ymin,ymax], ...) - # Returns: ([x,y,...],[x,y,...]) - # where xmin <= x <= xmax and ymin <= y <= ymax - my $minmax_ref = shift; - my $xmin = $$minmax_ref[0]; - my $xmax = $$minmax_ref[1]; - my @p; - if(@_) { - # If there are more columns: Compute those recursively - my @rest = expand_combinations(@_); - for(my $x = $xmin; $x <= $xmax; $x++) { - push @p, map { [$x, @$_] } @rest; - } - } else { - for(my $x = $xmin; $x <= $xmax; $x++) { - push @p, [$x]; - } - } - return @p; -} - - -package Arg; - -sub new { - my $class = shift; - my $orig = shift; - my @hostgroups; - if($opt::hostgroups) { - if($orig =~ s:@(.+)::) { - # We found hostgroups on the arg - @hostgroups = split(/\+/, $1); - if(not grep { defined $Global::hostgroups{$_} } @hostgroups) { - ::warning("No such hostgroup (@hostgroups)\n"); - @hostgroups = (keys %Global::hostgroups); - } - } else { - @hostgroups = (keys %Global::hostgroups); - } - } - return bless { - 'orig' => $orig, - 'hostgroups' => \@hostgroups, - }, ref($class) || $class; -} - -sub replace { - # Calculates the corresponding value for a given perl expression - # Returns: - # The calculated string (quoted if asked for) - my $self = shift; - my $perlexpr = shift; # E.g. $_=$_ or s/.gz// - my $quote = (shift) ? 1 : 0; # should the string be quoted? - # This is actually a CommandLine-object, - # but it looks nice to be able to say {= $job->slot() =} - my $job = shift; - $perlexpr =~ s/^-?\d+ //; # Positional replace treated as normal replace - if(not defined $self->{"rpl",0,$perlexpr}) { - local $_; - if($Global::trim eq "n") { - $_ = $self->{'orig'}; - } else { - $_ = trim_of($self->{'orig'}); - } - ::debug("replace", "eval ", $perlexpr, " ", $_, "\n"); - if(not $Global::perleval{$perlexpr}) { - # Make an anonymous function of the $perlexpr - # And more importantly: Compile it only once - if($Global::perleval{$perlexpr} = - eval('sub { no strict; no warnings; my $job = shift; '. - $perlexpr.' }')) { - # All is good - } else { - # The eval failed. Maybe $perlexpr is invalid perl? - ::error("Cannot use $perlexpr: $@\n"); - ::wait_and_exit(255); - } - } - # Execute the function - $Global::perleval{$perlexpr}->($job); - $self->{"rpl",0,$perlexpr} = $_; - } - if(not defined $self->{"rpl",$quote,$perlexpr}) { - $self->{"rpl",1,$perlexpr} = - ::shell_quote_scalar($self->{"rpl",0,$perlexpr}); - } - return $self->{"rpl",$quote,$perlexpr}; -} - -sub orig { - my $self = shift; - return $self->{'orig'}; -} - -sub trim_of { - # Removes white space as specifed by --trim: - # n = nothing - # l = start - # r = end - # lr|rl = both - # Returns: - # string with white space removed as needed - my @strings = map { defined $_ ? $_ : "" } (@_); - my $arg; - if($Global::trim eq "n") { - # skip - } elsif($Global::trim eq "l") { - for my $arg (@strings) { $arg =~ s/^\s+//; } - } elsif($Global::trim eq "r") { - for my $arg (@strings) { $arg =~ s/\s+$//; } - } elsif($Global::trim eq "rl" or $Global::trim eq "lr") { - for my $arg (@strings) { $arg =~ s/^\s+//; $arg =~ s/\s+$//; } - } else { - ::error("--trim must be one of: r l rl lr.\n"); - ::wait_and_exit(255); - } - return wantarray ? @strings : "@strings"; -} - - -package TimeoutQueue; - -sub new { - my $class = shift; - my $delta_time = shift; - my ($pct); - if($delta_time =~ /(\d+(\.\d+)?)%/) { - # Timeout in percent - $pct = $1/100; - $delta_time = 1_000_000; - } - return bless { - 'queue' => [], - 'delta_time' => $delta_time, - 'pct' => $pct, - 'remedian_idx' => 0, - 'remedian_arr' => [], - 'remedian' => undef, - }, ref($class) || $class; -} - -sub delta_time { - my $self = shift; - return $self->{'delta_time'}; -} - -sub set_delta_time { - my $self = shift; - $self->{'delta_time'} = shift; -} - -sub remedian { - my $self = shift; - return $self->{'remedian'}; -} - -sub set_remedian { - # Set median of the last 999^3 (=997002999) values using Remedian - # - # Rousseeuw, Peter J., and Gilbert W. Bassett Jr. "The remedian: A - # robust averaging method for large data sets." Journal of the - # American Statistical Association 85.409 (1990): 97-104. - my $self = shift; - my $val = shift; - my $i = $self->{'remedian_idx'}++; - my $rref = $self->{'remedian_arr'}; - $rref->[0][$i%999] = $val; - $rref->[1][$i/999%999] = (sort @{$rref->[0]})[$#{$rref->[0]}/2]; - $rref->[2][$i/999/999%999] = (sort @{$rref->[1]})[$#{$rref->[1]}/2]; - $self->{'remedian'} = (sort @{$rref->[2]})[$#{$rref->[2]}/2]; -} - -sub update_delta_time { - # Update delta_time based on runtime of finished job if timeout is - # a percentage - my $self = shift; - my $runtime = shift; - if($self->{'pct'}) { - $self->set_remedian($runtime); - $self->{'delta_time'} = $self->{'pct'} * $self->remedian(); - ::debug("run", "Timeout: $self->{'delta_time'}s "); - } -} - -sub process_timeouts { - # Check if there was a timeout - my $self = shift; - # $self->{'queue'} is sorted by start time - while (@{$self->{'queue'}}) { - my $job = $self->{'queue'}[0]; - if($job->endtime()) { - # Job already finished. No need to timeout the job - # This could be because of --keep-order - shift @{$self->{'queue'}}; - } elsif($job->timedout($self->{'delta_time'})) { - # Need to shift off queue before kill - # because kill calls usleep that calls process_timeouts - shift @{$self->{'queue'}}; - $job->kill(); - } else { - # Because they are sorted by start time the rest are later - last; - } - } -} - -sub insert { - my $self = shift; - my $in = shift; - push @{$self->{'queue'}}, $in; -} - - -package Semaphore; - -# This package provides a counting semaphore -# -# If a process dies without releasing the semaphore the next process -# that needs that entry will clean up dead semaphores -# -# The semaphores are stored in ~/.parallel/semaphores/id- Each -# file in ~/.parallel/semaphores/id-/ is the process ID of the -# process holding the entry. If the process dies, the entry can be -# taken by another process. - -sub new { - my $class = shift; - my $id = shift; - my $count = shift; - $id=~s/([^-_a-z0-9])/unpack("H*",$1)/ige; # Convert non-word chars to hex - $id="id-".$id; # To distinguish it from a process id - my $parallel_dir = $ENV{'HOME'}."/.parallel"; - -d $parallel_dir or mkdir_or_die($parallel_dir); - my $parallel_locks = $parallel_dir."/semaphores"; - -d $parallel_locks or mkdir_or_die($parallel_locks); - my $lockdir = "$parallel_locks/$id"; - my $lockfile = $lockdir.".lock"; - if($count < 1) { ::die_bug("semaphore-count: $count"); } - return bless { - 'lockfile' => $lockfile, - 'lockfh' => Symbol::gensym(), - 'lockdir' => $lockdir, - 'id' => $id, - 'idfile' => $lockdir."/".$id, - 'pid' => $$, - 'pidfile' => $lockdir."/".$$.'@'.::hostname(), - 'count' => $count + 1 # nlinks returns a link for the 'id-' as well - }, ref($class) || $class; -} - -sub acquire { - my $self = shift; - my $sleep = 1; # 1 ms - my $start_time = time; - while(1) { - $self->atomic_link_if_count_less_than() and last; - ::debug("sem", "Remove dead locks"); - my $lockdir = $self->{'lockdir'}; - for my $d (glob "$lockdir/*") { - ::debug("sem", "Lock $d $lockdir\n"); - $d =~ m:$lockdir/([0-9]+)\@([-\._a-z0-9]+)$:o or next; - my ($pid, $host) = ($1, $2); - if($host eq ::hostname()) { - if(not kill 0, $1) { - ::debug("sem", "Dead: $d"); - unlink $d; - } else { - ::debug("sem", "Alive: $d"); - } - } - } - # try again - $self->atomic_link_if_count_less_than() and last; - # Retry slower and slower up to 1 second - $sleep = ($sleep < 1000) ? ($sleep * 1.1) : ($sleep); - # Random to avoid every sleeping job waking up at the same time - ::usleep(rand()*$sleep); - if(defined($opt::timeout) and - $start_time + $opt::timeout > time) { - # Acquire the lock anyway - if(not -e $self->{'idfile'}) { - open (my $fh, ">", $self->{'idfile'}) or - ::die_bug("timeout_write_idfile: $self->{'idfile'}"); - close $fh; - } - link $self->{'idfile'}, $self->{'pidfile'}; - last; - } - } - ::debug("sem", "acquired $self->{'pid'}\n"); -} - -sub release { - my $self = shift; - unlink $self->{'pidfile'}; - if($self->nlinks() == 1) { - # This is the last link, so atomic cleanup - $self->lock(); - if($self->nlinks() == 1) { - unlink $self->{'idfile'}; - rmdir $self->{'lockdir'}; - } - $self->unlock(); - } - ::debug("run", "released $self->{'pid'}\n"); -} - -sub _release { - my $self = shift; - - unlink $self->{'pidfile'}; - $self->lock(); - my $nlinks = $self->nlinks(); - ::debug("sem", $nlinks, "<", $self->{'count'}); - if($nlinks-- > 1) { - unlink $self->{'idfile'}; - open (my $fh, ">", $self->{'idfile'}) or - ::die_bug("write_idfile: $self->{'idfile'}"); - print $fh "#"x$nlinks; - close $fh; - } else { - unlink $self->{'idfile'}; - rmdir $self->{'lockdir'}; - } - $self->unlock(); - ::debug("sem", "released $self->{'pid'}\n"); -} - -sub atomic_link_if_count_less_than { - # Link $file1 to $file2 if nlinks to $file1 < $count - my $self = shift; - my $retval = 0; - $self->lock(); - ::debug($self->nlinks(), "<", $self->{'count'}); - if($self->nlinks() < $self->{'count'}) { - -d $self->{'lockdir'} or mkdir_or_die($self->{'lockdir'}); - if(not -e $self->{'idfile'}) { - open (my $fh, ">", $self->{'idfile'}) or - ::die_bug("write_idfile: $self->{'idfile'}"); - close $fh; - } - $retval = link $self->{'idfile'}, $self->{'pidfile'}; - } - $self->unlock(); - ::debug("run", "atomic $retval"); - return $retval; -} - -sub _atomic_link_if_count_less_than { - # Link $file1 to $file2 if nlinks to $file1 < $count - my $self = shift; - my $retval = 0; - $self->lock(); - my $nlinks = $self->nlinks(); - ::debug("sem", $nlinks, "<", $self->{'count'}); - if($nlinks++ < $self->{'count'}) { - -d $self->{'lockdir'} or mkdir_or_die($self->{'lockdir'}); - if(not -e $self->{'idfile'}) { - open (my $fh, ">", $self->{'idfile'}) or - ::die_bug("write_idfile: $self->{'idfile'}"); - close $fh; - } - open (my $fh, ">", $self->{'idfile'}) or - ::die_bug("write_idfile: $self->{'idfile'}"); - print $fh "#"x$nlinks; - close $fh; - $retval = link $self->{'idfile'}, $self->{'pidfile'}; - } - $self->unlock(); - ::debug("sem", "atomic $retval"); - return $retval; -} - -sub nlinks { - my $self = shift; - if(-e $self->{'idfile'}) { - ::debug("sem", "nlinks", (stat(_))[3], "size", (stat(_))[7], "\n"); - return (stat(_))[3]; - } else { - return 0; - } -} - -sub lock { - my $self = shift; - my $sleep = 100; # 100 ms - my $total_sleep = 0; - $Global::use{"Fcntl"} ||= eval "use Fcntl qw(:DEFAULT :flock); 1;"; - my $locked = 0; - while(not $locked) { - if(tell($self->{'lockfh'}) == -1) { - # File not open - open($self->{'lockfh'}, ">", $self->{'lockfile'}) - or ::debug("run", "Cannot open $self->{'lockfile'}"); - } - if($self->{'lockfh'}) { - # File is open - chmod 0666, $self->{'lockfile'}; # assuming you want it a+rw - if(flock($self->{'lockfh'}, LOCK_EX()|LOCK_NB())) { - # The file is locked: No need to retry - $locked = 1; - last; - } else { - if ($! =~ m/Function not implemented/) { - ::warning("flock: $!"); - ::warning("Will wait for a random while\n"); - ::usleep(rand(5000)); - # File cannot be locked: No need to retry - $locked = 2; - last; - } - } - } - # Locking failed in first round - # Sleep and try again - $sleep = ($sleep < 1000) ? ($sleep * 1.1) : ($sleep); - # Random to avoid every sleeping job waking up at the same time - ::usleep(rand()*$sleep); - $total_sleep += $sleep; - if($opt::semaphoretimeout) { - if($total_sleep/1000 > $opt::semaphoretimeout) { - # Timeout: bail out - ::warning("Semaphore timed out. Ignoring timeout."); - $locked = 3; - last; - } - } else { - if($total_sleep/1000 > 30) { - ::warning("Semaphore stuck for 30 seconds. Consider using --semaphoretimeout."); - } - } - } - ::debug("run", "locked $self->{'lockfile'}"); -} - -sub unlock { - my $self = shift; - unlink $self->{'lockfile'}; - close $self->{'lockfh'}; - ::debug("run", "unlocked\n"); -} - -sub mkdir_or_die { - # If dir is not writable: die - my $dir = shift; - my @dir_parts = split(m:/:,$dir); - my ($ddir,$part); - while(defined ($part = shift @dir_parts)) { - $part eq "" and next; - $ddir .= "/".$part; - -d $ddir and next; - mkdir $ddir; - } - if(not -w $dir) { - ::error("Cannot write to $dir: $!\n"); - ::wait_and_exit(255); - } -} - -# Keep perl -w happy -$opt::x = $Semaphore::timeout = $Semaphore::wait = -$Job::file_descriptor_warning_printed = 0; From 56b1f3d240d0644d8779de82440f76f4f44695bb Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Thu, 25 Aug 2022 18:42:15 +0300 Subject: [PATCH 187/226] docs: update license files to comply with Apache 2.0 (#111) Update license files to comply with Apache 2.0 and update authors --- AUTHORS | 2 ++ LICENSE.Apache => LICENSE | 0 init | 0 3 files changed, 2 insertions(+) rename LICENSE.Apache => LICENSE (100%) delete mode 100644 init diff --git a/AUTHORS b/AUTHORS index a451875f1a..e0a9592c35 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,3 +1,5 @@ +Speedb Ltd. + Facebook Inc. Facebook Engineering Team diff --git a/LICENSE.Apache b/LICENSE similarity index 100% rename from LICENSE.Apache rename to LICENSE diff --git a/init b/init deleted file mode 100644 index e69de29bb2..0000000000 From e064ed39692b8f0c9b42fe00225607ae313b0616 Mon Sep 17 00:00:00 2001 From: Arthur Berezin <2787296+rtpro@users.noreply.github.com> Date: Tue, 30 Aug 2022 16:55:37 +0300 Subject: [PATCH 188/226] Adding logo to readme (#135) * Adding logo and badges to readme --- README.md | 18 +++++++++++++++--- bee.gif | Bin 0 -> 62503 bytes speedb-b.gif | Bin 0 -> 1286960 bytes speedb-logo.gif | Bin 0 -> 1016760 bytes 4 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 bee.gif create mode 100644 speedb-b.gif create mode 100644 speedb-logo.gif diff --git a/README.md b/README.md index 824bb77e31..4c47d2365b 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,21 @@ -# Speedb +
+ -![GitHub contributors](https://img.shields.io/github/contributors/speedb-io/speedb) +
+
+![GitHub](https://img.shields.io/github/license/speedb-io/speedb) +![GitHub contributors](https://img.shields.io/github/contributors/speedb-io/speedb?color=blue) +![GitHub pull requests](https://img.shields.io/github/issues-pr/speedb-io/speedb) +![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/speedb-io/speedb?color=green) +
+# Speedb Speedb is a library that provides persistent key-value stores. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function. It is maintained by Speedb and is forked from Rocksdb, developed by Facebook. - +
+ +
## Usage * If speedb is in your default library path: @@ -77,3 +87,5 @@ See the [contributing guide](CONTRIBUTING.md). ## License Speedb is open-source and licensed under the [Apache 2.0 License](LICENSE.Apache). + + \ No newline at end of file diff --git a/bee.gif b/bee.gif new file mode 100644 index 0000000000000000000000000000000000000000..99d791de5e28b71d31c419a165b29ad544781245 GIT binary patch literal 62503 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

J@kY1qMpXRv5Rv>*fi2bjwcM{iW;n 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 EJG;|cLI3~& literal 0 HcmV?d00001 diff --git a/speedb-b.gif b/speedb-b.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0452a44da4f6982f29c0798dac05a3f18b6c666 GIT binary patch literal 1286960 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�}O12BVQbZpCT;sf-h0?>3O8-2V- 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 !fU~3@1g|0ie@u*jb;Kj@ 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≻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Ξ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%0A+?)a!#?w1dOpl|!n<9<@A9i6 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≫Gi_P? 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

Myr!5Vnc5@O#Nc$0(e$B5Sm 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

i(+6$ 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

ICjG>~Ty5ZNy~e3w)Xge)+xQ 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 UMxy`AaT&!|kLzmu^|t8$4<`=*DF6Tf literal 0 HcmV?d00001 diff --git a/speedb-logo.gif b/speedb-logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..93dc9e53224a11d6f7a579aff0d88d2dea24c298 GIT binary patch literal 1016760 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

k#k(TLF%n zAhVLTxE|QDVwBeGaX11fAm71CZZJ@b>xH|CtN9IfDCnL3vUhoC*9rMc)5C<2K$*#_@?h3aTM4x%=jX!y9sqamV z60LJ_IZPguG1S*{Xmt-AY)Y+)e94a+kh0I3JRPJE?mVtuYu{g(0=h{H>3E$68@%ms z#MBu{nRd6&E?XQE)}~v&%m^2zJ&evPLZ=ar_cz_gMWj6C5wp2!4Jy|e6ak|g^BJ$! zDF+}rFGJZl=hT$DPCt}D;1rg$%wx5k%tk?lx2F(^;|6$iehAJjkBOY;6}PsoRX-q8 zfGTAn72BaYLyyscYNCYn!L5u4t9}PHAGl5Gn;)}U?E7(iug3uv*Yv6TAo8vNgsYeW zmo}!D(vq5OnFCi=%+Ku|O&L6wAZkik=4YV^wys5P5l8Q?ZWXGdjeeN&+exk>>)R*= zA>Ngh_Y!kTXh|HA)$%ZmzjbVmWdR{rvn9=#VhkW%09N#nR%tUvr`QuozB;{hS;{63 z=ssLsu$NFZCiL-(h1kz5B}?9khf9<=ktboTy1Y_*=rp*3dnqgdzFc1-t4{yPo}#so z{~Rn*I<&f`<2^Ces^GKMg1A%1k+(FVsJVVbiq;-t32gbOW(jaCMiLG8~|6^(#;fjUD@Qv_qZ zt&1tvFA!_m%}q_n+peQ1&nM|?A zZ7a`kXH|&K`fQ^aeuVoF(T9Li`5)mv1&5yt;$RK!2*Nx&kU$q!599?^lZ49-ZHxaE z?$dE#`k!#0y^rkUzi=N&Zd~cfO*{_hy5s+2hKKs+BhoKrr@!I8pr|f;?Ywuq*-LveE#NkeEf1POgx9sWma394|KA9%-2IU*wTA@IK1u+pQ z*H)R3g6(v%y)jHYS0ow+PxK-5sUiNp%6Rj1IbWy(rec%srE5%sskZ&;(br0w4uk5o zC)z^Y6KTnQLHiYzQEwpdFgzyu8tF9K^^s{YQs`1z9Pon>NqtdiHcJjbATgf4-PIXO zrcfwU>}j=P4gojWHB>&C>J;bnAQq}67hT|zexaPfU(t*f)4X$1%F{H=DD-f#R8y%5 z%l2_V_yH+81O_pY#y|qb54F_+bCKaW;oa?}JeuLK#w;rJBje9-*mc57ub&j4vrc6< zA5ys%>vN`viU}I<@N&gR1nu$O?&ckAg~pT${HSXe?B2*U*Kh%CZ_f@6nbwR13cuPo z9IF~?3w)mpawnXW`UB%_kwt?f5NnT1^z=<}58_BPWlPtUZt*vXU zp$t;9k6@FCRMEu2gmS2{z4@e!Tpb>tMe`^RmW}~D@b)O-jN&PHkc)h-D00ElQ)elY zWD~1N_>47+l_q|b>KN*3ROi*?VD=@IVSr!BVeAWbt7(d;-ZVAs=BBlw!m)T|Q78wz zR!zTwFPrrp*q2ll6FIh-jqiPp52SUUgrm>V+|=wG8*+DYP2}7ni?s`sQ{k?Q*D?db zlF)7YhZYjtoom1o^?6oy+7Z_MOZqXQQ2B5F%MAcCuq)zoU zUbt^Yq(+vV2V62Q<|Hf|+sW%NqZH?yL&)n{lLer|$+N3suI|t;@JU6%epv|)cfs-D zokTsPdft7-s1;}vI;V;U*`U-++|AJz`?1VpP(OG=P~h{n3yrf86{KlEmA8e-;VqPO z5OG#;Eem)>>rVqPaYX&~`xqK5Y;*O#FLR6tR43V#8DY4Vj>eZOz7*nCrYSs(vG@jg zs51UY5M)RZA0=# ziq*+9Gz~qBJPaZh*?LGi%7{wK=1JZ0^i4xiPjbtps1J$h4iSk;d4x?*Rqt$}ZfFA6 zzT1JMTq|xab_REB*@e>PiS@^I3Blc-4c1@IyG?Kb8@t_`&K-sx@1F@Hh1~xI(j27B zRt=~7X__p*E`}ND8u9x8xR+VRb?2I(gX{?OJ%SP|Dsbi>flqyx1-X!-(Vlh~y_ z6sPHk{aE(&l{YKIvPvwag;#SUPS2`RPn~V_tW;wDzsP&buDGIw-4ZA$+}+*X-JOKs z?(XhhxVt+P?kE`V7Sk0G+++Trk5sT}G&rB6BDK)l!-%H(( zDMj&AJcaQawCDvP&QtcG#b}B6=I^cdtYyB;? zmb@Cmx1Ngi_P3`x$IvJ0GH|LLGt<<8;KYBr8$XltmKzrS&P9w+PyK+vJai9Dn5Qke%|hamBO3c_V+j zy1!vERi8W4P8V~1Cq4hf*sEz=N&w=aPiqeMGwJ z=f-R(*YMPP4;w0;d&(I-+rlqkKkuPEs&A?|qlM9iuuC3KDNW}@%w z8)9*#tfxV=$r`3_<#6h+F@uj@1$3px2d$m7Ky5jg*+8$v)#}mXF0r*MkZ{VFgC)=+ z>5X&>Vcqa|jCZ^US{>#>eMDK>$SUf zX^bZQi*buiSBN`$S@iP0z%s+Z(=Y}wk< zwPNp`6rkYM~t-sJU}mCUoe^xH})cM4wBO|+23IO zFnfl#rSQmGZix##CY$s|E48JsG^t;pE6X#w+4EvkRvy{meH2^_du)`>N8yOf_v(TH z2gw!8xcg7CE(5F*-FPFi=m9B6cIe8il9457% z3R^g&wKuabw#ZIQE2G`G7%$kTCw%$a1;?i$wOx>MGNFc=zCI=iaZG zTLu$mF9&c%8cn@{d8QNp(imV=;;_v{gXL7j`Zr9Tc*FeS!wCMoCAq${ zt2k4?d7Quv(}%ouN&KVtVBQa~QqY`R>P+KVwkt{YBmbhM2p&invDnpMueQ`_|nydhouCIkTVByE9qP+Ue* zsSnKaMuHYY2z_|S7(rYry}BoyGirJiS((+J9PIWOAGmTA<{`a6`J@-BWDAbOsoPJz zV<}0Q311JB@NV7l?09*a4f2muhIj#9-pNSbR^j6&B9q~6KRFnwRC`aDXRyWjCee>J zfo-&D1`5eEs_D8N2I7Dqte3zE1p1iv^e|YR?_G>4?pFIbUIlQ5C0CXphXGP}W?5`H#eS}oT-@bBu-697gDh^cfXDJZ6iq76Iv1ADCR|xp zKGdeWEuVjMjaO_<4gz-pa)jg++=ms^WDo-Qw~-f^sq+~wpY4d-mS4sVLLC9Yt!DK4 z6J7wHX-k^>K~2aDmND6s<1Tg?7gL#qycs}9mOHOZ2#Ldjo@S*R9F|i=>FVG?L%*2j ze6v*8IUG94BRmZdifuL+D98MR9aey7&iNF1om(**Q$cqJ0OzI?6R|}tJF`t$6Q#+s z0LV@GShElEd3j^3+RHqNN{IamBwWkT86yp+^9;7De%U2tz?Andu8(hN~+39-d(dvG2&nO7%Wa*o(O6sZwe;U zCHk=B^*Uv2M&;*@u)EUP$aE2wv(&C|044I#`dS8+_D*bhwg0rK%aJPO9=N?J`Lk^? z(odDamV9{9K3hlRuC=g}JsQ)#+yw+g2-JG)NY!je)r1kcT8xb*=VTT?1?_8M;kP}K z%+gk&h0-74{m;$5pC=#_5^+PIU*j4t@1X&onp2MieDfUV^kKewr}a(h-7hlI+C`Bw zA&wE*vkEjyV>BYgHzUUY6Z8HKn*Vziso&3d3?~B}lzG zQsuT7GFP87zz)^Ya1csLb+z5*8xTeY>h`YdvXqC_sS9sb3bvACWg;{MQ$P&h zblhgT%JQL0cIjxE?wfj=)BOjaM$y$hFVNVrV$f_2=z3MK54DwCS>f{0O;{L>zcYA8kq8i z-oCt}#_6#_cbQ=DK|7%>r&=X}>}sjT`%Z(iY&Ax6cX|GRAN&^)K&!i2cxh)dmx~qm9{yF=L2DC4vdl!uV<5zecj zs==t-w_Ldjp#Ipb(((e)NW0gt&H!G&pTABrCjQDj+X4!*731i*r6u%LMM^JFKN2iz zwb+B(+Va!9vSM)wtmEgep5~AHHx_l?aW;c%i7?H5LTJ9eZ>f=G#-<#Mwlj#xYJQjB zR93T?)Wf+d8N1EVtox1q2WH&0wFVt;Fn1Tw6xS2JQvJNPC zAR`5!S=4Qvx`+d9dEwbECm(knn z0~nzL9N1Y_``*=*Z7|JQGUnzv>hT)(zMg#t_IklKFhqN8dW(2W`3|e&`JCTTBtH1x zTUb#)WbG|(R|qKp#3W5N(h-Y*Ceb_1yFX65e;@_Vb)1gst_d@Cu&~WweaJUEmz7LO z!l|yw76kCQ;`VvPa=DQ}*`m4P*Dz-m^zYp|HU*tFoxxwR*zRXgU+vSE`Fut6OxWcL<}shdoxme}N|y5hnI?bQt%P2crKY>S{qrK_dUmYo---Qu3=PmyEm-_VC7Y`|Vp4pLlDb5V3^2@!0LN%rgVuo^UkI=6Q zT#rSeQnugM0*%G&*|8njKift>7WF)mw=2`v%lb(RlNm z!Va@otcFhJ(T6_JUEH}&?(!*hX7-;$d!Wu(vC7|rOQm@(bky~eO3(HlBt8dS;rgD9 zcNggG_$yJqzuF4Bwf@m|aZtDtr6xE6P%^kl)Q`si{Vz)xqZO)4c6#*qf%~5~{_jB_ zI?6woDDcOikLjb`x59vN9YTq>xZ{bY;KJmKL3fGme1CUVl7?|Bd>msQj~pV zj}p-l6D;wCpOQm%7lt1fwr)8FIkm;uU7r9 zusNWv8O6Q?Uo)18SW@UZuzF9YAKxvE z#`rX6p97HSi_@bq?<-BECP*ficEquZw45TDW{3sh*#Z!QN3DT8lx<@PA_4)xOAFhI z#ZqGia3C0Ke#rok)(E@r#F%aPzBV-?P6stpnP0M+{baWaS07QYZj$J=p4V<#zHS^+e!pR!tlZgOI%Vj+y|e_~`hoFC zYlfVN6ZpP)TZ}w@V7z`NV5Z{Gr=7qH<&K6h^d#Q{nRlm>^n)Y^tjC{eDrk5#(Hcp9 zhdCc+PbqdEv_JT|x}^SRA7)P>rby}lzw^egXuW576JI_s-b~TcRnM>a*Pm_wF?$X> z^#8#uM^6sCoqm0L{SU?q>Yw{B#!DCYFUAWp8Y6ZKd^$*0`6sZI{U3~{qhoh*@iFN8 zbMhaIcM)PD^ZfX0A>`@q34IVsh+P}zqup261!f`rX!pVHWi;xUCtS?3Vz<4C*uF)cw|1o=x zQXskg*X)@bGfML@==*5*VMqV}0pq3T{GY<+p#Rsz4i@@mP|! zkBObs*IYJHMkgh$MU8j~(Yaau4u|4!Rs$ucv&A|+F&YPZRw&iWtu9}1tAzdnnnAeh zoxRnR)|asXe}KWQyl%t(2w5r>Y(h8Zcz`?Uf7#s8Oit5cVgck%XxKU2@%R$rSnRnvc>I5ai5R^}`QcuGzlBolQ%Q+aYa->fDgy!_l(l4V*laYL=oAWG4k7NALB z*0m6dL?Wk)*n zNW6pMvT$q;DbISZ9aJR$1&Z_}61R zY~bKA;{_xs%o~&zuUF17^p8(uq@@I`_Y0wYtL>dP@;Q;HcSX1u~`2j}(r49yD9QELP>|8rmSJbyT+~H1fdn_$= z6fC2r6#Q;900wGK@SkQGA!xGqYcAu7pz^9u&j}d?e%iiEDMv2nbw+I=?U!6JH=(mm zVDrx|hME~;;ZCb|{wvYvv67-axskWEZ0>iVOz>TXs-r0M-He^0y496zpm|q7M$RBT zK;D^f+lp8fJf$gyc389?E5S0TBrIN2G3WXggH8KPg?alaj=hYk{5{O4S3o({SdCz+%BA;KXRreG*h z5`&|V9(G_mTu#tj67An=eL@w@e8F8fzh)>RGWnN6@g9lP@(8q#_pM6m`kY_bKUsOm z*ednF4W@*l?7_16R5UBbx?cXwj4Sd|q-b@agSXwLDZ8aL*i_4^@hry32%piEOGH|Y zp!=6}TBmED9`fxCpZzN$DT1hnf`5Hs2tu~R?NGAF!>M{@d2~}W$V#qZEAMo;21z~* zTY33S66;-%Dj3bI1h%k3GS+oIB5TFq=jT)2pW5%rv%hWV2HTU;bivKMorel5cXOTk z4|Fo5aQOc`t7BlM0TH#Dr2z@2pYBdra%(lSKe?WLnh_L#t!UG1_R!)Yhfe{AjfvCx zk(3mKX~r)(mZ5DbvC^h47jj`DcD38XRn=C;?Pb(iuAXbBr)agLrTI|(JAJPrs)(9HZCDf1|nk_Ncf#IfoM*>F9x#pFS~BTetCAY4vW4S^E$-vngMC3B$!i>YnYIq*4j48aLC?=37aOTVuSkaR9nfrL- zudP#G?rIP=>xPnoi z?4^A~P7}Q(Hr4M;yN2o&Po!v9bL%^&A+f5eZvb=EaC`!znjLgj8x_|2y3O%LkHXTS zLJ9c$FaFM~-^`CQc>9o}KQ}BmUGgkQ926vV^$DZt5`qd=#9wpqTqZk7uxwhp<7m=( z@((Nuy_0tRKeU1{NzD0wSD_eLh)mEVS21~8{Qhp+n_ejk|1`J`^aRiK zuYJEy#;X|WSrz-=TI7?;cN5X6h~M=CXk_10AMK{{RyP!E?mdjvRd#)b6r<+z1i54f!`h?xe-DJPd`D=o@j(bMA*uDUE>?zWJHjGBAE6g z7T`lFB47l{K);t{GQPP1pJ%=pE^8k%x(2556m0|?8nROB{(B;RgHpA;WD&iead8hd&Fvt z#ZK@?cEElx_S8BZW3 z`Ew<{eJpqkOZ@I6egWRgj5}n1GTtXbdnb!^JREnS+7SOi&88UIX2QOiTQlYp?r!tGf1|cQiH#qNse&;FjkwHKH zca#-JiX(;vkTLRJikIcg$}vlD5mm{;=LqVM|^OvNVfnJ<#CXw$k9iKUd)Kg%qhq_~{ zin|Yn;_pZXMWFMkBsQb2m@Fp(p-|sbhM-<{l$AK2AZu`}BPfPN@QyzG*xrL5ze7@3 zTm}!ROz?In!&^1Nu{m4lCIycQX0j`kQ;yddV*Qx_CI>=f`VydeHBWrkF$24d}zqff2~*W@PRY6vl23&3m!vgfU~t4Pgw=5nXoo9;ZYo6~MO* zw#yaCDKTI@V+C!g!&|2~;uZ8)WPaU90YeIvY>RUBQW)=C``w%bH0-(Y0cn%cg=H$R zU4F^$ss&cw`P`=Y`Dyv&B?X7P1ym*RT{@X_lhC=@h14ABH~>RNEQ~{ZCn-YHE^Ngp z52hQL{6tU*N}dKhu!uP&AuXz8uu_yE56l?nOjT9PS_bAIDtirchD}ePLLxb^V;3^x zCSG=-V#IbrG=~hc?Bs+-Tc*~-mWZ0>c1XL=;ls>6JMjDCC`|(jV})fN5?pe5DXd8Z zz45b`gSy-^{ICKd_Q8HUzFa+(iM9!Yg2b&bNovy$duQcJJQX#(6#_(6W-=BQcmWg8gA0(oitQawz%}B{B|&*X zK9#J_aQxrAtZ081NqbetM7E{M%uhJ&f)hSN`jFC0NafKdy4WHiWvXY2eKB5vhtjwqg;IYPf8&QtR`A zTZ)+8tUp*|F5C2-h^Z{E=6<>9A5k-WZc8Z@_>X=|xqc%mQAUcM{p>*n#45Q+t5p_B zayQP@gR+&xw}p771>2{HFP@GnPao02k6ek~)jf1_x)fBd^E67q%G|Wi)N=E_`3b_? zteoFg)?KF_|An`gUfQ*;KQmGCNHg+Bv&W%Je<|+kpSC+HPQ(kHN`X30B@T>FRXV~Q zQYD>fk#dxs6=I{RQTjEhH=X8@(LZB5RbDyW3_4zZbVeD-M(zaPQ?${5I25wwoQW3@oVzTGDb|1}t({?f57>smwXT0c zNwv()lms0Wy^;Cbz5QL?L&Dv?@hqachW{ohbCFdftD$IcaoZ7Ene{ra5PBpA+p3WJ zz*+s0`1#QojLhQ0*66VvRz`f3IY*`$Bv>UMr6 zgcf`CI}GPN!gf-8b;~)@=&}D%9<!*7jTfH<5(J*gMfc(`Q&^|zd6!T z*3uQirPO6Hb0MHci(G(qkoEp4VktCbk?ObSqSdjZv?S^BZfBfFBD2fCAol&T6_cvaPWYls@w1vRIb+JY0@iZa}jbkX+h~Ws_C1B z+tfX&%i7$R30!k;+L4mW-}(_}NY;I71#n}9@7@c6?7OCHyPI@X-;u_rQ<$x2AFR^> zxJxnf9jB;ee|vpoX1~x|@=SfVrm$=*1f1Erqp=nHYB?pwYRX)|$n8WHtf*ay#;&o- z`Hr>^6=uJwC7dRLUr~Pm3&9tB3EXHuS#HuTCMicsCI0x@Rp7E$RE4h?p?b`5sKp&< z6zuNK9Z=`VrfpZlC9du?n11Hj3R}J8$V{en%pJO?1La@EzU4R%%|tm^jXHgE)2>WEeU*OR<`Qs;q_< z9<&+pY4!9=XeRqj2nd-E{Dz%6ADMM+RsTM;)&9clHxro~gx{HEUc-5i%dzEft@IN) zFvlJoRb5u~V!GkP{xUIz?R`-fAm6gL<)6(ygoXpfO_HO`7*n$%BXm5yxX8fz3Am-i zBnGA@b6GY%z}gD*%<>gfxn4H(IK=%D@a@OCZp&rv z5;ksrAd$!u)9&%L^VnL^Rr-*QFuuMkFsclxIk|D9%;2BXp3z-#i2a5r3Z)@5^I}J zD5)R*gj%Q*{D+#N6Xeu7F471!Bs@N@^?JWM zpJWGJla5N7OBi8F7o-FevudXi?(t6HiX&8^rmxEGoWDGkmOdJ{8;ELR6~NPMEtRiF zHap|@L+?m*@5(4eZy{cZ8QzkZ^LepyHTJN+#y{7b9pz;7DExv6y4Jks{IKwM0r z^ID3F6xuJB0?{T4`R}-c6iWkWBBEehYOarz?86heNpqsH!1Rx<~CWp@4ue z(6j%WY*XHJ^?%sh0BcIA?bi=BcZn)9d>osTpcDX8d8dT+xy!Hw_aef3Vv_bb0Y-uh zGp>geQZ48JQc(8m#?M};D8yfej{dzK9hFnvjX)>&sB0N@jG!k-J4GOEXQ!9B)jowt zc#nw9q!gvMT}|;@%@tnQ43iTd`ZXKB%MJMz&lbMB>!!m#FoDG*4oNSeVvOYKXYMQ( z2gP3nBd5Z@)q@T0SE8MyXd{&;lJGvSLQm6=oca9EwEU?>3uZpo@5PRUf{gnZh$OnP zID^aLX1(del%8IvVuV>I}jm7pX06cI#Ro^H1__=sk|5IKQniJ4ti8#0G& zLpRs5Ut$wbU?e+~w6j81HB06AB;2{l0& zL#O%FEhNA_-tSx?);j}NZEda;A4jIF@4V9S(G8WmYW?-8p7tq{K+Oy9YbJJB|HVV? zkkjTUAZ+g?)*}fTvv{FKxH>Y6Y$|v(B9w-Z?@N<@JBMmW z$me&+{70l|tHt8U%xCTe^LnE`%4-Ydrr6{!s-~%%{k?{^e=Os%uGQ~Z>3AoKJ{agg zqAV&C*%ey)NGU=%Rec^rYdnguEk7R$ZrH{c{kX#dg#y5@*}*kdqoX@4QLP8FG9`bJ zn_VEea|{g?6iGB7Q77X$JjN1{VxM}GR&iKWtJ0k&YgiI-D$|%xq9WcX$YGZo9{yA5vUFzYHuUiieXdu~g-hAGC4u3-l`cbikD;!^HcKt0BTu3zZleU0 z)2rQ#5{|Ce1U4)Yqa-8Ezb7bEvYQ&|V-vWhw<~8qWSd{>6-hW2M9!!G%jWL5)LQ4o zG;IFM=6FDIc!}-SIP5lV%U{G%A8>6&iM`g4;henI^<8$QzLvV9J~HV>D|>G-j;wg5 z!sX0)2U+p#dVg~V{4E=|nNNH|`t-BJelPf4RNq_^@TGf4{@%#E7WV;L+IRt-H_s*-68~iUCzd8$Ed{p-WuH0sv1Fn01UGtpr z<;(}%45PDiU5}D~usH}((?@kr9G&N6QRQP|m-}K2xLJ2u2zqi={1xvdIfKlJw34>mWE?-KIw&t1{^hip?^^Lun5kkHxX_Hc1r(~|DrKY>67 zxgoqCq5k-!t+-$QGPxaY#v|+g&b1#q{jls$c!~x*9#Jc`cIs#~T>icxg(fiFdway@ z#@wT8<}>}M-(|q67W)DEx+G<_epujzw# zD3H+XDnZi3SW&VrWSt1%5tL*)rIAJ*K#Y)vQhHhI!NSR%1U4WcbOI+G{Goc@k7}Bb z?+w+t`ZEoOMJbxz5|*j*#)I2wN_jc5v9^pUx>{OUu|t`ZNeVDg@V3?D>Bjby=^EBs zR>y@nC4}Z#n47Y6p0O`}U~J%TxI#c~Y19cA6{KtF2G?3~3Is|r+LeTl)kGMv+6~f| zk)8{hRoH~OF6yImLMlENI&WuImW=!Fm!;f3C)d>1RFH>NQ_)yqdkr&PG~>kxQHTk> zz=t)yR~#Mv7aiz->QS&t*SS%Mi910HUW<;(4S+a+UEWtLd`2mS7 z8pDSLRudcFu?27u8hMar>0jT9g@cR%74&?(<0{qTEqFbFm)O@Df5t>FAv$*U**(pM zb+TfSd64dEp0wz=r0hYq2g^-?82l&+QwttG7%bD3@aFH@^=r@(nA(O@-D|Nc3*-j8 zb3v{E@q|K#&^gK6Xq%f*X05 zDE!Y7)GrBkwh}BQggf>!iq2v$Dxs2v{K3Yqd^mcv(W}9ANJ%L>UG_a|a^iCH1`*@(Cw@PM zf*4v_$^dcMU$ofVY{cd8iaN8kJn2zB++T9TQsl5$c-<#FvXV%*l!e~_U$vkblB-9P z?oCxEHKmZ!bZje_t739ddzJ-=43AJPbCvX!pnN&=EH_*&sYW-e)qqIxAySMS55CAO ziQqUk`j!cUp4M1#g>v3s{Bs1h9{CeLig6F&=YI}zAt|!ZvvuSMF={Id)z2U$7j)$I z7uZG>wNLtNj}tFK$+DH_NA9h@FgT8*=D_08Q()G9iIghMgEcylCe(lb5-ld58sKg+ zSE4y#IfllEnnx&6oZewb>j;{JrDg#VEfEm%z@Isu{RPP`#W2~Fa?K^p1wgeZk7y7a9|$Q0IIG8(GSum(mT3`5cs5T!Umh=S zuMMy7H^=PeV^R?7A)<8{(Eh~LnwL@%SeoZ6vSKn|>F88RbEp4HMQhXy*8PIe*$Q-Z zMCnG_an*hRG2Y90(CN~?#x}*3Le9q??g!x&HXCqt_fNwRq&I< z+D6gEXRK(>^hKMTC&!)L(z7OpTvO72M6k)t)GXiEvV^Y1$yQRaZC)n8&fcs zDz*E3!lO=)b2*5-?qa(Du4w<2dYs2*kHxbg^*r@yF%=CEL}_De-ksL~o%63J6ZnCi zB|6T%;ita|^z=i+^)yycXd#@UM^|5bVyB=atIJOe1K^z8Wt*L@%g(^1QUx$H9s92S zR&qw~cxR^37*08jZbqlyeP#Hk9(5ZIUuZ;1GrnF<{(qg9AENlJ$U~a%uk^IvZw6j= ze;w2p9I|#@`JraP81}}SC{3g5Vw|eg3iSPOd%tfDa96sH*2HI2DR9r8#am zJyhvpz#cctz&zX12lBC^*Q^J#y>3fF-YKsZ*xraif3B$&-uQ+8op^0Xg#>tTsAene z$bW_|HyQIVKd#iT!!~tUlM@}q`lt=2-ss;x0iO9mc+H@vW#ug!HIwiVtqM2edqnhBnJ4ob1CI z`4F*76S=nG$z&S&5(cW3p(@Lys<&{fePnvih%A89pAREyiV8U1Kwx|d9kccWDul@% zc(D`kdYlFVpGlNpBS~GOA1FmZr}BQ!e&0&@c+@PMsW>-uVEi5}KU2wfl_JufM4N#u zvIruTXhd^#wF;|YMmHjMr2=!`t7)+{<4E>H#!El>%7~DUt4Y!T%EA7PODcRHN1W%7 zAW83PTUy;5Gc1}oYLJD}Gp}-&fk3A_#P-W%j8eZq*pZyd=XEQ{Pky9f-~1tF{We#@ zFhq!Mf+dFG!gDk>4&M-Mf`hrV(-H4rw*i z-q1GYBKQqs+TtBGW`+3u^yABx+})v|aF=$8XK04)kGmE4n4a!Om0mC|PYN*+J~8yB zu_f`4&f>D#^<}LuC98V}b7-g|LIj|kQc`$q0HyMF+7M5@t&|5qdY_lS44k*&R&+tN z!%5keQ z0ndV2^gJvu!TRBf3=bsp+@_}O_`zOKSJ2TGDG`noIYK4b=TtDI^dXQ)9?L056G5&L zM2)Iy?)oFmfGBzRAuM!4Hhmd^nKqqxLHOK>T!Bz8*Brl?SPs*Td=4FsF^HnWQQm{J z8KPjp5d#d39r3Q*XDlBbb`E`5MF&S1q$aqmQ_mc?bazv~q>K(s%Ud57KKy z=<=}Lt$2FMgqeb9H_aF)z%*r$l08HXru>hHM#i(4AGt)Q+A`dEr2B0V^PI1->g zRMD0h=TkiARs~2g$>tDHaTa3_VWNFBZ(YxdD$|EM0licU4*U=#+=$MfDD&;f7pBma zA~HL#i8bxXgTb%96-=JCBMR%GYiu*51DpHthO-aq3m`;^=?at&7n=-5+I4-5{Fc+IESpHcIgq^&{Inas-<|YN_tk~3#U#}qwJ_*DKODPCtSp^mBx*8;>hW6kcL#v#7kSjD-bEUaZ7AZ5hxs5p?X`dvTjzY>a`7 zl~?}kQcBH;Gp37`%_mHX2LLwJG#~#R+zn|z)}X1q52ha$ZdnPElR!Z+u8M&%(BX#m<9d7l|+pT0!}p*F3O6#2G?3tnIO(0s#8&@JL~G z+Bb4A(GK0F4stdI-Zgm;JE?AC8Q3tbbCk~eqDYZ`9k+zfnqKB}#CkwB; zAl|!1x3#Ia%NABYAj+U?7Pjqjw^4^KtIB3ILa_HnNmNQMlzLQIO!oGZ1RTvm|yUj*i5x^DDZu(--SECiCVdQ z5GM)WM)4wE#n3VEt#P3Sh|(MP^<+FIZyZxQA5^B-XWjiUqYn>Tv**jFp))%kI6K+r zy&_nB+gp`e0NsBgr906kq8dBSq>ELP2++ampqni?RvSsD-XlR#Ijp#hpD~^7BLI~+ zP}JE%)tx!^%UIRnbl;XIa@!UL#H`Dx%5L}QH6ea{&Iq|mt$+4fSqquGvc79GN6C+inoDK3}3Bpe~-0P_w7j*5^hY=~tn2NvP67A? zpH?n!nVyd9MGKZZ5+MY&d6KN-$yjRY#5^`R{4 zFLF{XlK-7Oo7wCj*|3%zd z(XH8((6vyHneuMbWN@dOr5T}+$DNpfx|y(U z#uQKJCk-gt?CZxw5!^z&h7rUGe$eNp=BHPSvmXuL_`k?|r{_xl_}_9TJ66X|I<{@w zwr$&X$41AtosMnWR;QDW)4eDC{hhg)nyPa-Q+1wy;B)z0toM4Y2BNL`Zn0ec5Hrsd z_y8y~%LDfQc<|j^hPb>BUqin~E%K4-*0;j7#0{D2#3UIHya1B1b9q*p*wYU*Hrz`7 zSpwl%aNe7nqjt?4vFgtbJjMJHpt?#Y$#H1HG>b+H|k4 z$*=nYPQS(B!JbLGvPgE+k-r~sv6q=(;h$8(?)RE8_n_~)E=cmO%>OPoozXanN*-G# z2=XhrZHf$v-c@dNW?uD}19DRF^<2pE^wbpHyz8*+?$70SU$Jw|?zLQZAH>1T-BKuA zBGfw|?cHjQ8z9zKdhc>Hoe^k9*m6H?&N7FHiUv^OB*K%dMiH0e5Ztze7z=&`rbNo2 z2?~EyRz09SXf&hFTweG$Jru7|YNX0M`~^(DJqQUtpn@P;veJT~+Vvja=)bEkOgyB| z&!$5|?51?lXn^1>Nx8AygeP*R@k>NVQ$2*JSM0`wJCa1U*nSK7%j&d0;T$&;@=h6R zim)-$aY@i{Z|o&<`Ry8?F14ny}N~N?_49^R}l`e>o}(y2e`_ zp^P(dn9J4Qd=&*RE3>;G}geD;2#xx9%vUd5RD5H9UF*^xE0H@f__@hO~tY&S~N5&X}6GTy-- ziw}(cKka63$k$c<(Y_xL?OPf@^OZBMUHR->^CCb`q}kEU(Y#iLv&jNmD#CGqvZ;TY zm#K(OO}jnsUu=ZM)63k#FDD%aVaG~>TA%#m?q_w`kq|5ZU?N0HQ~(%hG9qmlBfy*m zu_lpP^N%64EP9qgFvsLqGL}}!!gs`ksk5*8KN-;GU0?bFlbX&fo;A;fNMW8$#>ay) zVZ_$0uwkSn)6~R`)F9ZQG~C?6F`zU=Q%hSqKSQ9cSy{j`Gi_U6Us`VI4UF<`_-&== zse8Ph2Pr#KKm6iyz3pvI1OhR#G{`GRD7;p5^T$@WH}-0d)7p(?S@oO0NIwSX=$G)? zr2=#Df1)rY=8q8yB0T_Ps8}2J1VbsG$U%B2rK&XK>cdX46=Vop%t!q=-0orssdjR? ze09jSBJ{G3#IJX1SSc zxU<@H6R?O2wR*xe=$rdzx%Ec02*}lFfW9WU3TO4HRY^@o+l}ve?*|jAY8!oN!>Mq( z6lK+2@*l#Gu(;$>=#j(l-kb;tvRPa`@$C z!mPB@=)sdyXb&?iU5tc4FBUdLZV;8+!YON_g;zSC!7JUtnk0ERS2+74B+40;yO>6` znVJd(=4X>OY^4BN$(3=$X~6b*;b_kRPiE=BL9D}b8bEybXv|8P4o&0<#5E3gZ^Q{k zl4SZ$EUua_HGbqh6kht3;Cw<&9WXe8UgAO;l1Uaz&0%7aLL#s+9&;KV7GXf5UAV5w z8eys)XU=sXpJ1^G-k$)cRSAP2=3zt@9dPVv0c|tEjp*;bXm-rtcFP?G@H+fOS+HSj zCJ~y)#i39v|4l?D9%ln9yf7V#6F=uFZ=MWA@)o%?mCxr*vLa*iVy=J*-G`>q)rRH( zvyR{qQIbr41>3=388BJd2O1qPRIH%^W``3h5m!{9WMc2vkL^~{K}@$DT{k*UGTFD{ z6KxSjfU{N8%j*|3g>w~!u`IIZHIUkL+zMnU`cedJIgpI3>aMU)OiummkyN^JF!&DF z;P~Tj2p$tmG>RS54+v1~&r*2S?YjX0Wlu;=iPd=wt-Mf_^Eh1vp2`I1yPZ)GSl{R; zkSqRu(S$-f-8AmdV)rn^brv@?%l9m|H{!wZ;<_NdXX~~o!#Kl+yf(eBt?2@q$QJxQE&gjK}Ff=O^Gd!&&b$LKm?1vm$tr=kv0Bh7F#I zdI6Yy>t-b1YnL8|_w&-V_*aK6C^-q@j8StMh*L(CovRuYZH&ct@ zCy?8X=?dN?0xgNa+vibgh z^*h^8tWB#=S*~kd3gU`*z@%d6|3#K7`2P;b{qO5{a)uQD$3VNs&+G7LFvt(UD+uro zpkhiC3JQWjTZI)0A`%WqCT-eipUeMTxEuq(7%~6f(5|%+FqTB6N>aJrQ2c4pc_JLQ zGk#ih98XzvLH|N^c#41jCsZeuLQ|@~xVu=c1e9WjX|2jHP!LqMvu?E|tc0uxp}}6R z-Uw&=8ozRJU$e!5hgfC5u&S`y?sXtj+THB1`vYg-2`IOIBoOKgPaCh5P_#Fa=)K~L z-`T{M=SpuIPnlLYKU1)kG=ty8))kBqZr5Ym^;lVuXX;v_XTol~{GoTn0Vxy|yw@L! zhwYRIX%VQBgl4DZ*Y2v=8!ijY5Ckb4!MkDd^`(cGa&KvfQ&2fsNGV0nGX8ls05u5g zU`SI^_!rkxHndjz9*9cl;|>IzUmXxKr1-~!fC;t0~Q$GYR6+K<20>$XS2j1e7 z*CEMZ5y3$+5914Bu|$eXM_X4EAs~8Sn`j0(fi2)&3EHIc{FflPJh#ZdHJTzUz( z(`-k@M4|`e$Q0NM1Jo+k%mSveEK5_(XoSoozph#&#D)A~ zC617(ffZIoY!KJU@=|cJh%}W6I!FXc2Q00hie#=cXJ*b#gTk|8l1;XOkL9- zLS*Y#n4MuAXG~~~S_d*Nl{&8&fa1M&i*I@aOV?^!UauUJxVk~Fu%GO2`H~D*3y$gn zkuE%rV|LYkC(x+cjzBm0Dcr4V*i_+%t84TCIEgRvELh;SJCTe=RjTO!;NA^oD7;~J z4j%9hy1Oj6k$pQ9`3%)n%Uj<$!aP_JJCx0K?2OS#3f}_m*mYPE9A?Mw!e`PM`99LA_%&mX`quABEt&tapFxQS02~q= z$dnl+7uqyLG-017g!*+sP9iHgQ9SpIIv(HNqXS;t4S#(2V$g%Ze9h2k+IGU$og#Y9_K z)KHe0kVeRvcYa5fQs;n6()fgSl^u|uD3%Lz`3S+R@)O$id&U(V8zTWZ=eEbeh-3Q^ zznUbR5SSUciIufl{Q9n|vy>{_P|8k=IU(EVn6tf1j-UjsfaCE1BTHxb@o~>a{D&E$ zmNzSf&0`oExzXUSN!iw02=hP~Lsk=4F;95d%rKa1!BvMLb#+vPY6sFq~u}s zZfM+xvlwea9;#_kselyyr z=sJAic-<&NO@*urHNgXB*?4komrgm5#;UHwWi)p727CUX?fk7%;FIl#wrZo&+-FqR zN9uz2&924JAb6R0XdA`u5?oAk1I_!Eo6$EA&7c53y%AAC*aHjS7(*_z7XxZH6zh7V zD_SN+vs;gxle@nrD^kC4h%6e;MbZuSwz+5rl|`4&6vta0^@q8gk!8E_?(MoFKLs6x zcj8f&g%<>t!JXT(yVA2tLCa+0MkTrj7x>9p#CFs6Db?d4mS%jUgpaBvWYjd5L%DOD zRe5q`_6+-2dHbb%vtIxm3%9K0I5+IQC%4*{XZkwrFBdus>mAhr6OSM%-GQrxrnKC4 z>nmvqm6ZT;Yza4GiR`r9(2z7gvu~T;vs_e7S_io)ii*&4-E5B@#%TDIsz&{`)0Q(0 z9;DrynVmKAvBNg4DIeJKYgjRE`!-})r|N*dU-tB0muqa)ro>jt%UHV#{Lk>Cd}{OJ zky{Nn@n~up>iRV>17B?k$ByqLPE_lp)Ftdx^DyVf$#>IS=A^R{XVeKX^N(Z5SKia*RYU%gZKf__X?-q`>vv}Ym72sHSmvr2 z_nB-cE6^L7G8N6Rqx83k$2SxULbI>4yk-ySj(HJUj0bCma1Zto`q%qp)l&y+eKn@c z)pfH%IdvK-hTak!A*x+x^Ji*D3wGL$aZ~Y!S=n{snJ1bZo+HR0;7AI7TtZgd-e~+N z7SVR1nqTViUi>QoFQI&5KH9v1pty7L-&jR@S4V{}KdO>EM4}|HV&7${d+#v{0%Cer zDS)5PHIhSgP9c*wKJl^&I9E=Sr>HXIeftu6p&55s|GgIYZXa?+8|Y!B zYProU)bcIbYv&fpBkImn^o$|lJbwc&dM#Z`WWMLOBh_CJ`jsH%m1-nIs--fak$dux ze}Aa=ho$1*F(bNyK(^GN@s=Ra0)HooIlj5+kSUuiJ6CHVGsmeWp9;#%;g?xAKSL%h zigh47Oz>n&5Z-Yh_zO1!Optu4V?L|L(HI!hc*q}15A;lSs!+EUi{K4n-{S>}ZKJB&>3p4d2bb^1)Dxhw42Xd!80W>d%{MokRWrvB%&gn%bzw_>{!ZF!}37nJrny zp!dhn0iwx(BuNqu_s{%h8sNl`VA!G#Ca5%K!LY$p;bsL-*_5#&T9t%7aQg_we)WSoA zNI>iN8DIB*u3)Q)OeoKk86=N8OedoOMk=p(QnOH-Pz1)L`wXv{zGFkJ!zAJhB|O0h zK6(Y+ExAXY6QNBc5M(hjwQC0FpQV-(IHIwyT80^XCz063hY{x@zyRk+BvroeT(HXHP*FIl zwUpr2*7l{`;D*uJH{ndhm0IcStZyvpr<{><82%hBtUVFjd}O}<7my{-IXk766jDA3 z+?32?ncrRo#wz6yhrPaDh#89J@-q3`L>s{m(N7MVgbu`g^)Nc&AoRM(NoCS9Y~ z03X-@Qo(?)RvOf3vT%8RXGV1eyn1886I4?;g;l3CIGRE$Dai-yPV3+iH2Gg@1<4p zEBR2-EVv#5Ft9?9sbPLvC9Cfj$5wo$OUWU1v-R@Fm@69mx>}bwYA+%o_3(fbSo~VME z!cQa?sapET9Ix`07iJW3gH}}p;;AapsVdAC4z>Z$e=fnh%OEg{1$i)7P&wUoR0#{^ zow>40agzAG0!v0H{J|vMbY#{Z9J3^W`Oi5PD@F}n_Uthga$!_;n_dwyW{hlMxY&{R z5kR?Q!!2jgQqhbErfR3LQqD~ADq`+~@Ne^zLBRDoq+$Kw%*=#0fhL@^5sEm6%qm7? zk~L>FUN^v>V@kY`iqp3`Qqc;g>;`MN`sa-XBwm(#+%o&q@Ec2R){x-VHeaG*2L*RB zWslON`5JxqhE0k_(fKrH)W$EqNp!M};zf1T)n%`T4$6?uMIjb~N?%>rsW>O93^wW} zVJo3oA>t+LwO^W`LR-Kb9eGP_(y|?XhhVAIHnz54X12Q7y5Kcw!8xMs zO!K}hr)nQDF!?#^#$FvFckMjmomMOz9kQbB-7O`u-K#MwZ=XTasqiKZq7GD^+)0>5 zUe$-F&Nq#&x<3pa z!DehNx6Qj5m1xh*1{%Trl)brLO6_=<eyHL%_YXi@My5*~lu;B)p8Ola1ziSac~vV*tLK+yO$DI&DNe+;|Hw%l&&Gc}E3a&V~* zFq7zZr?e5!8w<=kdv9s5#AnN+!Zt#3>Bsco#%_KBPbBh9EIoF8Z}Lyhok;DO z$ljhvu$w3Wku*n4H{g=Te`K+^#6XnY%aJBymLj9)TG|wDwe;yWLXj4)YxT6z^=g=n zN!lA>7ZjEr{#-02Wo$6zMf@ zizGtAjr-AIe?9M7`mBIrgO{|=U^3O>%@^1PRa+*GZck4EQT2~Ftp1iZBgqU3wVQ0r zhm)08&{uz7;Tch*%f2av3jdg5paaL_414FZ8=UZkD&gZko~><2*Q1(Q*`9}i|6yyS z;oA-2LN|g0*L)||b32%~`RatvpMO9>^Y9pPQDcemq{I3xch9d-P~ZJ28!Bdf>B+2Q z^-Y=<6d~OXWh!jsg(F&!PTD!|JpU^6XiHm?&T?#HOxZFh= z`ehP-s5t*cxE*4+ZI>saQT9+bYk4394{o*GN&#T5#cm}VCsS8`Qml5#+9XyRqZz-?ERts`>?5LfwTJn{u*Fw+L3ID?oyX8f!y6_ zG4Wi7Plx)~;bfai3>a6}c5Ii$Divsqwf*g1!#e3I>X1mPXT8**Ocu-tbVB$}h~x3S z%y$cBob2T>V`SO|im9|U8aL{>sMsK+T-Y)zX8W!?D!jpmC1f%5GqltT5WZg~F~4>( zj*cP{&g_o|F!ZDzgv*p+tlqxJaZ}IUhQyUv8T>R9ov-i@d%GeVA`8R_u@YTo6e1)Z zx3G4Atog(43;P%0LqHr~M}gUk{CW1gEk4M!NM0UYD^crLyX&u)*|>?Z5PZiQR0&6~ zR02J^NEZFiJ{7Odt0%UkZQ2qK`FGfF1I5=psx335lzWmwwy{hP504}m$Dqke$sO6k zayiWsnG8a(hRxp!jQ786@ZD+TmHEx5?W2FAcM{@-(3H-JP!?pnW`#dp-V$SMEIm1Z zrkw(Xzy20p;M*28P$ojhqic~@u9rKGk@eogq5J*p>NjM8^M5C=b`PKj4QJDuctP145g&({BUkjI4{YEfwk;DHjT!se` z(l^A(lrNtYTujdvtkiM(ti+gy)W6E18;zMTyxkx+pD_gW&cdA2X2M1pc_t~7C>IzV zqBb&-EVw}r08osnikc)Mvno5K&!C>U$rCSNb$lqsCPZx}aZA#()mM40d|-W>W#D6c zrqYX~n2VkV2JY6BE3LHdiay3FBGpB}hzSO_b835c%BrWP(y#alA!d8Uk=}gbNx$!s zPZ}KkRWN7BHzhvgqeeAp7Xpjor+s7R0t?nE^beL`0-5XsP{sVvX)TI1>tpFTnpom> zEtw?%M1%+S2w4>+8KG1;NoqKkX0kX0__w?Ta$3V8A#oTwVh6*6=rowlP8|*L(^+yk z0>R!9

pAGsCX9zs%LiR2l{5yH=z$%LE50aIPN3Mfmw_QBAihlw!Uh2?AIfBX1!J zycgg8Y)#W)v>ZST;Rt2gNe)5X8bda$HymXp;=l_dctI`jrv(v`pfFVmmUyI)oA8Q! zg>I8&?XHtbb3SBlr2h&A>qTa|on^cBSrNI`*sWI-1s{Ge9)RnoB$nT0OziKB(ZTw` zFz30xVM?+EHT0*^GcB`G5ZlnDX>HPYDklT15)@jpKttu+u#~mg)b;j$pk}r6DMS|O zs~@tqCh#1Lu(fqvMoAtX_D<0g!d z$(F<+`g+FD5ZFG&2kvMVsYmV{K5Rk>bvK#DaRRs^g8?Pt$+^+he_CMlgymThljsdL zhGGfDVPexYS5N>xwJ;Z?NnAP?n+eAd(Pf4<$)aUJsFe}htUh*tRHlyuESMBRtDq2K zEu=13z}`yJw@fKN>SO?CpE7Zw4Y!PJNpeUfRf!%F+(xmLmJf9%{=QmBBr(zO*JO#4 zgDBt%EUsZr;q0YI8O;cHngpkiQ8m8}Xgr3XzO(_h#+$>(X0EIdt{c8iYgH@KxllPP zP7tW>0;_C`E_+q;rLFv0T)hH1lpvnORxA<2iPp0G9JBD2U}v%as{0NO`L^ej1{=EX ze)ejpm68T|6Bu^9pw13pyoT__p~f!x(eRCyHo#aUj(He-znfvG`@YM0^z%>{u{-$? zt7#n9^`n05F4(VblFak^9w`SW?oKS4Ox<;ke|k)NK3Q!DKcAiOo7*DA(!v$;@upwP zoGB6gJK&~DS5@t;LEC;tiUTp#`|T+XyN z>OUiTS;!kgdG1GijrZ#31d-3a$a!-jc^^lNU5d%`$i{baBv^hzJKHmIsxPqgN8T4X zb`Cz5RlXmx5PBJ1KGzBe1_}pFd-1-qoR$kNw|z@uzkUvWG1U7x{B_R#Zk%!M)1teo z_;^_SXVFDVIQl<*hU)kk*8dCD2`0R~oaQG4T%VNBeOh#+3cjXo|17#E&+fnfh3ckW z|1Dg?C5nUa3jRU6n&CM+*ngqA_0pfh|3Y>9_;6MO2%n)kvlOC#p*lDQrvTzlXg3l$ z@Gn&Nn-=eL;ZpP+BTAY1bK!EpvSMKSbK!D(_tPBtgm%gvdn(|tk)I2fPcz1nfFjhs ze3;Kzrk$x8p9y+>)Cir8bFAKV5!MfwQKlH@I5WCpoVln`wkqduc6P;hdoW{Mlg{yO zHN^x!qsI6yofG`7i@$W!x-#a3=xH+=*R0P_9cw=9jFpUQ_Hs=b zd;b3^9-cS=@IOco671;}0K5lN3L**yfTPjWG$#NC0^vzz)S4Z?4u5)h5n%g@{|o8$ zj4%uRLwbb7*g-YxBEj3yHkRCbX|3Z2tVI=yKzriE}9EQRMyzd*$4b}e`>>?zTPPOHVb_4g53(l8rzK2N6yy2g8IFr{` zP`(3h`fFW1!HN2Ve(v=nB53`|FcjSSbBWVl+09M0J5UV5>>oTl>wt#WslD#uE!$lj zLgO50WYauyVfQs;gzXQyJE#Py8!Q!!v~+A-NumP+Ucf-F?nX*3_DK@`!cWU>dm(Qx zSO!7(Ez67UfA3uPz0{mah(hs40YRY)U{N8$3hkn-3b=O*xfg8y;7M61JK z>aO8jj8%e9(9SSSRqRMoW`rMuM88IYeqy~A6u|~gO%5r7WG$46m)W8h^XDbB6!rb3 zBFOSm-kJhReNxK|);tH}Dq(NLow)BpTL>l6ipIEq3o^tAFk z#TRak5)x9rqS%8xVuAoQGTJ)WCe{O2IGbhD)er`FXjN4r&A=_jzvg{e1yjHSvoGo# zGEWv`>=0>MBmwbwSx-28NmP(+Gr#7&@tR`W2uee}P!$jxiQfZ+-NQqGP zYm^`Rw$YCJeWxhgok6digC|)lRC?*o7KjgEL8~3bTZS7(IOjEJkC??~t@(&}b9X?D zCjVUp&qJUz@h_JE-M}cZr?G4aM#(`ZhP0m5F6zg`r2RN${m1<@CF460GY4YZA_zs$ zLO5T$dFOSj)bb1fN?#X!cv#SCXr_F_fbkieSzL*o$!QLjP>xEMYb4`abJ< zoDS@FssWVWl|O^-k`gd4Q3S!boB;8z1;C_HC@2>B5ah6Z2zqb*k7ero;YQZGCn$)u{ZV9%}wj6iX%erP=Kh#bhPx}u0 zF~Q}b0uMyt;M_rRz{FoDrYdC}$0Bn{6+0xwREUQ|`z8{Red{?H=i>v5p75_B?ZX1=%5z5v=_FHl1i&bs0PFD+H+x8dp^+ zxLeF|HqGwp6V434s3X_{Pkh8slT=947F7ZOn@pR^QWr|uVD*EN|J!NA792-XTj3`-27X-PTI%^vjWYDUgFn+pSdJyh6PdM?=Kly&C$uSVBHrZb^IGjahWo8&jw<>HArU zV+&EiBr4cZl1YsfB$ABr{Cq#$Y5@sVjj=zg)|Wi@@^Ad-rdYP6`QVRIcCCtYWNNsb zG;(0)(x{p=7|WB5Qtp-zyAqOMT9XoOJSn|Z=HBz0fwOJU9Hn;JYZBUOG|seFH2VI# z;}bjn5y3V?d!&l!>`kD&Z+2s_$bZ#Z=Ow7x+KGH_3|+Q#GXr9~Qy(3W-D31fh&_PE z^z}6jUb=#n_F%oH3>gtI#rv?F79KmZ%I#_?H8*A==EqtWmuUPWq5| zLfua>Hzve#AyBlLgKfzTq1u_U(aaHG{Ua-XkkI&EP&FlcyY&JYOAJ#~Ec&LU%T$@x zf~1rYQCmx|y=_YlMs76<_&I98t*?yI6>(L)cYMsP+H zO6}Yzc}pRMliz9@KcHbRF|;*!Iaag&JRIR>de014H!JMpe!2HE^sa~OcrKyA1@CbhWvaQu&u3fuwzQD+fZ#%B z797&$(6jNdBv4Qa@#rawc(AyOq}sHUb|Zj6gD9eOl6Y@+ruBAMAM{6U|B9dk*-@Ys zEMhy^WF{Thu*N+;{+yCN+^G( z{G!HH$Pob@9~sTy=@HSF&uHCl+OI?1foZ78iIr+=L0CR6`kz;miuS#0iFhODD!){f zOQyS4A5suNM95FdN1{@}HJkc_Qk(Fo)@QBhq^3s_KfrArNkz;_m(P#~`YMQTS{r%WscX;Didh zkM4(>z*e7<(iHuSAeng^s_zq7Z@y3h1E#YkqpaMU?c6P-VnVfQi^NntEBxf{ugf>; zzk2MYpB|o|`iErsRog+pho$u2a#;vg7R+bE?~R_wXIKFlZrh^{>Z>T$$7bWf9LWH! zYfT8q7d&7GHNiO^6h_ETO)g?8j%H!^r*z|fPFb>-;OA#|8FY54Cn;t&9jQSDCT!vc zOzM(y2|H7?78bj24Sw?(P%Eo`xK5TZ=zaq#k}}vrtY=|0P~ogF;St8+l>K4FZvHds zM47FgbQUyzrQpf~ype6RMCt5RuFi?bW_TSmtXQs!l%({Mffr(t1ncfy?cNq#t~RYM zwBr<%<7UuNhWaYb!|sHGrTQ0Z%osyKL=kd#rEW>{rfM&A7Li&dtCHO5(TeL~rD{RS zASxnAm>AubXnLinSWWOo4WG((+KEHaBs2;%QIdyJx=H6yMHAm|E@75Ikt+}2a-2Mr znlb88Lj6{>!eMcRUP9;;aeA$$i|sZLmd?`{wmo9>5Txo*5>{smhD#Wc)8sp5B zbSuW=VAup&PvXK!W2p86&pX2JrNIBT$4^*EhK4CJrO@&!JLkE7+cXxgMo~c@)aHOn zJcbeH*GSL^b9{pV|2a-EIUeADPK2GFWG4Y^J&AgON5vml5{YwSs zq=^8!fS&*o<4Q#6%LP;|d(r`#7g=J8vzG2rXdrSHxX4Bd-$l}g7CsfYiM$CB1;`Zl zp%74}8liH*M6OJNykNp1%}5aDh!`DMZyw+OD{bB?>BhcUryH`+fOU6^dLsg=4Q$UW@ve4`LIYkk6Boj z0Rz-KL!*%c5xvbWA9CQ41H-lXUfMF_Dg{QYrEgxc6R3%#D01PHg1l4IK*(xrQ6|jR zU(X(+oR0;oj3uhb^Navmj?t2nS=_=N-$je#X1&vSUvt^#b*46$FJN=;KseyPNK}%G z$y|aR)U@%jt&BD&SpTjVUY6$`YXkc>fVf)O!pn*7=U>HLU9PpcP+?i7JPV_7at9-w ziWZZ9{bs%A2&94HbvL)$=&*Hg_kxd+#JNnoP|bh9GNWoucV6Y==_=;ya`^_CBRfRsu39ELU8nqUztsla+oat=c!|{5fVm-a$<~4RNIUnOmVjz_aa|i>QIsjr&NRi#)1N1wu(gemD%e^AI zs;aB1CZ-C_tU@eHV7wE|e*>)M+>x%>E8d1-inAIQIqxZ1Z*wV#6V(>%Eqm5oZ(M|X zWT`X+Pzl>A#nRvxM3dHZ3D(}_$XQkWZo$y{2E?mMAC1xBTr@m7_0K}HtJlbCd-b-3 zsrKrxWrQr_8%;ZMuYJre6Lu?pqY+yqOOMj7w9D4o1WS~}$^fX=R*<`a4oUfn8{kvR zes>A7P8xA)lm4kHv(0XdiEd2wss9E+D>lZt4nvs->m()`OxEn9F9N#}qk+~<{elaT zNkxP&oB8h5?3-L7bQvsqS6gzQtoW7?tirC}6uWhx<{NEv4~o$MtT&TzLF8dI$W}B9 zq%~{Ml1lSvAo~JT-*s^$o$W?A`!2zROZojqxFJ#-nQ6iFcp)^{ljdXW9bcQ=@Q8u5 z5X)Vx!7j`|l{Rn_YNTHZxlHX=BZW_&-EF*fn$*^q*xGnqZLjwZk^TlykamGu8%f~h_@Hd2T>w-cpoa#dtl0VLJ1*dy|vR~S7IKgN5#Eju59>f$c zi3Ap3ZnkSrcTmo-p{z-Cs*_(54|wlevx!`z*>>AsSxfTsF<sG7 zuyk89=EOoF`E?DpD4WKwu?900vAH$Gc^?zsLHLsee3M0blb^QzVf#c`&t%E=WX;E9 zLEPlSB2|PRmIsGU+i#mD4-Url*xGFD3=C_j$Lq|F#`QPCYAL+zfT`6?{{8 z?s)4~1k6jSlo8jPi%R9bu+H<$KK|@skGlvNn<->}-TL$opZt?3v({~3W<`T3Mmi=$ zEC^K(!D`6CQ&V^Rgx9|Pr!00BwR;jL*U|0Z$XR4O#D@FTT+ zy+52Om;AbBnyjV|0wG&7Hf)LyE!KuMgEb;e#a0)*Q8~%!8;Xf;4=h(qNZeZ)63-$B z{HUeVEbAXEN_n#^e1Yl|{{}AVdlIg35QOt&mCt5Sap;Q9&ujOVxI!SJI5gtS(zcyc zjIuzH38SmqT^n%Jj5N#Hd<)QeMl~|he=suIeXe%Y}$l}>ozQT+$2v!gL>rOih1Lw2WLb*lJOT{VF)9wpy zI&Sc9oXi?bYIN&-d0@Voz)0(f{+*>Iekc{honiuRg=pHALsp9Jf*9A9gU-&G#L>F$ z5~<3q71T^Y#N~}%lxu(BntcQdXnF_P-@K_7jeZInJ2WEZ58Ua@g3@!!9Np)ya`z#s z+0tqML3=-tS>+MZ+^s4N5Sh$W$pe-}1e`>Ch--!G8z!EhAU24H`MsBdGA|o<2+hv6 zp5sqJSqq?3+rn;Y$>BfiIqy@07Yqe$RU(Kbi41K716q?cg6wafRe~# zAK7?EY(ZSqsc;dz&BVGO=FL9T6u{%F3e>;d{TiTTG;DkSsA1AJTpj9@hmlA@a$MWL zVb3aK&#QityRR(}c)C_T+x^|&g zsg4+Wa{#Q{9Dl|N;gXF4b(z}a6-Q_<23Ew-%m)|t3RY!E{20X?@G#gyAos^gvx@6BAXxORw6`Vb?5q!`n^oJ({G7&B&a^wUdn zJIVyCgzd--qsjDt524pG&WE|AdATX4(mq1!^$?3pej=mq&QA(k&KCPRu&e1XXdgXJ zUSmS!M0i#eeNi<0y_N0MB;GGn{cZ-4-3Prn^<(#V;f}8Ot|XrKon=IRFv^#51fg^L zUGa z^H)D#+bOP9f=PxCs1tvtZdYy8Dq<7a(y5@ExG!>AhbTdN-RJ;j&x8uHdXh4j*TF6uM~IPzh(Pj&BzZx+{0 z1jlT8g?^v0RJb8ncqR3+ZM(&2?L`$@J_7&JX7I&1SXf@xBf0(+G4<(&kjw+Y1WQXW zWYNBJ@LANCnsd06_t}u1Mn~44M`R7i=mn7^Vid%%ii^u=S2*wy1$~DI9Q|XcV>14dQ|*Y32!SZ&;rJ zkFxzy@ifd;axAArbq#n*b*OThtL*9%=+d?4EAmI{nB1BVQXU!W-)q-=f0VoYL~qW$ z^$W9VTV@c6|MZ&D|D9hGdY0LLi_x&XlGSb9r@)A~9K(1Vm6Sl}3WlgpqP4umW)0h$ z#Q^b*H;8wHtdraZNjQUv#ggM&$Y~;Ic2kXd^k$P-!qxI>DB(VsU(3+zu@&VuJ~Njq zVBm3oS9%%BnUg^CgkoY-Bbm?TPw_}>Mf;*sP97rxDV;n$!|3$1FCFbtMo(k$5gt}5 z8PDrmUDxHWn{)|Z5u82g9{kIuu$$z3aAyiDY_B2+=!=ceE}YHd1D>9zT5llL(7xI; zLCKLWq%Mo*J8SjKa3~%Tj({z%MWvolDck%PMyPdZDW4P~)RbcntCe$an0g2=Ez8Kd z9AK%=>wP${ru@~|09X91TJlxr4?>W?lTEHyuWEFU0wnnst%jD6?GaF# z>)mf?i)U^@D>uT|ol%3GJzdZYM_ynPvzV?w>Ps^L-KqV6kw#)t`J7|z?~vROTvWGw zaj?yKV`!k<$b#nt#;I}edQ#NB$73OOQZ$|hRJa-SFK|7X6ZZ62f##29acmj~sS+aM z^oLDXSi~U{4wjHL0ujX!Xz`RK1SWD%4TY4_kct{IRKBX?s4N}xL~$r*ll^AxBnJ{# zGY*Cj7efOL2&a8kQ5ww?PW{C-N_MSVZQX+9k4j>KKUQh6{4GJ|yL={A$||^=z0sA_ zfa}PL0Os`xz;|5%7R$0K7^W)Ja+E3}bnhx1o3h4Inc=Fk&2*VC&spJ685@wkaRk9F znCM)l{ccQ6`D$a883Ik$=6J!h4GcZWA_cr~TFX7BeYKaw)dYAR8jl{@XqTQh=xT-H5W}dMJt%K&SzY%v@yPxOoieU&l5poQJ zOqh!pb8MB$d5i`jYCcK}^_tO|&yBaPf~20W2mpa~{cE7EYx;hY0fg!bd9&n9lz5OtU0&O3R2i}Ocmsh#0#j?n}7NxslY30n0e)KfpzGm>5iLFi-tHoYZ0nI;d zSe4g4jajt+VV-{({6u=m!%p@8ke=sW0I0XU*9@rOb?^`A9X^5%`Tz6qxOt2u6}(+c zLK8htvOlAB{5s1GlaYA|b#eP8`SEY32{DA1IOL^B-NJGIqIE&6JoF=a>$C4fW&fge z!m4pg!#)iRe)kA^2J%Off?xQJ^Fwd_em8&|{zH1boBxCK67tWl{~N}umb&Z_?s z_;Ek?BmVXGUP9pCUxD?3pueE6{C~lmK8G>)FE%NQE^$7ib#_M65a<0cGEO0up+u0M z!S{GN)8}o_u6p(oeREp4!@-u(P4*}*_fwy(=Lf56T<#kl4k)0K12MbElbx#nHlmGkbw z&Uqy>fB}eKAz&c@&;UBX=O+b30s{a+UR~RNnI@&Hd%3P=xCqXIFPmZ{Lspfx)5SkbJXLoP^;PB}9ztj#{-`Euv0{poChjS)|Y%K)_r6y)p!5qRJnbdbQckP`MZ;yJk92Yofe7 zrQ2T5k@oSDzK*qCwKp_8ts<2jV*8^YiWCbdGk+J`9ZYVES=MY5?~~3M+XmT@zrRqi z0=Apc<<8qus6X|$Eu-4LE=K?O`^**w01PSw{;Pvg{{>nYipn;8SG%jyk7!veh5|_8 zP>5z;Iw7K`ho4D7ieCeB#fGxNy3wAH`g%zKz|n;Iy0zcaK6Fc49&?5&pR(f-V*f4_ zt$O$t7}QC-K_CLp{nwx+#0ue%Z4?V!K?t|@9CWMFmHkK#0HDwfoFkoB5W6YWIO2q# zcu5#FgsRw^R0hiwN~g5_Fy>?1YFI9DhRO{7%PO{Bw4n1Cs%NkYbFnEVq0I1uFP~vTwLK8S%=cYXhp)pG&yXgh_d2uPuxZPGtyN;qI4RQ zEAd%2F+~ZcAv9N&iI|oN;bnwMxUm@OUM6+KK3rD~gi&yX{0Zcf0}>!#SQ(VWd{kO` ztkFqL5`cQE&4A38KM&W!8w#{_7}Gi$wSJ(Qr!!M?h9H|Jw|H7dvfj5wErl>|S(lm1f(jiAl0A;c ztrsq%lf_tCK<@oG)0ETawJ&W0?iAlC*2Apq^yktfaJZcb4$9c$qJ9$`ET@D8cBObZv{nBbmYet{68j!-(4{@CvM`*Aoyw~cBjQM|&cUMhq@Nv8E1A*Wz z?oiy_t+=~86nA%bcX!v|?oyz*757pciWir**}0#!W}U91J+o)_i%4dY>;L)w)I|{H z21agCtcjmOv0vTy0C7L~yl5%9k9LMyb4GEO%LQGT0yF6*-w!54e=W$MbYO(Qg-Q=2 zy@h+5$Lzr&sEV~4r8p@ql)&*%iXrVfp;1(rAbqwOM8%d9y{*Z5exeo*j=2#yRogUo zf*SxaO*$Z4u9W4_#-4HA#%T75i-mL!VYuFk5;%OpB7cxP4K$4vt6Rl_u;;)tDPxFg z^)I`a_%!C3UU*ikW0Y=1(lH7H*brI>#NC!9n5G&vrb6fOQYR+}*60ELD->IzlR)^p z7QXQQ183OSCP}y9lt7Q8pV|o0oQ+^3Q36sahj9|+js?XEff6)c`iUbk6OGCXO!8ON z6p3CAan+C`#$>7~hDo<9m7Ng^YkHAk)BUWb*-E%kApKvAb4@%q*(fHnYR;=8#dpEI z24bFG-V=7*@I&ac5d8F?w(g!z_36A{>A$*glm;FVD>EBO&U)ZZ_-?MGeX{i_B(=1U z(db?M`VvM<45F5=|3zec)Sb^ZAntj+g30S?G8&PzSnyy|E%6h2toH|-dj7rnspKbt zuJ{p5{(S@UuhUP`G-#?i{pZte3DtGTT67t%z3}3^$fc3HC8b=<)`--3%L&(9)uUqh zIX?0lhb9<7_e{98bl3|zmTpeoM;2(Q9rT{16JOfiv7wJIHA>QGkwPA7fs6w9$uuk3 z@-~&a;qq%35uOc=75NH++G!UK%<^$a3SU!VnH7EKcsAU0w}`VEHVi$njUq2x90bCB z7_|A&Ex~%c)4GIwPc6b%TNa-bq*}PqoP>H6X4o|GA)lo!m1|3Dce2uf?Z3a+>uXss zrs~cUmb9|@)HxonuiamHc@8`R)cB#QZ{?{=iOXsTkX5)3c|CVQrYJV^pc2-iziij~hw~lyNWt4}M0oAnhsSqK?a5B$ryB=nAko#K z$UnYKUOU7M{>p=7_#>5JJw;9)fv+v*uJFc;o6+k z{ZErX^7zMZ<7M22-IPtW)Bl~5-bBkOjId&p?vrFQzu1T*z8Zs5-J?^?1d z^Cb!t6QmFI2BM73a1Hj+R=s2t6hfACAEOq|+uQn7l}NNWho<5zTP^j_q#JKLeM`50 z8?h^y5Yfaht`B^ynLor;q?|P?`};FU;X>ThcWza_qN8Y;(eZN~;dgKrH=4;`U5!KV zmcE}}l2t1e#Hh8$<#HpJt-br9*<)NVj9x+it!2H?#)Je=*tIBXht$@UBLA)klGCL%Vh#U{OaC*gO7??-H#I*epkr2U=L3UGCt3PpC zXZ|j$FQ79Kt=k7-J}e!mzmH=5;%I5&UWmmq9SR9^O^!k93;D4f71$t~aW+>&PwmHQ z06m|f+hM}1qk-PM%SpJiJyD|M62XCBi0Vfw@*G$gdo)7mR!yeyuJeyvtFa^%DM$1&R?0f z8(#RH;>xq1R~=lb5qi!{W=S}1D0K$+e9i)d?Tp}?5e^^oInF4TcHj_isPCsT0(e~@(fGrirsDaR$+>gK%2#eFC$1D4DFlx#$X>~k?qc{h0Tq0Dgx@?nTIH!_LmJw` zM4quqo}JIJ!Xw(lK5m5lgbNH1_Y7aMTp44CXeY!K$JiSo%&Q`!4i%={fZxOmv4VcW zqIq4a!?D67)pVIOy5&{DBHCbBgBW6<4JCf3=4=Lq;wp(Ig5^&wZp?Kn$6n=egHO>*vRo$sM}srL-!+_)mJZbPikE^Is_=?QwGJ)EQxX-S}aVm)lc$(ViNYelc`NY zZt3E3d87C=aE!xDHWu-fSA!M~?5(^wMX-^sHb5IM$^SV%e38c&8q{{@P#dbZ7-Ay& z5PUg{eVJ6PxfeN5f2guKZd2XwYXJUU1!YpxG491@TXW< zae~AX9pHX7Ki*`N-H}ZVM3M^uhy%06M)PRL)~bWP8H-8a()bkoDJs#3K%{CdRT(?$ z7E9F77f3yse(b}g(qhOTN`(J{6-|jR4)#$G)7L>j@|Xl!=xI=uTL4pH@Z~s;d2^)o z7%#f<<#{rc$g@IyCG)=7Lf^kOVHq~7B}I9^9AB0vY+3s|r;Z?$$lPFu<-6=!mT)bR8ceP^=xh~h?HT8{sp)p#-M_W(?eleqHOm}2rgVkpq zzj9teFTAI0znF62w{jOuuc*5+;i2+1w=f!b%3mjm5cP!1DVAze+Blk$O7SG&cA==- zBmy}W|nOI%fiyaaumVmu~WrH79a zDCxD-c?Kq|F&c4WOT%DGKwr)=F4y^L+Kw|1+$dkFPX(8vAJd&hLf7lVRMsf}O@tfQ zq-o8TXUgTKm-Tk4iG&9HH?C=AzZttu)v6Z!XR84+ZKVXO|Fjr?b<8w*&%QTZpQPHL zpsj|5q9=jg!=NXw|kHDc;zzj_NFSPr-0#th8hjNPqnKR7Cfu(^Xhg$c;fAL~Q(G2FZ$y<-wP z;l@ly>C|Ljtm^)(Qy!}iPqe!|ueX*_r2ayZJ%#r&w4-&VC&h-IU!A>+&z2sNSAD%6 z94tEM5?N}X(CgI)GpS%R;Xf!Q)vxML5R1?^{9bWUO6ina|FB@Q&Rx=?-oB^RWOfX` z+Z;*&4hEPFg<1`Q95fafz1uuTM5FOGJ)PXkzRKn@Z*Eh3wC*hYgU}C1ZGaaR9?YULH|_I&Qu8`U@D9eM(=s5 zig+3vFkOo}U4Cg2T+fw}Ah^GzbK9y2U)uxJCcyJnUl_*8S+|~6=(uZdNtAC&$!(wg zRTgSk(R8Ve%O}IHO;5->Z0|L`R)9?J;kDI2x6?oO)iBTBVRUPAR*-Q@uFfL509Z)Z za8%%okghNB+*Zid`~XN&aUCC)K~udymtpu)j42(gWeh{7hw zi`N_7o8PR3F&3DBoRI-_7&m(54}>#^O)kt;{Uex8_*{ z7TiFqQg#+@sPblNWbJhn>C!6?1nFg&iU>VuKC{D+>ScYQdx-nNLepzE=MG=pN8eV>i) zd^BSYP3b+k*(-R0dcvoEP0(ohWnx)YuZj_n^y1L$x;0JFi$fRbL05%_^kcDh&N}(W z_nwB?zCh47xje6is+WF6=Exu_wOIaUb4_11Cq*7b1)LTg(I6yotH*N|(U)8i-Z|$arUaMC zeUv|Cc+$EK^`da_Nr`F-IsnrDWKzu-N-PmUnokyp_!t%BYPacj>MbJav3vJ(o2?=8 z@2(r3i(Uf9o5TLdir!Y(N9*B6D3d+##-L zxfp#S97&pc;t}=W9`a>k_9TCQJ&~SO~O058H&DK?Angc5#Z%a=9E5*6F%`=A|-@D@X5n{N&RaH)EvRtKcvR!CU@H{W$ z^HNQA_Jv8?$n3YCiIU3CB}}L3)tl43LiA-yQpGA*MUEs>iGKxnfn$m6M+jeiuNv^s zRRn zxcl|t7tf6qr^-({baPdV=##7pzLSm{juItEy=6$|Cd;=a!xQx2(AyL@Q_Xtif4M53 ze~LEgH;B1EmS)`vH(f8CKJvJ0Hb(r$C~0lz^5SE?3H+=&@J&BrqO`xYtK&l@eL#Nq zZjDt!PetVT#wc~$HkJ>6vdQnPJH2aKG4q#u1RFi7eiyo0bT)-?buZo!(~1@qA@sAF4(NAO zC{3f**?s-0_D$s`*0CF)-E0pqG?)AT6Z~Xi6?J6n_|2BrHC+3^+T`V?7ZV0FpoezM$ zeohV;#6`5YEEnKm9YS?5NBsb3Jcj4-r=9FT?tCraq~?>=)kS0jRGwi?9d^~8e79(JN$@ix{fX?4a#4;Wka#9w9c-K?0~PUex~l?jv7br z?#!Ovxn$C{^Xq|Qc5DcHQ^W`?#I8kKLVHCs9%lZKVKo132n9xwmL?d!MWE{RsgGI> z{?FERiF_^(%ujUm4wh1JtJ8%_h{VQdDW4|_k$i@j(|%{X4A?ec;`jap@;g;KmOE=D z5!(mcl8W*Yr3T?1#Hv(I1>79tE98VfNL*&JROrzjgoO0w3xL=ZGbVwhG7Ze@ES|zz zaa&cCTR#@`jSp+2AWxeg7YEYXTcJ9==To647i&EpJ!Tzh9a~0Hq^A^H{uHb~zJ@3u zg5N+nkxK8Pj34?p`fu9GwJ5*PA+QY1nH~ehQ&a#fj2X*?~ zgT{?Bk$6;R#Q1DLPh#`ikjz4Uqw($HnZR0)@|Ez*Xy)zU@J*UU2O!9&*vVqxQA+3^ z@k)t{d&J`Q=Pz@=rP=MMCrvf~5@g8-~BBSh?b_IGK*&wxLZhMD&su#QHjGk_CZeBm;-19MO*Sh)i;VW z?fw#CAlqt0Jd5yH2SO?=DbgvnoP5Orjr&uj6aY@Sts+oIee*Oh*tp!XgjU&hI-3O9 zHj>q1t&NPsQI#i!fO~D--r;TtjD`hOw9cBxqGHTo+tPsq%UhJKH$T!CsdTH9aK@Y86*MYm-)vx1(Dl^|h=M zIqP*Onp;w}>BdJy5+fbel_g;N+^A!v5}IM*G(bGchuu9NV`BnmkaNz=1B-5cQ(F%z z*cy7kolP!6q&1}d2KjJ%i=>Y^dkbP|Se$V+w#3k2PLe8couW!4LK@R&Fib`JONa^@ zV))+Ap|BnG9uE*$7HXU4$!BV)=eRfI92cEncv#?icX(JNxCO1VIJIjeFKheX8WZcc zjds8q2M3yOm?fiOPgC^whi>THlss(-q+Ic=nNIu-UH`N37v;a*FMNjg9?fSj>?3sd z+rNA7+K+><&ifoDi8vu1q^Lj-;?=-e_@2P$I|8=yf0@%U<^S$z0v8qkPV=fd@C=p_K0=`M-mBH_5{P{y?CVkMw&m zEEAOSz4W}0|F`>*9U}g(-H+yf?|$P`|7-V?#e)xXiJ)RKoe3io`H%83?T{iHAb!K2 zRy9A*FGX`kl)yNEQa&nj1b@U)GLDol;!I^2M06DDB(AZF^~Kdc?S}ek>!3m@AD#5)Uk-@^_Y{QxAESK#*WK^O|6i=%{lnuV03IF& z@bvdz&>JlJ#&c7Nm;lTjHL6Qc19E^Z_ z$uyj5MGyu6QNRvzZ6~N1td8e9n+IisxkBOp-Q1(Ai5E>|FnZfNQmIlcA7o15sMV^( zLpo!0>9AjnG5)qC$ACTs zj4Z36sHEG?-Ws7|zgIrJ(Q<6c0e>Bc;dX!gy%Wyq5w+K&C#FKF?nAauhrI_m`!r9! z-{}5&w@AHrOxt(RFy@gT~8&jS}hlW=wo}Ytqq7OG;qZ#K( z*?)>I9`w{@!nMtMrZ$)@p4JpdpYbT7IhSu!0RCQXwVwp}hWk56VHMcRCJ zvRa9f8QI1OqP2kiguzU3SQ1iEG)eO3qU>E$MG(CuPy!Qb{czwsj73{beSy&*@Fzth zjg{#wGdT%u!;BG&B#Xr@mjJo4IGVKSxjs%ICkd`Rs{7iTxz(n{9FvlIA&3k)r)Ajs zdQ_z-qMc@5Y`=0;u=s4PLsjxP>R&lfanjmbEeFNesqu^p%7mufOV21?)s)!Lejp zajZxYONGj3@E1+w5rpI-`b)W?fqz7+7P27j;>ee6@`&%ov5t3J3_%DCsym{tdMH<2 z8Vk6g?Kg?jwMB-)zUPf1VHek!${lqL^>(Ba6-FYF7UZFL+UJ*jfIihC!=o^SU-`&) zGtMR6@Rzq3ddzSP1CZ&8+X}q-se^CCSoyvp)bH1J@9i$YvB|;sf7bbZd7_dW&xJtc1|{KF}ahwRMV`l8S0;Wj)$SX7G?QJp&`M2{<#7LRF zU9MkgTg4}AyH(^h33^o{T{Ub<`|TMfkn>0Jod5iu#QQElF859&D!co)y0=tbzqed( z-1g!Po&_^$qXV7=)SJZHWH`gM@py zO)nw_hFA@&%UYC@-^`EvpV z`soY!1H5R`X?__VKvw4SwJWdBL&2x6p$YyE>ahOERENDbf&*hGlCPWje=e!BzsWX! z2`~Uu_w!acDcL0Ebt96<(38_)r)5alkwLBBG!5pR6Xfi$fjth<0Z2-iMB%Yy=ZXNu=Letx;)X&3{Dd%|S!MIhZArp;1 znCtmbOUd4&`Hi}LFe6_O3^w_e4mZZqS+&e{X}0*JB@*SLbjx7Om4eSFwhFm77^=q<+R2dDsb&eNshP73IRHVh`RCzt_Aov=lytje%5eMgmP7 zom%>8P^-D?1;EW=D3d@E!3{Uz>#KV&VCmCShdP1Whp%3leY3ljd<6{Gi3YO8f48Wc zoDVRqBJCwS_LC;eZHmGwW2|Z#H$_DME#?2jvL?p&ZISGRaX3}12n;~8CTUhsjc)ruF^Jw|9^F`FC&_Y)f=53M^<<{^tDs8hhpMuAh-*9j}<3QnfsFj4)!DQxr>n zi6!Yw`mBN*gSEt6T0S)2$y+NbRb&v%`LH)g-#u*V1jt2+Ij*Hy38A3qV3An$x`h}m zBwlHh@K}Bvwf@KSJ&k)S($`Q_4QCXr5Eunl-V{JIOEw>l4AWMC-^@j24&e$}v+V*%mcLc!>!t;&E z)0|#;aM|;qZHi6+T`qpLT^%$T`y!rEhc+0Vo!oD{Rvp1VFs$}8`q13uP)Cm`TPu`t z0M~y}FmIBGsFrb9nJGJ)T^TC%E6VVTG4NQr26CMZg|}J2kOwDestljy;s;h-5yY_E zQ2fqM4*mU?^Lo8k7r%7-9X&l*@zX`Z0`}i*{>qkJgmJj8WvYNr01>78wSCA#Y(^mF z&X>5?Q{Q)9%D<;vf!HBR>>-SgZlYXjpG-V~53D7tvT@_?tP)-V9!@J*R?~~pu3CcJ zCx`;t!NMgWI-Vjlx-3j7Ve}CpvfsigM?)N;VED64$J4%Lq8482f1vTto!~}}NMj1u; zE~x2U!eW0u^msSZ`PZe=zUWf3+=41JNN~^jY`>RFGU&!NeGX2rAc(%YBl7 z600_kILG^F?aA=HgcP&1K|%`WLB;V*9DD4qy;mcK=nqRg`+S+;{5pFcik+$SES zS-wbf7i(|~KL$APtUU3bPCVU0_}z=+A6eMXy2+oQW{T!hRT%H6xb#Js8Ql=~&>3ZR zClzzK8S+7lCwj8eUSd2I(EBMlF)g`|J2;Sr;x)$cOd?#kDjBdD!v9TNxf=6v%#a!+ z@K&Y|Bkhf#9&sE^KAj_p21@&4VgYB%7-O9%6PtE=$iz>VK?7OHkj;(cHc7G1Oi5n~ zrRFsJ_l)iEpFB07t=Bnw2B$&(W9I+EoY8xz_RmEq>F zC#{12i*^v72CjuJS{I`Y#uFHJj*l*hQQ}^BeF;bK(1Jnuq#D2zllY}f%!O4gsEl-+z2kqw;3v6o1N7@oa}Ei9dz=_~yGmoF?;Kx_?HPP*xwZ*u3bt-d<< z7|6&tS4(h&aR!v-R92uHl7IQ?T%=K$@S;I>o7#_*{Rp8KU7Grw^cwlQ$N5FCI1DqZ z#8Ul?AZK(@EI8UJq9)V4of45I%_gPbGg}zhZL}jOlpPUPE-U~1$eh#G~y zmg=ogB;==v77(%vmLo`@S`8KJV!5=?7UnP!_a>9)7N5fAe0D)oZLPg5Nj zDzOiX-3V*o`D>DEX|wJ4VQQ5#`RK$q;w|oVK0ywBIk@;UIEgbKs-r@Db=PYf-)fr) z>l&uT5_@5px{FC&a=I*QJl|lfavXbn>%@i%hjq;ysOj5aJkl-rNzW?#UpW1L)7;2$ z4iPGI424Zk>GOHT1MuvK>8lmX>b&HOAE&q{h80xGNm6-gW3`;S#a%JOEt8@Vzao2E z_lj50!PyGvhH5vho;38ol@qCEz1fw)+8MEkM`%aYeFR5XseM}GP`O2Pf0nOKf~`it z$>79m)`qQqpKd{+AjJP9j*Y?n|MFaQBz(=;- zlG)n^2X1Q}Y3|voJ6|a|RZCUQ_GrREhk>loK$}mO`%ReA#FBMB4{342j8dQTJ6y(L z>K}{f!Q~-6HuN)w6E#2&>raJaiq`&!JnyzR_LN%hz)-CWkgp4=K-(YOT*6yu=(EB5 zRj}7g@ShoGN{f!+6it>(*H3Dm3_>_h1#v?na$mt7p0kc*6u4A-3RA9#u`!9@a;NBg z_OUc1KS8~4e5PE5F87(@th%tiw_f^)9>o<;MSGZ__wYEHh)NCr

E8HOm_i-EwbU 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ϐ;4>qXiu`Q z_z=3y>kPu!!fRpB>_@b%cYa38gr#i%0Cmn`6b#?s|Ft$hcKI0owKm}f|LyW|RDVPI ze*|?N|Nk3x8I1qiv@QQ{Nn9k!e@I-^$liZQ9D3jTkN>nSedO|mUIm16r<{C57X3hS zIt+8IOkc~mjZS~R9@80p52i%Y$lxLp~1xYqE=`Z|%Nw`-;%WiC z6_iBlLwu^Pl2!J&Y$2eqGmO%jUI!{I6uxd}t!2m!D@QUF)P#NF*c7RViMgolxZl|Y zTchy2mV@mE4zs+JTBIDhq44*zObdl#wz{r7TMWZxd^s@&p|vgtqWo)O342MyB2a=B zz%mWP6ionPC_FQ6HYG;F0^>UQ3|yiDoCF{WQ$sTp5Z+=s^5XS=QqQT7on!hbx( z9M&V_6E<6^E0o^^-wS$tU33!6IZUBhP@@$ilX-2ndh(6Ei-b6B$^~jWjj#8Lw_Jc1 ze*|V9)PfVf>evtP75sF)Z-^JGlFPHy70X?i7H#wL+bv%AW#%F~MC#Hu3VSE0Tep)A zLjrFc#@{GcLz?=%QXVDaTQWkU*S$vSVf6AQj*-a1+*b@Ljk;4o3{XIt@g(kqZe=Agz&lz3^ zEi6W87>T88;5pQr|H-TCxw}=WX;UtE89cKbqk%1>Kcl?F-7);(tk8vT+)4M7?n!?F zLgoXwc!KxsokOXU4O`^zL_d3?gps<7!^o}mqes-q*=X;<>OJ?HI@Cdkos%5b!;~le zkqT_t*M~I7Ac^dz{vx42pS*BHiwXha!HnBadMqQmUH=?JNU)9be(EI|Zjl^qxV!&n z0iy@sQ8Z55|680Y7WuQu5wT8_^4-obQU0Nvnyan8g}hl=|6DDFSy~~9=;6>dR0>Fk zfdZL|M}{o@=O;~m^S@~8&{D`LDb<7fW7i(|s{$0}I2~Ug6QQ^&oh_BGnq(vv*a-Db zi<0Zru`n2LnLeOc z-0fP6&(gAjazzcRhZYzY)|0X9!%i@=0g~b8O3Ad=<>Kj!?=$(~sX3F`NBq=$GoA)% z2K9bw5eo<7s2+C={C63}TdQ>17Bm4Y5~mVoX9`3z?xiPNOHwX)v(#H@Wux%K;$AUo zeHCsgQooAm3?_&W;aNRT-Eaw2N+vYIUG-5sB*a2|^T6jM0AddsmQ;Xd?GAO7$>urV zsBc&!csUa|G32yIODu5SaX;?N8kn<0@9;q>!NX5#t>)9j)iJ zt~N_mIhfrp-iq0FG1Aoeu>YRkJ$`J9b+7X|lNEZHKec1#j0Jv6TOEy}mxZ7- z4tl(6X)C6-H35A(@;up&8T0CiA%yTI-I^x;@Z?T8*DcX=_WB*N21c($4EDyFxPe(r z(hHcVAFV24%jopE%49FR435+C!?s@vodeb^#2gWz%Si$$^Dr^8p+3a+CM1n#6ovnr#x$*q;y|L*lm z8M-2z+iUVn1}}QTxYiuL9ZRO@ia^C+kc!XMu;8l{hl^teivKRtNM910^~i3vhh-2( zs~>jScS)iiHWn{`SrT<%Z)`fS>1N1T=LNLraQ>;W@>*72-y=;ywk#BJLozibqb#ty z7sp@GE(XBVc-_Tl*rL%5FIhsCl1>>C!@VqdQPs74bAYtz<=kQ4@Y3SHQ=|zBp0HfU z(`;3^PQIqmQiVxv>U68GLE6xI*G;d%ei|e_-`in%HFcEwSiQ>;;4ZvY%R9+&`c}Qw z1^C?FM@$cyB%BkvzSF#r>zjlAvy0B)-4VAzX5-qt@HFr9R->?QlwmAJVf!>ws4u>a zFt+RM5o!$Yb$uZH@AUe>izVNr4k3~%qkyj{Ek4jye;=42mUlhWHYC4%qEB2(2a^iO zrfFgmLZh=4-3)@QIJ#2G5WA!o1{fBg46lNhm8e&#sMo%zjM*WBQ~K2wbjoJH27vmC^( zZWH$#W)Ib%B9cY^2;DV9ZbZ%UegE6|nZMENUT>$2a7N1GIg=TPW72sL1bylc+fGfr zYmw_Fh)z2_GdHBsdqmJ;d@_#zM9f{4Om-aVqiXMGtra z*_T4lwFd`?fi@umW!Nm`3LSIEsVURdXNRSi7g>mZ5tO0B7mWs4Cz&s2GHQ?dkVOOl zF~Z3X!+>D{biv{0-+buIDCQO%UXM^v4!FRDJZ_@YdUr%K&;;f<@WfOgev;62QqL>b zV9!%FW-X`s(8$grIqN77?WRbdQ#PJSPav8;@XhoqU4 zrATDdGla4g1-(`b8A@EJcuX>lr0z+qXnI^mB-V3|c|k%~+_ z!tB^3{x+U2&FYs7Fivt1(ZjDu`jwe%w`$xS&c1k(P$VPDmmR|{n;bgi+tr&Kz(aXR8lDkn?8FHky{b1Jw;H$IfP*Fxqp8vp`%6K)Yt zOwnqlaHLn^&}e$~$d{Z&CTdeHzDKY>scu7KXuG9pfVf~JNdg2PG$)=ZzjF3xKDYR= zLaU+@&`^n>SgufgHqJ9ch-M1v0gJ9WP1uPqTLx#Utl9bztVWD&L1vLRLWz58p73kH z{b|W99K>Hwx1d)VW3ZtJSd$gYo@p7~z|2XVQd$Z(yI9RQvcN|pvjW^%k-JfmjUcww z22u15n~TqqN!S{G#k*5Yb2+hz2Cog`1dAo02wEt*}Q}bl-lp zr$;CcaWKjIzFhqP9Stu{aa}s#b&+sU4z(M zbvZ6m2qnLZEEFD&uFE&#-!Y;`d=6BDMdG_Ymz}^+TLgAG%fED ztUazxE#CR(Vo9+qjgH54LT9!0-()59n)UrE4Pzw@s#-)@s%4_-KC5{x9dd$>S@KYt zojAV*{%R4e*Z2k3Hrbj?@Y`P8ui0HrKS&P3m6BgcvLzYQ3=Xw2wZ6@AI1=N$OfOa# z1*0|P0vH!-ACS|MK;0xzMT7urCuh|@&!y|5=9lB#p`RX}q}LYW2P~Jf^_A=RJpdG% z?5N7otT`&}^Hi2lt`jZ>FR`(5>p|Cj_oXs!`)%6-f^2T|lh4@fBIRz)nMC`Vqq#7z zj`}fPB@fZ_#rL^!t7onzHoH6HTlO zHG|6Az8f7j#l6Qz+j1;-%GfFk z^ja^oGLAQA9xPv?AXRA|*H;KRUC!(17&Bo36h_i*<#&ljem-( zfnuDR629)o!kmQl@=~-F3O|^Yj@6(MGfs&RS=)`3 zJI;K3G#Rg)?jD<`s$7gaDzfMdS@b}U!?G8fbKA^FVSFzUS}o{;0gNqb_23(HFvu@h z-hQVHUjZg+c;TgOMW&Mhs<^DJ zvNQotw{-#u+JRwMGAN33T9I)%$2Ge(xBQP~vlNy4P;y>^m?p3bOcY^lQajivtW7<7SM)2Htrn zqh>x2i4EZiZ}rgkt=l08hh-+y8Iwixh#E3Zo5>kQ+m0H3Jg*IYY#o3nhc;?HjW|7DTsl~;s@*8K*xD~NFd{=jeVlKh9-t|`vBwpa&wF8@>r{j|Y zDH4p6R_h=UE^?+|uU@4L1H$eNDDDut2sYsZc^rt%|A4gK^=*hqLC9RiSL+)SDQQun zM&sVOU42sskE+aFkUpSN6V3xyh)m6>*7Bc$5k?-P+h) zQl3`OatscJI|gB#AycfK=Zz=Ks`JsV!82z^?Xp5Ui45)e5AmwPDM z>e6cc1Hpg9F3yHM>WPB0>EjOKLp(-OTFyjXJ+W8`k9q(Ct*mQXs2VWSm@wN}^ zcB}x~>-CTUqdHgW0jzVYR_WN={J-}Pi>^Qdc@XJB&zRZ=BUyQ=^pT@N$P%4GWhsj1 zNQVi$ga>+m$4Ax6{P&x0ejp!ZJNf`_g8nMr`VZW6J6@BUD(6#pZRcj`r-%eL8LYm_ z!ab={MCTte$anb9@PzvY6yDaGPgh$DOZ;UbY^aH?(0$(pjgP-Q3^8?tV?$JE)7iAr`9iIz?c;HXIhNzq@7^$2- zf*TYh7Re3Xg$H#e+LvwLv1k`B`5*Okawx7x%dzFV^hZi}xNk zW3Caz^ySzB-<(cfb-(<^EO=|c_QrrF zZf8{DvSlV;wwlj>?&dId`!B`J+p{2B~y`xHoThePJ$y~P@>A5si|Q|FCu^qD6DM}Arn-|4Sd>k0`k?aw0O906yaO)MLPCq zEW1G_-zp@;EPJCOs~;taH(N`DPLaQj{wA;A%pV#Uisfr zfC4TSxIPdmGS$2K7)sb+q%fA$y=9fA6u_6MdO&S*fWQw^s*!e1G?T%L{7l~;z9~v1 zhMNJDE$fytodw7`$`z%fip&$XfjT;CqKO0YhxTQ?4XULwI9LL0GxaeIx z->R#25>LD9meZIjNBGp5vvl;2n+&HO6PZ4zUR4dxWxCdRY3Kev{h?~aqH~e@9!ZW% zmO&J0|A8S4tvCivY$t+-W`ZC@*D*3J0oU=4p=UcQ!kW=IpLs*QVS))XS z*4$c&hx!_eI!3WsxsEB%EmwZYJp#8M@iNQaH`CnPyiZ8pGzNWy-g^4U`msHMAV z|7cs@44z&4-41+CbY2TX|3~5`xu5@$xId(Q|5oo-ek}iMTLuYUFt*Qptls?)`lrkV zb(Wvj%?4iH(5?r*-T5g}pye@RvF*GNy1H#3{;vdj+neS+flVTE>B1n-CQnWyZktvuAIY>^ zWipmL3k`m;VeDIcdH9tHWp7ls)dfF><+b8QL(m-{3rK1*`tb+KcuuUB$HQ_<=(o~rg z(EWr<3$a}mDw)cN{;);q)~?wWt~439_&)U=5=3coQ^y(NIHF#bV1K?~iwr%8ClsfS z7sx#CkPQIdS2RGDbv|ZBJ5>zyt7ei`Ftqe?ZsLrwrIU^*oh?)lk*tw1;U#%ls-V!) zN`d?-?|C&@nk`xAXR33$R3YCZGjjzI>5F=zHQRk}E5X;fy7$nY)AL{@>t))80K6)a z66|ngH93;&BeK|~2t7$n7o94Skn-172L+~iF6#FEk>5j+aSN@bK!=pu9C3M1Xe;|W zn65D8IS8*h;36Gh+pEhEp{fssd~Z4Xm?^9NyXE|9aq2h8%LY`%WZ&E2s`OU+y4%2N zS9Hv}OlJ7YK)Z}YQeu^}3F5XmXW?_wTvJgRCx$%KO~W`hTekBk(ojT8tL6a#2*$l! zhxsP+ZXEO1`+3QRa85|RUsNI>y&DP>X%1-Z{ANAuP5Z(Q*KJ%qKTyEInqrYLO51c# z*jW-*$C4+k^UBq3lhGvOY8F7LpvjXt)45enex>P3{T(H|98#`DEUkS%R;z}p2T0&` z2~Vg%=pm8LCUgknhlK2@g&T&z=gWn6k{I|K7b$C(+RguDjzET%e}uMd;PGyX`{wP} z)DOd`cxx>JA2`dAYTFTCxj!$ks)2RULZe81zxz+=S99+{#ub>MIIn-78X1IscYY_l zkfC%aO_%Bq8m=;;y?5!k$93laGY``ArV55Z-sM5ECvi%M41>;K0)6%`fTBKy`6Pt` z!XwbjqT5gVY{>$m8c!}xArHR1Jn<#b-Ys}usmu#j&^U_`dBg(bu&I>GC(q|X-*O;e z6WvB#q8dTVS@rk{vILos7@<>BiXp&=#z1#r?z~s8K{D_)#Nc=nBy4er+jLuN7}@r< zo^#D zKA#6rE(;wqovz#Tjp+#ai(A1$I@c)idhXI94i+_SfSd*}23eY)LoCiEh6=U->=$U& zt`Wsr`a9bONf}<_nxt79jnn4S#l5<#qlT$Y&H32dL1m+ABeAfUnL?7}_^pH$Ltlzw z@adTN?3HY)*0i|Ra3x{I#BTOK0j>#4GxK#>Eu529JQ}dpN5=Y<^$oR+#s{k)WK^yX zamE`|fs<|F81EpV*?)&S)W2a;m!L3XVkEM>L>3KK9#C$>xU0O1w_7C|RpTI+4N=f~ zT5VyVtLIW#m@}8ay{uy{T5i*FP~N&t}ZX(d#@9uLpr61eO#7b~`;2R1G2B z*M2BdTF}(ZeVZ<~aOI!&8Y(9>puqH5GZ6y7s!Aj0jp%O@^0JlVZnb}N$kP(wXRB1i z+A7koDRBw3w-(Yy{1r$(8zXAKkD`pWI_wdB;xQxyI*25lVIRFwj-L_)(^dQ4cu!3f zQNxe%CW-1hb9%802cQXK_N2%C!nJ%{(^j!Kp3U;n*C5<1Xt6Pzh1Ni58*tFHCPA~L zI4j};GftWt?PF)*9G6H!E53{LOQtNr{<`8#df~`SC-^?z>C{VhdexeKXc?^JladyBv%ufTuOH?A35yzA+TGoW8lOP zr#w$Oc zM{|WdV>2-X){O8WdxL(?ThJ9Bc)Wtfi_m|5C~#l$Vcax*qJs=nTMYCCzJ}0M>#MSx z^%E2Qyf+116ddy_NWb(kDFypCx0!Yu+5DDDcTAH|3OQ<7E6^kQIImm_xDtKvbG`F} zRQr_@jPQpvl6lf-d_hYm$K$-uS;qYq`0Iy7{=%?0hX0@z%H4xS;Nm;;pMr!Z((NF> zXKL2NU!T+7=aa`?CRpuEA=(T#i*(HI8C+EzUCr6V(YdirO&pDbP`Ma?dy$VqhD?bD ziJON^ii*~IkzXF;8$bCI6@^+jIDYp z1rW?|mC23cgUt?MW#pti(920^Rzp@n5fm~WkFM^agAwQt#xVCGR8eyL(81Mcqq?9Hu<~+Zwj#9jb zi<`YC2fQ{~yEap(9FXN4VXldqDe%C!pR(z5xO+wkWobjSmUF|V#im(`q;kc=smFGd zam%i-+?#OOq=Iq>#fQ@Ddhd)ZId#)X;`)zaSRSKT-9@Az&3aC$a=jt2aAG@g63C51 zHcrFBq&3Z~^uLX9cb9PC!Z5n1+Wkb8%~FjpFpfWjgIOsTYB~JqO9}mWCh9vShFMBH z$`V3*Onl{noXALcH`D1Yri~a-ahH_h_rhNK`B^O4q6bsml*hO}D&C~cMl6e^lQMb3 z^yAeb2sRKbFR?ON_Ffd8_u`2azbFQvjL};)7w65naER5|V=g7&S9kypyGcT3kSOn` z#`3({O1w#&I*=%9v?@N36k{m~O?2CA(#C9Fjf;FD@DlqjD6&V%eQxmPV=&L26wc-3 zBBg0$w;5iks*lo{(fvtBk+B}*nU*-wv?50HV~i2ms?^_fN;I{2PvQ8-V0^xzL%nlSbBI{?YNe#hRFCIif(i*)b6F9i31M-EXaSKln-pjS9ZWLmRF>{ND` ztPmfT)(UYZcra{}Zc_&&UR1iRnR?nH#UrLZiwJY3I?r)~Fxi7CZ8l75Mc`G0+1D3y z__Lgo<&^dpODG@8z!xQ=%&($49PI53I7f22<&62urZ}ata;Cf!9PrB(fer8L(Wiqh z4e2z4vWDHb5M)+)B;G0H+UYsy1si0+b*jFV=scW@5OLzvmn}M#kQw^=vM|b;<^@%A66PwE1ky*?E0dKt7&nR}p!V z@Yrx!F(;mIDpCJafIBZo3oB*-1i7pO9oB()Sx(Vt;nO22S?_pIA}d@5?TnO~L?XuF zp2OxM6XJF@aNe)VdrRKPJm|eX1sc9d?44D=D=OMHAaA7$-ZWxL#>qsv(Q7s;7i0u( zvn$L1m8=?m3T;thb7fa9B@4FpWam{~l|Wgan%>vcNL_HdWd$EAYuFtKB_$b>szk0c zp2N3>Qb%CNwnWRf?qe`(Z9;5+<15dG?T=$uGOV0KHjAwEaDo`%8jA6%S%8LTq%>1*FCYluJD_e%mPkWBjyHRp&UcP8x;F(9_t~?tE`Wqy;LHV1DX*sm8G(CxC4jhfrf+xYRx;eyH1?U;hUNKJ&a z8b|+=UP+4O%DuF11I|XDS!r>E z!3=@#UZ|8Y=YPl5i^x)m%HN5e)4O!urj6L)THNqI$a|;m%ECwea%ac3lZtKIw(V4G z+qSKWZQHh8so0gOm{t3q`km9~qAz=l9^GS{udr^`TJL=4e44#+(XI$>S6xQOv;}C0 zrXTwAgcau2X?%So9^v@eB^2H`uC{$b+i7n~MrpFvs`DCZmg-0wVP7 z-63q#c+%;ogZD*Lv}W4=kjgoO>R%mJ$Kg&{P%Bi%cH~Iy^0F@Ey^)4KKSHujTh%JjDVd`aL0X$(-0blvFu^RfM7Znw-_XXr&2 zQSa7-B2~Y9p5;r>jiE>n-pL1V>MxlE<=ZgVet@=?-lpo6wJ7 zY?UV;7H?%?h!eYLnvaURxr0kUcQf)8@%VaR?T2N%Nhn@I)TvA^?zK?rtZWfz`lMgE@nld20LfvY+Me z@6g(@==`}1516RrZHQB~Yoj2B+%HlK{BA#Nlv}IacOMx7GYK&|D4l|2 zv7X!gJ&IWFVD_~0zoRTxz4(KXy`?1jLy>B&b2BFdQn=_*IfXGaN_~_-R#>te_2Ybj zkB@KlbZhN{+k9J&Ep#gmT#Hrs1l8h4fG_)KHoajmwgcpALOMdiZFGJai))R|`8pN! zj1%q*3CxT|Cu~&-(_`;7xdb>Tss(ay*-2@gGtFJRY&fjMQ^7Lecv@VE@v{+vo-Ts%(f(lw@&V^1>#S?7ZK)63nvx=*(zY!`CjkZo*xsx%^_Il%@J(9wf zwI9e}K^`WLWqVO1SW1pjDuQbR{q$$F>Cc3}lObZdTN$Zf`8U2Mhr*S}F6=T>I^1^} zm)ng$J4DO2-2(RUZYC8jUZME_j(gdPzUuSise2bN4J2>_zi(gq;Db!gcFTx4)g=ph zF1LE4{qw{>ZnufOpxq4c5fqzpgCIe5dW_O2W7yg9vaa=F%Wz)tq!OhV2N;9xSruZ) zfvWj8JLb!^270%XGWHd)`68f1TBuBqi<T|f0myy7}tK0q!XmD^`F(RQd7zZ=|bmu_3*-#_O${`mXS>X=GN^^SIv_m%WmmO%ead^ERjI1giv z^24N!^3Ac&qtLlaNXrnZh^W^j>2zs^@Gl(Rrwo>(rBgtqH zGTudD=eR+6EL=Oh;bZ1aQi(~tVg48ltr>2nXEXhrY8q9*L80hD`h$o@jbfwX_v!R0 zK$Q+YO!{X%Fx+hF;}~L<4VOKVjTJ*KxV?6-51}B!K=f(lhdXjhF+P2yBlrLw1r5~X z-LJk03leH{8)3=p7M> z{s43F5CbLM?T`E7LElO#dp~~2b@g|DGq&&p8!@3O!_EyphkVIGIE!ZkgjCQ}CWl>e zWFlDQ97GO5LL3lpKto1L1B7uy7L8(>j6Ko3=yHaZz`xi3xXS zg}L6fxKyRZFVxhGwuHwBaQNGpL(usJv=N?xLsf|GUEZtZWd^Xuu+>OO#DjolPE?b+ zcF^9XIc=+AHEDe}>*ZC05P8**{512jG+R22oIOfUeyMHPi0CnGlSpuqZTsOREud~n z)3>JhB!SMMi#RFBf#|Y%r@rg=xZYOW)pE_xo;_7xbdKA?$CQ?rF9;Arl8kW~2uOOv zxCm%U{7tg49*<15%*1vQV+8mjw-e%C^mi!Fy1p(`v}C(Krx^zjTxVGqYF%djBf##URa^cSqSw9@Mx+x-uAD{x$XMoSG;^tmYiR{#31RLOf%)$xhlntT4dUAO;8=vgeH zWAVA^2O;^*rGN|3LrkQTe$(eFzzRIdoHhciC$DD`hPCK`ToC+-D*oIn4+iTZCq0Gu1l$e zV5gO1T+&MEPms|5H}SX_Fvx#64g`1wP%|e54FtiU&o6Z(77jBIN*#F)FI;Feo%xx^_=-bZK9|cOjYg~u_{Za3cs_ZY6>PlZ=W^V1 zD-A^oL^5wauLe<2hI$Jp;iOCDdV`mA2Ev#s^=6BQrYR((JJEKBOBmMgHyPU99(%WW zx1uHTy@Bn{H-YIS#{Cggu6FjgPG{lDSZKb2-q>U0rW6|6c8QkL(}jDB_F05(x2_O; zg&K>A^xMmgqtW?1fs9|q0Ujn-Um%5pf`1H#;^XXlLn_2~B3HWi^>~->4VQppH=2G8 z&Tx6>aJ%Y#r~I)zf-P0Fu)iC?=YIDv{}(L?>|jJqN(8NX?Mf3_p8R{iP%!{>8_op? z#FuYfFw{b2&Iv?N1R4h|qgDpH^YM(PhwO4xl8^y}alQvpowuS#oX~8hhskb69!Ah- z{4R_fs*4Ja;!7Vxixx0w%8O%oIvO zyzmYUKGMnllI20!EgWeEcR}jodZTvW{sOBTY9*ryNH2@wjH-zAU)~B1);Z+fD1BpA zK}pSTryZ^UL!#C#B1qG?bWc_FDL_YXzO1hKbflKNqjZ^yxobx?H1 z0$Ozt!}0+)Vn4m%MXwmJvScXjz5b5A4pplhR5Jv854ftwz~-z0l$hmsQ?^&+bYJy+ z2sSO}pv2)9!A{8N+Qe^8?fe>+NK3x}0^u!x!SI`8HblQz&-@;zp`XQv+o7qv*yaoStm(tRkzNYG z1lbC&Oea%tIJ`d!uY-fN$m}tSJXz!O000kzyWkmJ4b4>lsaCrtOoGk&jWiQkkFwpJ6ULoKXlp@!lBtLl|186gIM^e=?=Jb_c)Pc(^wEu#N^P3ju8mM@xl#&xI>sgH*M!#v}9>&2Jown(1{zh`^#yrn}Ss z=5ZSilc8WRjV-MyL<^o{k`4`x1sE}Srekm$8Un}Np|yV_PvpK${KWg2_jeG2$c9;j zYT5h-QjxLR*ap2(>9N&vHF4!5Jwn-M7q6QMw}iatq`Iv5`Q~? zC>S@77}~Z33Pn^o6y{tl$=~7>YN|j4?A=+Gduia3^hICYwWRiP^7y&5`1C)k-lst6;!K?mRf&Ca!?vViNo;K2hMZ z^CRBZ5bCwW^xY`Z*y${@ZPh6;ofO?2UQ`qY3-}b2yR-+_VPX}XatU3N^ji93)bAKW z+J7ZOfd=hAA|%TgTy^6poc%>9FLSE-p z8E5mFgeee}x)vVHmcb##EFJ(>VSb8JI~NXul%r#4i`7YyJCq-}gcMj($!vBfS2Gx5 zO6yV>o0LSrx0MCz)sqJ7E_id5Rk9V;(^=AKwt8vQ90Z;Hf9>M^P?o6m$Kxog*iJXT zEXk|YSQd>$D|iN0DvQ9hRvgNRk~Puh<XA4l zIi)tLtOR??e9SG=DW#75ez&ZZmce^P&t+8K`*J za~-ef`AVv@$;b`4UH3B-dwYLIG0PKEk$KCDj=GUyKj2P5Nex~t`A-V9iOY;`mF^L) zKVwZ7Tqm7W#Ds3eB^Kgf-Ou>=^n;nV_9g+&Yd@c)qejE5S`j3Nm1$i{5uGy0x8N;{ zsjQ94-gz@FR)(gqr}o9|Gka=5`xa@jeX>Z3p~M|$+7As5B2hGKr$~R7OJ=1TP9610yr+VvJ9JI^0F(TLE21tbMnl* z6S&Y4Sj~APrx(0OL55`sY|utHz@pWoO6wZDs)(2xX%Ld$w^|b=oBUddmJ8$VOV*gt z!=OV#;9Aw+_Ycu@8ITkCA=1hf9WxbcVd58Oga90jC51r}76ZZ_=k#gD}K3bF` zNX>9A<9?57ZiHTUr*DN95Sf|KsO4;JM#T1(zwn{fJ(v;S@_%Y)GxS@}WX34jp05{I z>?#@72biww%c{-=w9Vi3a%c#P9{WbO!gftcDY_&l@&buAIv8(f4HYee_UApi%C!rA zw%Z(QBAiWqyUr;~*|$}k2Jxh^a@6N{nKpmJWg;uD6K@gG#@{BY?Eo%G4Z$qu6)yGj zt`KWIGLNgCvUN~y^whhCC2)g5x>z(H>IWDod0r~}brGUL|dCaLSi-ybm z)!#eI5lGxGN;46{8?dpS!w4F#nyP=e9Up@4c(u3iLPdL?9e*0qvlXw91v86n&Hc>#-}orctHpO6b17C7BO$jlHs3e`${)nX4KQkm!R`g_3brz+ z6eBZ<^3PL+pM6LFfC|okXaw-7f`Z2ahrm3B(E|b6c0d?fDkrfjDW&rRf4C0f5a&Ro z5iSWSEqgIjWlhf$5&xAI!CxETuvP%*C>OFU30UetGxrdNpumU;YsME6sI(A@&Op-* zd)82<%XTNVaTWMS(|swc_YmHyB1s{3m?FzS3t_)GDQ@#f|Jw{Hg%>iVED8Bdd(}#y zmKSj0*{fH~w(ssUGiWPKY9wOv#l@MG6w=p~g((LE)(b0y4=Edx zO(+2oP9PjPXu|0e75T;zlBos!Jow2eV`L+z$raViZlbN)Kyk>@ja?Q>N-_)j#9!;t zD$?Qx_tC*1@fg~{Ks9P0%(|hzw0L2sUhS&p1g6z#u>K3AcD2_RCsA89EX-U|)0<>7 zS!oHa=a`~O;gQcV+RT_#aDNmie>ih{R;sAk7uI2D6UR&;C>Aj`RE|!txaC$A95HJD zNZ6OmI8zjx@lK9nYX2*>_~#DcD`~KY$b`8~4+`PHdu_T3_LxHtx(Rm{-xXf6b<z6NlbsSAl+DO+lU2xBIlI0VVR6iKB)>+*5ll(&Uxe#x+uCz8O%BD= z$Pkf&IQZRyb^BWwLeyYixB%WFt}g9<7Lt*ARl7lt??`jAfH3ekgS_inP!WKW(10_~A?ws^n^zj0#PUsS%?*cS#Et z;Uy1ta>=h`6pA*I6osu?`WW~8neg;45w!`bmCF$<#Bl^d@9uBrn2POCs8 z`!Lwa$ZYTlmtT>7!noS(mRXUotbJWn@NOO$ec_rXkLcju7Y1h3foZu7|DVL-NOa%te zqECQ`(%&_@^kGwI&15U5Tydxn;=#ONojg+IIG3lS5Hz1X>-d7I7@cw>-ZOpJdwHft zrGO@RvURH$aGKmO7$h4gM(qNW2uozjsA(tx#q_ z%G_Lm8?8g4T7>hJnTpb@8zKPeP$i?ZT+Rk2gNxui^}jVZ^$u@#6rW2_7ns);Sk!r0 zhD(($Z(=bX#I$#yy?6xElm0dsMClr?dIYuY=L_danhnLrC5Mf;#kiunjIO#`SC^vf z4IG7*bp+hur-iPWDz6&b~8?hZj}yu z)g(UL+>xG2Dc72O3`U^mB$Nv##RoBXnFdW`{BRN+pRS$;!JH@TcU+d?PYV&=mf%EJ z`To+@*WFet-Qg<7{58w<&sYmti|IB{Hm|Tlzb*2-sx1J&+;66>{A+cJ9#b-%k2rHX z{Goz^E@)Gr#D^j3 zp08#@d=(P5ZbxmevpX}mO&Go>m9A$RpDuHTeTh>cskH>TCO&`13SV2tj!sENLMr>A zE6J%N6SD{|sa0o(T8Xu{;Hi5KpLpb=WvN}j^K0*!Xh1zE+ST@`crJQAR_~1u`QYQ}cgWkY;HRIPT=Z7RALJlQW(-yX^LGUqa zl-h16{T?{}48z>vhz?OqI|4^quv0ml?GWa_;hZnx$hh}K0tX^^Zy2QdiVMYEB7gzd z-TvU|;pj>*@oNJ#(@|Y&&tsTjH@yHONpldypsumMAzou0Ed=R%lWd$^Jm0v~bVH9^ zwf=D$;e-7p(DC5Sw608be-bNM%e7&+QJ1~Z^dli%ohXoCGKhaN@*JZ&<^N` z!r2s?`1KOMhgVLtPKwG{uNf_xWmg!BYGBU}^Usd@O;5^kBfWzUwi(k)4LS_FSR+8> z;ndC`)Jy>Fa4WF40U>I*@HtXXrf&+FY!90t2XSYILDgsym%wBaGOYA%?XqipM|WT zB`=xphj0=K3&=9ByQJK9J75xm-%&>FfLLUt?3bwJy2^D5ztn-vO+y`4L21-2@y~@P zJI^(pw$56RVZ#_~#~`A_ES-E5!1|BkbU|HwELk&1AL2?6^|&HjdzCap)V`Gh#F1TIi*L)>$f20F;*24v%soD{+)1)dUhl zf)Xuw7O=rYQ~e-m>%2}%vnGxNX%Toi%II@=H0#KG8OX!93{wD<2uVxe)=eRdGX2R1 z%KhTrix~LRtkUg>O;y|=G{()|{ZomP3jovI3(?;@>01Sw%mcx=G#xl-dUxrPbL8HS zY!q@By)jpIoYrIg<8`eXX{vL^Ns{5h8+$AxzcDlh1jP6W>h0N~Y+VRj?*Kj5;$H|N z2r)8ugBta#JB%3lfl=QPK*D~xd*u36eu2_KZZLU;ibVN>Hl(cVCAN|Z(DOLPVFN4X zB?q?tCx~qE>%GUdPBWP&HhLI7=M0k`$2~ELYS%%RSB!1SIn)~FY3d3bH891xcvn1_ zIG!AC6h(pv*!gGe>?u9$$C0$*=$toY_Q!gchMxT2;oEK|S{5YWN1~y`lMcsit2XX1 zPS~0!9kc^(+oo>aer^)~nxDBc)e6}rPZ>G$h5K=H^%Gc89fA(Lz3D##agoChTn{2n zI9RbzcV+y{U@G4RrjO~Aa8aMTtj~% z5T7**6kQJ$#WR~#GdM!z@Mv)sT~~h)BD%qUc(P;~g5mj7sQgv>bq9i;S?Jj5J) zia+~JywI<)0vpM>_sa_vC37~dF!BL1ceRKmCLaIoR%m;--md z!?v_6m&7`wEytdOhH_47@2C(ir@dW=e*#cN+W5u!iR;?nRnH=Pcge|XA`mE*`EKH0 zw^CU*^gW&p@vn2__-~1towoi+sNLV3i4)!PkKO%)dzfdojD^Bq563T@JW5kVthS(l zAets+X|YIQQltyfCQ(2X7B0ywOsPB*zvbaUaAP=P4x8=zCL3-PcCVos&S-Mu3E5;m zKMTh7Ik1GRu%Q2ObSl{jzDO#W)_*9CD!M`>*G3vwa-%-y!so(T*(IJ=c=+#6_#WHL zwKhANk5V5}n~V-8BZQ?(Cv~H$4%Xt+Zl%dADD&5|Y zN}HjhdAZAFG2GLZBh-}5-zPWRc9xbPC?pNE+|S@@+RaWTm}<6}5vH@MaLbX*IKPT6 z2s$KiC?82br7#YESecZ0CLg)&IXA9dh}Y;XG|JA?2U!2K{~YdB%%8e74GFLK3+nke zUeFK^Y&R2Djcw*pGN@m%eaCgv3fe)mQVzTa6HU?XOvZrG>bwok#%*sM8S??mO&qXH zGn9VU7yliEW(SK$Z7dG=r2{f#7NL>Uk}?6k#LuKR8QEbJ@m}vM{P`^siw(jEQVijj z=+VfdPmjVy(mVJ&703L#DVJI^_g5Nbyln0C4gFU_O@zIoahdM($|E5ZzoiJLzoTwM zDK2jSVSi&zDiv;Er?y0}>vH=URlr}FAuN@g;p1;Uw=!deVY*2x;EvqC7s7|lH7$JQ ztDIMuqXpq;sUp79QJtU$FDxfTPJ z=C)1JAJ6J_lW|z2_ObKRz&I*gUoZ$?(Vmdj4rM)iK(H>!V8yO(4N>Qc%N3X=Zh3fi zsowVk`tG}sK?AP0Asoh9v6Dr5C|e(2$H8Yfl$);mH(Tl=;3BI3z+Lz87)kY|(blze9%rY`yzndN`J zzF#1LV0c*M!H#ENp8b;l$>W3&-B(pzd;V!~@t-`-u}^bNKM>Jl(}0)WV=M1_9>a=7 z!`#z`CqIH5u}z1t(}&VB|%|XOQylxwX%@=AQ=l##Zq0slg!+`X?U+fPHFk2haWBpF9p!^9{CpVh~35 zw;ycYrv?WjXkqfH!O{P)Dp>stQlj{{PlN6MTaKHr4?t1>3{v9on)L+*F@FXrH#8d- zmVQU@Uz2RGN;VSTEJljc7o#Rdjgr$kN6Xt4qnH1G#N*0nl%l8At6kD-?aJtkU}v0kU)QztEktIm9A!=~Su&1eA7EbJ+|L0_?G`Op8T) z96aRq?$ioof3`p<9D|5U4}q1nc!qkCl^+p9yw@k-gA+igC}c1`~%6IV=6i$HuRbXjFm) z@^)s4ac^j9d-`(4g7bwJV|n=9ZhU>;6lx47H197rey~rkzqCsHgfcd{;`|?Ux2Qd~ zFr1BS#n9XHs{3QO1cWt6y1&`^Dv9kmPl)bzvD}e6*x^K~aiuZiVdMxq2>88URZR;Z~*V^u^3V840BOf^{sKi9>G|1Ssl}d zh6>8KIjbB(frQFbFxlSS5=p2{0!-0z-r5QhSCnV>8_FQ=p}5OW8L|@2-E-4|NDDlX ze7uxVl(K0VUb1-7`KpF~=Y8C_vf_bcx0-tF zB&yV;^Aj6F43OR1Wi4dG@C1p5ufG$eSabNBNy~!AmAFNS1iX=mLa^*!MRJNeebZih z?xi*=Ib2y*sQHsx-6rhiO~1tPPG;wR@a3Sh^BV2fwhzkPU;Ze7-l9RoLapDG6VWhD z!#FjC%L9XwJYRCkGHjT8a5MSCMuwO8hPBz@cx;j>C-TBZfDpt0H|(Q~{J3&f$vdPI z(b>A$)V1)!UeKfDvM&$U{y`m+l8yM#WmmW5ia0#x)&ewloX*^rZ;O^5?aSjSDPlkN znPAYq=5r|N9&9qlYQ3F$R33}yVy+z)WOz1HjXM z+`i&R{PH8<_pxESp_;_Z4&z2uKTN^KsVjX1bMUMBNWTjExhN$Jnv{aS>Diit5*CD9 zuVu88E(GFE4(0~Sxhf>>1M#hfI3#}Cq8}U2tsnF511c?kcxS;fr`A-IO=u#rtc13& zQ|`+clY)(^={G*)0pAvdF8PLEW-F+nD51$X$qsuZqeMs%Zaw543ULZx=*jLDU5C4L zLP6SGs6tZ|lA&sZt{kERu|_*mYm4WTczD+%kMeHU2hvwDe9^nRH{Rj*V=GZb+JaAC2pi{TYs?so&w-C5s$h@$Vy06c)Xg}}(zJ|3gp-oQSzUuX`{Lz=HoEyV;;rS6 zg_$h$It_TCVMrcDl1|rO;jI)=&o$IptG{RSuDS2?pl_uRqN91lt%FB{$ z4zadF>g3nLj&ujFN3=8x23?rV(L(G@YjS(;RCX_yC57b28h42xN{U&~Rf5_irENv8 zKhQ!qC8eJ_5Pj;#-RShPfg}~1j}9nI*SKIuO6ihMMCa=qS7l4&oMR(WLW0 zLBMu1^AGaM94RKF%5WyR9JB?Qs-uIK#hWx0t*GaUNxX2@wdOB}o6qPG>SK?r1j8n& z!OanZcX7QNmwD4UmGs@*sc`phsJoD{7MPp~cKTqX%~jU+RL7bGD#ZDtJi(MAb|w4} zaP@Qf0I=0~^V${cY8~|g6tvnVYaKandY}r{Y0DWF?bJXK6+V=* zzcOrVNyn&dAg-FNPEx)(C|znpsIYWTTz4>uv@NekTzkeN99xbQZqFmR_tteU``361 z8u72!*SOWbtzmQ6Q_MIQm=fuuKBjbTTP^H$ow2@Rq6je_!dQ;nCis3FwH&ZNp9`4z z?nE357d#by#2e$9<(+`V5(OBv&%=02YnQVc6!N>O#Kbyx4TDsrbq{4o&0urE$9%tl zi4da7p*Q+r<`GX9mELhG3CN$g62I0fa%sEtiRf%}qh(L6Wxk_anu6X|nmC(u6)2Ry z6wf{C8cP(l=k~p?!=JU&{ zhw@``{_RNq=fQ7TM(eNAOV1hY9cbiTWUDKPGSTRE$mheqn)fLT>m^Q?-?^D&!jgP( zvJt?o`Z{!70Eh_trEw1RJ+!|&RQGSC$kxlj;5Xm93Re)vyH_Cpi4eC&1;Hb<3Sp3; z+cD=5ghOJ6Kjoh~yc3f-r+qy05?_*-c2Ti2cSu(CZ5LrU%nX$g#rdi61rG*_ zdLttGM2z-1_#+K?15M}p5~$G;upA=d2_s~B?@rSx%FL}tr_K^}Zm9EQD?y=YdTPj2 z5?VwWoyrv!DeS_E1J#}$Jy5JkD5~?VH5w-^PzOY<`8p9j28>})jv6B6w8P{m#w7PX zlFM2VjYpFwL&MQxm2}dE3d}Nb{2hA@t+$9BB`2lOZXWIn)fb9YVw#7|2@)rH5j97fZH2$oTE+C~EJv=WYP6Ud1J&(CS| zG4!{vqfxj>-(UiaD<#QO1iDmxaZWW)X1}0tk^3OyF$32LIOxA0tCh6X?S3d&!IvdleN4A*`wvpT~lA81hrfI z;9(Q5aRPX7Epwg{CzmOGinJy}MAF%L13-|%T9T;u=t0hac<>}&Eh?9p3IlxW5cbA& zRO?jTsZ`R%^siMh_sK?to+>SzwsRVc&ZhX=+|0yBf~?|{DHAa2WvNmwf<4}!&pQl7#zrjL8bc;$kEVd| zJ|EB3eRs>yZ`^@XJIOCZpkY;_81$THA)1}SnQ*-sYvi5BmlRB#lov>oM>^>KtBUtV zhGw{=!#;2w0)VYN5qq(lux|1a`nxLl6u{-Hvy;Aj!OQwQ8qjB`s!GlaFP^Bmtu{@MkC5MAN z+f2|=E-~x^&#vNSjtuAMDm$X_0#1W}+X|nPa8=6C;mP3rZuP}%Srii1^ZR+xn1=^) zT8Rgo2)~mm4V>%&4Yy%TM*d61#YM$nbHxv}9J(--c<=Jy4k^E8v7>e|uWB|?%rd3M zaOM9gSlWmTLZ{Jvs&t-PV6~l&h0WoAB~ypba`A(5#Z@rIU3Bgs#WJ_F4ZXe$v&C|p z>SVkzyn9Hq68jDKs8YCB-;NhoUpfY=Rtx!9)2%3TCES zO6mPZUsJ48+TSU%KLAD10$XNJqx!|4QF zzLgpCHlD30aoAM)O^0P`mNR^1-mt1$Ow%`TP17SwNC>L^_9Sz{3-Obd7>chl46ivR zrI?ToVqQ1nLiNi&7EXr`_%ta#`dzsEZCz|zV@z=aw6ISwPbj&b1mA0mKuR%HSqnct zFH{xdfF?OF2%mQTg1btE@n=!}pBOj7l9soJ^%ggmHZkE^z=nB`jc$<- z`fQuIT3I~`FEau>gpMzjUQc!0VOu#=dlgQ2A7;lvhkk;j5L0ee%XZ3GT7F7U2M0$K zDld~ZU3(ivE6){JjIX5+JcF<=YmzMx_Ql>}r&SR?nsm9`xd}FXM^)*(!=|_!%c!;K`vvrrGRzDC(@qIErIi0bT{=^vy?B)TZ6l4#wY|36urH01ffVd!?bp7Fdx7kT`(!%s7D#np3a&j znflBzbr)yiTvA-frwVMf)~|E})U(4#xRuhq)MW4>qQX6VqGV*&ELa;%WstpMYs{_I zFu%ZE;bs7JmrauV6mqrPK(YReo-zAnmfrX3ulgBVWWEMztyQG9eBwMKSFuUhjwmG+ zfcFN-nFK9Xw9x+x-F;aM#jIbS&F?~+{fQ3w zMOki1hzg@u4*DZ^in6j$G^*K2;kk(=TrtSV zAK?Le|EkLR_YO=33|%)Jj*TB3z94nQPl?*fNd6?hTYdV;R9sX*?xPDNU)tK(MKFW?4b z`O_CkRqmWdWpM`W@QLz@xiEakmLHKJx=2>Z)Yxbh9+lnQWGB`Z^H=hfS*Aezj-&GZ zjdMHtZIKBhI&s*B**9glObau2_51#=!bb_A%na#%>N-Ppkv-IJ5TgB!0{;U|X(No0 zIPCQ4oVs)j*DV9qE@8X=rF*_Xh8EZNS<{_<>BeWMgF>_2cdrG@m1H^Fh)e^{x}ONG z_SJ5q`>!MJ0yGC^gYL8OWt8>BE{NpY6N$vK7A#H?jglxBs(pKnTT*f1j#KWW_2jdg z+RT?OC$rcr)1Pu6z6_FH^_nIsB6rfTh2LqYIze#4Jz|Igjh(~TH&Y@ z9*|W=pYYv?@tmar8{@al0P-;SV+HM>%Xu6{PrpxM+@`_?{^I}55@e`2+?3Jk+R^0#+uqabLh!fn&P@G?0p5d z4bZ6AUAbLIxNKJE%L&Gvf%_GIch5=0Bt|YPq$pPbVt)`%ymf(*B{nA)rnW_=TEPfq zv?8=eQC!4SP|C8m6O$Ytom@dm$Yl=0!)ZVm zTz^9|#+|SfS#?9+oNLgd0oD13d_8Y|3v9mF39BLe9H7431*AWA3J{1 zU73~macItGy61{QroMC8ATgM=(^szpDKA&oK#`$ zsvBSPgn)-cYI*G+>yf@EM2G1>*EuD7FvBKE(9g%NZ&+ny6T4SB-bZO4;Q)7RjU^b^ z{h;pV|0!6?07HlVvn40L!4TmQJoo(95r5xBd>$!E{w{3HLaH!M)+nSX)ho{?b+*RS z+1m_&C|x4#Rl0H>xy@n?Ao$61iY9#q>k9XRAaeSgq-FdVo>kfDmEQJvPL^~IqeHVc z<|S%9HKm#^1F^<)=?w$dECUzqeR+byLITz#3Dd}FqD`&kVR9h3AsHz$L5W4OkyG1y zomSm#qkH@zZ$CKw!D0~q5G_#L_lN8v9LB7ulSN8C3d_^Nit0*Gj;V-g zeL}fA7$QBG4VqjRRRyNX9YkkkCL!hkNAe{PhYTQ2h{hsW-RT_4&)vJ)$RZXjU#n%m zebH1VHAl}m_ObO|!csb)&%@}Gm+ZQ{pmOAuaKVjHse(kCvJPX@TBTMdCw3eRh%*pK zMVfRwu}MV|iYM#1L5;1g-fojD{~HuDS+Ro$zRw6b=v2><#Cv;bADmF}V_^Ndd2L@~ zQ6P}n`gD1uut2VsPOTdZLTdJ4F7iZ?<9dwE1RI%;%w5-~<=iGf{hMM=j%y^3-?_|_ zrDQGf)PQdBkWCHI&-LcmU;2O0TQhr0GO4xrxUCJ2zGnF%^m4u}UaYFDH34S6-FR3Y z9mC5}CjhlQx_hXi2tY^ol9`5FaSVFZQinI-o5)(&Mj989r~$uTMRT>B!pc;bI}S9Z ziGGGHt$8EEco|0+jYgt)IMa}fLYjR%#|4kSawSKP$8RnIXk8)>{c-AXg85s+IX&bVd@#HRO6z=qzM~88d209Aqzi6a&h{$x> z3l$ir#DWRH3^t{}CHi6E0CTweCzwj>gQciIc^-)%r zfFpFGLu;h+4a3K*yS1s%Vg$cOF}VE33C#}oZ#(c4`SE2bb4g%uX)DrFqCQo+7RB=E z!UkBTRJ+<4?z7tad8*xOHn=S)1-GRffJ)1fEYsXSbZ2nW3@)bNzV;t<7b{)ozF`=c z|9#jvac+HyQn+UnWbqYp6_yNHG zROuWXb-Q+JW#z*pVrJRLD|c|Ug7OSdAX z)6dB{Ib#Ib)_=f`CK^GSwMwlN7oF2z7L!^K00E`>y;|y6TAA}1b6<8{Q4)wZ#Q31o z&X8AWClsA`+3t`7uzKvmvFTvyjB^X8oWZUtBJkTX}fZbL7zF@3Go1*%{IE)gAg7BfDeYk6D{(NZTmx? zQZ9J9cDObI!{jmwuiJEeh^&s^-%x@#v&UMOm95= zy(btce)R{I06=%qT*40c^c3laK#sE?At?YHV=o9BCrm?ChDdDr50=UU5&%E<_n=2} zcN0NKGsx5s&1>v~PuK43z>Utv>A)MuLgP?Wn><4E)3tjE4rKyDoBGdgQJY5ZYB=lb zXKtMyrG5e6mV)t{qNGQ$9cDm!$g^gWq#5fHpTvs6l>s~wA=ORO1(mU~w8)1Z&9mG@ znNMTwWD7|pL!%*6MZHfO*R8NN#ZB|0G#3xjpweiDHKbCc4~$8nd_oh#uxM3^^CX=r zA~RVahrd#8b5~Y5lc1v7y!QK{WiN%TnpI@3ArxuGUX$r!Caj8h_x z)7c1h9pp{(N9Qv7+T5-g{r|A{R!wne0hlc`Zo%E%-QC^Yy&HFT8h3Yh_r~3w5L`oo zJ3#^@gd|+fIa5=2Ugu?|>fT?mYwxw!w?2fP-%s1c*#Ya~Y1 z`QKnNa?Xb>@i?B^l%anRpa?oFxA3(q-d zSf$@4=f_$#()q^lfbqDFOVzw>1Pc(92pTJv*e;z?TEFVy=W;qxuv+!*$dU;RF^K%| zp%&c_s-U%V5C=W`d8^cSU-yj33(t?*h3|d)a!LMn;3n$$1GyZu*x%95KerihqcPT+ z&v&)4^T-Ycf<=Wc4!X!m+}BV5$6^+5!~#+FavuV!-E25EWumDuEc}4A4XIKz*PbPS z8fkJ?lT$}P>^@Ww_9)_5G8%d#1suKIC`uP)#QRG+!WF$3Cs-pK=el$U`EjWCP7O44 z6_>2GhE1$`%;L40kppEQf}DEp7NwkSV%9T4rG^m9rELxn<&j)Sg|@AT(8Zp&m7-O` zbfTRA;JoGJ@?eQ63u&TiTs!2lrROO#H}0z0L<1N}l9DLQ$_`H!A|{Gv)A&tz%E_#G z;b6bD#mzfvLp>0%NrXUC54}+1_3z7z5<%Rw68Cmhs;G#un5YETc1w{N-bZSXLq8~_ zK-*KMi{@iV%@Z9n#0e0~Mq-UtqI8yojPM8V=ps5aLeZRbJd)Rf*9cnVG z9V;gjB@h-skP>BjGGSLOkmiND7}M5Zk4Ot7=A9h4^SL!j_@h?m7#?j3$9t^@j&TJF z{LlsAcYv^m3h7WETov^>b1-<3)D$XFixMHH9~P08T-oMxplH>^9ku73#y*)M%GO9t zZ@g*Tv$!hGmXl0kjk7>NN=b})xiVWD!+#LhaNbz#Qq}V3W9uKwlqqVJ#3xq5`Z`J> zi5IHa0p0OpjYZJ+X7g*09pp+(#x@IhE~(V{0(7>bGdQ$xctWw6iye;0-x(!bt6_D` zbVW>br5J~i_3GnC8i1xC;gnT~_+X@*y0mt9Ztpnxr32%ux$ zggr8!$gWd{o~_arA;EL&1<#l@rK8M^?6n9E_qr;4xuKQw4b;y7;9_dErTq`iv2ap67udrZWc_-U_B_Xb#*+N7qPd=`9h^zGmJtpIv6WYp`cO+_05^b zucut6g`uv{U#f{K&U*qFm7r_(ga_dmr1K@G+r^#n8eoMT^IyIi+QV~*8t=f3OZI|N zlH~5BzRb|qc!DgbDKjlOH$@#A2vR((k0cnd2cBquIcCL!pyAC$pc7kuRW)eE4Oxro zRVIo2h3tmPkZx08y`}=v8#2JOcM6)ycLF77aW=4%)~rZ}g}lKYZ+a3+Nqq0)Mf(+)hFVHhc`zT;mV6!aC?DMP+K0Mqm$dpwd)Idce2M`LjHWYaxN7T(ObJX%S{-k z7asBAP2B?;k4SqhztwiyO5o3LsoW~z)Z=(FJa;@GNmCe2>8_dVWo~RvE{a`b7j5OS z&#M}pvpLHi`6j>3!SJ|1qDCal$Ms08WVFA z?A%tAczuhpGx-sqMV&wbafsbssh=>&5MGv8lI3!z-q9~V;348k`f~RyG4oN57qywx zIe2IZ+_`5lRpSv-jhWmFEJ3vx;HLnqOmf zq-aQ(C!Iue;V;=4mwz3HN$R>MhikSlBro#5{p=?>YKaPC$>rOR*;x(w(@=o!rWmWO zQ0QZ503>u&(r4Dv2m1sX+D<8q+x!5}9?66GIvY>4jJpO?r-l|3#L0PPO__IuD5MuE z4hF+pfaAl%_anh*3d}59pJo z*;dS~w1ck^<1rLy4s61@?5H3=Z9~o!k?-B!e-H7m1V>vWKKo&cb*1!lCQ3o4Bv(m1 z(4{~>r2g0v<2e^w*h*_W=gHGG`p9EL%@zKUfstwk&u={`6px4L1@XfLygXf+dQ3`D zbw*jWgnvW;i9bN1H)C4f7HX5{fZm+eQ)uo)bo=dG2HY<2)0*{T8lA&Wyn>&SV%2`N z_?GL4BqkSPgw<&Ptn8b1F7vodp4LzSLNQT0iUE8WVFFm{}*r08n_lT%610RKC`>ma; zRzFm}n%h{=IqI0Rgb+ym!qA}^hHI_(d?>^xA+}BBhgyeNg`c?5W$9%Qkhtxg{E~Zs zRrvilqwylG;;=yYF4)dLM2X)nJ*(-Wn;dm}3fBxp4fWm8j>1C>qg&Aa(oJvuQI#IygS|F+s zPO)Fe8dXSH3Usy?!MtED#V@lxDGleggBJ3`^7C__0laeKTF;=n(z>i062LRT+1r;{ zd0XDr#o%uk*b|Zj(TVZ}RPgnAoXD1mNRel*F$uBO5?x$yEJet4fR`KOEDEFvg{G+Iqb+ z;r&DmjTM_I8#@zpUs(~TG*E(vLO>v$UWI?W65oFIEz#MfSLTWit4iV!6{QW=SQ+MO_f z=A*q7a`5LlZDxg(L48#fShbf?$x|>bIR4eB4TUVQ%!&0e$xH%H$aS|9VV{wM^K;A* zmB5HXBvpN1 z2)G~kl$_VlOiJC?pWxYOG`K7^IPmJ)!VFyy*rI*GJ&hGkgzdCRWmN~j&tQi0Q#NE_ z>Wnq+8%!AF@EUx46E5x+Zh3`I{A$;)zslZ?6*(i_a$G^`86}s6hbjKrNt@bpPdw=9 zJN#347)yj~M>+J>#^n#nsD8T(mO#NMcZL{8)*v7ppq;mJJdo&}8@by}5(Iri+<;>= zdhyiFYT`Mq34Oj+y1-{z?oh*HDY)RLpbj&qqSz zMntLZWLBL{`a2F=$J5$_%ZaaRNFO7Zo4-xAzqzA+m_1?eETH!BHQd>WpMHKyB$1*b zOGr=!7MGrrIlDb?Nwqn?H$kZdc{h3focFoyA7GdGdnTD=HdSOc-l^W34xC;%n>jF> z|9LjUY1aC!V(QsB={x6 zz+Bs!o@Q$xee?rVPv!C>Ew9E+%3yP0@%O?fmU+852>SrcsH{N(5+-riyijZ0Y`{kv z3Bo*G4qR-!{qbon8@^K5xnVH(>`&;b>5rHk?Jvy3jv5WN91Ri@pFZ?xB5k@rZ)59J zut;-;fUi+42zu5`W=2dta)^Ai*C-Q=o*%d#7U$v=w+kb>$(%ps)r_8I$VRg#W3e#>gLpK+fZ5FwRVBq$izKL_|pf<7>hMdKr?4FmZ$q9j9sxyy@mn3Jf^Vr zZ~-ZLgLnL^v?x5tcQzh4KwpIL2bI*sjW@&_2qu74Ks?=ISlsD_NSD~ z#RyH+>JP572Cvv*Y$q4h&VEl2<6JD7Sd@X_sZUNuI-~t28AW@|xpx>=GTq)KSqw-@6=3^Xa?D(=)>+n`!HuEnVc=8(=+z#LiDCMYr^UxeRVk8{li8NVIF1bJu z2@$FL+PZb;qhygV!%POKQ-B!q*B9rXJbnJkmUHT`sLbki%8C)s>nqo5<;&@A8YoHN zRw<LX?QGCEK+pg5k;W-+I?>2LGhBdKkX^@=dI%a z>%hunWrn&+l|OaAJZ z9G|`B;ndQqTaXf-kX{7HjJGzd*x>jR+2U9E`A7r9rDl2G+L;F5rhyu-NfK_jB%^Rm zmn9vh@o=^m)}R`}&3+t?zRZIpqbLaO?c|@R6@=T|AA7L1^41|$HZd1I_5*0xAgA#J zwLGKW!aR4pY^z$-Y1zx6kZ<{^OJxPuYc$gnUAIX?0Go#UsIhyHTJZc?Q8;Ssu0Ghw zfH^A#~UxzL1lt5F|5b zJ~#3oOCmoQX{3m0-Wk@CIh+p!Q)-*$4wQ3Gvi1W@r|p! zaRCw|qpWZ!4N0AbEf_WujBL7>lO@LKQw)n>wl!5x{~2kz?F*oXgXX zj--w0U?G;L=Wx*rDjF(oKW8)2a>UiW*yGvu9w9j(XY$3%`s~ElR~u z+2FnuXWYm1EVq3Qf-I2;)G|!QnfwX4kUH4khWMirtGxvxq|9}3G*bC+pJ~jaCzx>9 ztc|rLbi89GC)8ehDn$Zhc-mjSE#zP!92%#kNp_6*0NhMU;ThZGg)EtbbSZnAN}5=O z!B%deF?nrTr7|-C!F2`Qa;CWay4@bFDCWT`EIY;?lcHq z`_HGGD-GPhBoR@E=hUR}fKSL`zft$o$}#0n?cTnrqW~}i2(D&8luy42_0VTY`9Y{) zU4_Ay4P2$(CwZwbOeDMl{||Cr6cN+4vLscXxJW@R?}c8F1I$v9U-b-!P%=#y|U6Wg7lQ_!Qoz z^COe;s1pG66HH&N3NZI+r_S_CVywvIa_W(UWyKx0jCPjPR_7_pa zGl<6!kF^aREp@B3qzi2e(Xwg!GkVT|oBLKB;KpmOh z#vdJv0SvWRY~9q%9ahR3hRjUTO8xrH-)#hm9kq4j_+eMN5nFqpVzSzDpm>Uy{qx-< zMFs>z6=Mk#x1N5O#MzVUlannqkN>OHqR{O?dgHB_iu@u+OWF4&8GL824k`Mg$!QgF zG+wqL0O|h#c1Gf+cN=E^xOP@4!B(5Vk|dv-E3MxuFu6?s%OywRd3mqxoOgZs7huVAuVhYbSa* zibCo853u{Y`JZdYE&8u(_qY5%*RG^X6gd8`Yu8Wo>CZc`8-ePJ@CLlQcIYz^KPcaU z9goEy@X{c>l3VzLHpP2#PV&1U^LuiR;?+c(0sTEWxAA=yhe3V}r{2x?DPbSk98r2x z5e4aQLK&Lt7JsOFL$tsU_U+cC1lzOy?X z0Mfqo&(?BTj{jA*li+-p?POr_W@7%4?S4UFSiC^0Rf#ZR@Ooz3YfyrDf{{s;!fF1M z?M#jAX;y1AaBESCIxop8%IFqZ>^rYWvVKW`GGjkA7z%NA$D1lXH5&6_@v_3Z0gJq(5Ln`forQmlhSKlr1Pz0VNUjzHb%m39C4?5d+wG|Y1&dK4 zW;(JDj{0%2-mL%l{WiB!o1Fc34^j};_8h7m(ZFl<=xj=NayZ-2>$c&F^WUN2vUhfu z_RmfxL-d{;7bXQ}*k4`+L@;#nv;};8TBn2`n30)8ku9tP9m1-P=Lyq+n!-EIPHROIZ<5hMIu#7 z${*U2UaoRqEX0sA+oaFZFFzCLAaN2SldYj)>E9MrktKS(Az_Bov|*j+C*^h;<0jWi zEM6Ean1)?w$&oGPPbU->BZVvvEJ2HmCO1Yd+X7(`RoRV(#QO+=D#o9(&?~hl{SWmN zv$ra--0x2>8py5*_rZWB`Ag`lv|P({X6Fm0hSWV|#~KK{f|jqZ71UbY+unVBPAlJx z;B^Ns4l_mRZdfS>klKu|JZddkcrqT-K-o;PFvN`^aBwHPsQPfKVImmo1?e(%Y0;k$ zNPikZmiqvo7#Zf9&wSv&3)kTo-GFp`hq?V{4m`SAB?$1jxLCiHAUb)yn`W%Mf|^|Q zZ-fdku$o~Rpy*D7ogFv)ZPmiC5kxg2t8nEp0`JLKJZo8=bJ^Tb{dm3TpFBZP@jxi= z==T09#v@r{W6*(NPwQAatVzwPGrk^j&J8wgSYyxG-I!SdnNBO!ZQ$ty)NRIAq5hcV zM3zYR0@c*i5BGeK*_^!`mD$+Cq2Z_7OG1hln1z9*=SC9P*kbQ`iy+&-T^GXexyni4 z{^ECvJt6@1!;~9rsUlWBacGEro%KOsh6wbW?@J2oi`AAS5LbC!-t=juH4k=WFe zn(3N@cD==Y88-YIH0kQczf$_mn$8rVRWl0DpQj~WmgG@_HA|r0SDsc?-S~3CP)ykn z3qPo}`nbeWATaw$dNfH!;?o=;IK$LXY}hZ_j9U8{q2_1wD=V3SE!3;Svn%}0V%@l+?p(}XPWf-V>~Ji5Fa*9 zUY5=!j*j~4wm?P&Ti7D+G)jq@6E!YWd>k`kqpaL-g}DgPu(Yb*75Ek4IV~=Clx4|d zil^u(z4V7HtXA_xs<>hw#u#f7>X|}4!+MiJO<_z-Tn)Z6@Lmrmp07$351NGhJd|xd z1=T5*RousT`wXPZ3=k7EBOH}ayMS4uO+^<%cpcKB_b=@V7mtimqXP$O7o!EJD8v!h zYCz&yq9(7W#UePMJvCyvN-`-zV<@)0U@A;X678McDA!@@n7-z$UyiZvK*h)KH>?Kl zbg(>tP?Dhs;3OD{O2g!o%UDR$mEAd(bM+oGIY1XqxfBAfoD@fx}hbDk&IgfsEZsWi$E5)(1PFy%=E0>H99-oy(C<()G zmJi|-&aJCiQC|f+d!i9oX4%doS5RpcBT5r&Q>pT3AcwI5X#$1mv+j04JoY=!a2(J* zly*A+(A^!pv@U-sUs-fUeug`m{b}&iO@Nx1> z)(l(}sX1M(8f^Wg=ttsf#3N?ehD(4N!z{+7Qsm8Av_O(ou$o18jg|ZJaBlvSaz{t4 zoo-l_cZh^p@t#UzeDW{-H~}so+Wp!%Uuz43ehlq~>zGF_FF?1MNLa^%mDi@jS~vgs zR({v3p18=TgT_HWZfU(5o8FER9m8q=+3`S#18v$4(p0uYQbxA9zu;7zT;R+BEP>Bk zluPD#e%9mimUW`egKTHVJ~tleCB2zfFRRC<1oVFR>g&f#gi9QuAVeRxjgBbinP-l3 z#@FBvEc&oi*iYnuu+p*SuWXgN=m=f{69y@92HRxh?;t1Rbr}-a2{coFHS+cr>@9(EZNAccvWn@)cpb8G{+Hbq9+!O4DdzrsJKFer#+C1<9tguD zZ~h!M$1u;1J{=TvYG?lW?J}7jpS$f(^_hVc)%V;QK1Kj@!o-@RMMsg}ErVQggwg~Z z}_E?$swEZJQoH+vz#iDzI8 zk$o+Fp4#0~UvBYvL%9@hcs1sK+pM9>It#VT4mGYJ22N{SriVUY^72S?|Lhc0*Aq16 zw9dqK;c8PMgJ)>o(AjIJNK4fnn|-+pKsC_(}M|M)6QZ1wKap z{Eyvf1Xs~WGi5MgMzS1cGwISA1L=JC4rx?ZK-2>8;&?Gl%iaiE+CL!PzjIWXz%ivB z;2tX(Z2>V;eLi-C2!}Cn@`Lk5o0|%RBO8JN-4!~@6Bek+;HVQ3Dq$IM4%f0Cr(+;P zs4G+YW=B^UD^h72bs-;6Wgt|u1&FtU0$KAl<%I2LM^jsnr|3Ik6G%qInBr_iTDQhb zE^D;VCPp%NPZ`L}7*H(qB%<^y)@ojsmXNM0S|WZA(4iOJXD{i)}spt}Oo40D(IC7(4;VZt>6u z01Yo!RJ9kqbxtNnj2mXQ7@khAKqk+mpP`~)kUz|-LZ+o&?y^>_=}+K+A5Bgy_L{de z-i)ta??2Qod|MC|mbH*S!}f&JE)K>pDx*MAqs7lsy^5B(9k*34(u2`J2s+$t0+ci2 z$E~O#mtBA`;ukAO@2{7P^AZ@komYDy7Q>q~pct^^A@V1aqBRHPUM3>Jqg28E!@xQ(jkm8t1lhmb&X1+u z^&u|-)ZIk-y`J~l5Plxiyq_x)-?$rIm?&f?7-+(Z2^rb|lIiwf~ zyFSb=wr))Z^^&axn+6~hF2`p3DqM(SGoJlUrJ^1(9KcpPnFc2AM}uER3|VRY7JNmM zgIjQTy|_df*^#);Mv5y89(osRnqS~-o03;J;>SzvIRwMPTI-u5El!784u@J<9t{Kg z=6ZQSmCcC1wd6*yDzBr|!fANk4v4;U)@a@}p>r0fc_G(IDaHYUAk+TW6SHPmm$V#;s9Ckkas6-@djQqLxf*^IrZo%{uEg zACue)>U;cV+$nrEVpv`N+_G56)g$z%gIjE`)>I#q_^b2o8<%uSPvwtG!xNu4Z6>6* zIUDi@7SUJZR4-#GV%gM{wl(+;9!Tf1L)SxqSTVO%kVEc0tVoeY$LTsBR8{#m#4fYf zPO0)_t5+vrL#JN?ujy;lO?exywYr?O<7--n%~JPayp#8Q&#gZ@Yh`y5R#!GLb!Z^8 zw=%3k0^kfL4k@C}L(qy(i>V?XDfvpOi9pt5J(Rs2WgN{1u!L-v=_?J#`NKLCCmg2Ep}74ekp?^aSuePSMUNH^qL(|?dH%C-a*AG2+2o9$qRUK4Ae z!1sq=^?_bTCVxWHCfZcRj#VWjV1kFNWZG=JK%b!niUVoLP1wV;NL25~wldi-ui77o zN6}4+SsMM629!5m%fubU>aFQ8_L?1I+icB{7?WRbz!gbOPwXy$z<^FP_{o!wpI z0;UmXGp}c|O=fcoXPh0`DT!wojf-&KY^4tcI8Jh~86w1_E79{}914^N*RNW`3lmXL zFwub1Z2D7DJF_-(`PEON#t&QsPE-or(|KSi1K)+2!iBkkIRm8*bQJ8fOX!I@_|@|% z(UCaCel07-gr;uV#mKqrdxyT$u&zW?3)B*1p?Ptrru&308;S-yj;X8b#jCBRWWl!j z^qy~rmG{|b7PVu|EHv;YIG=t`XbiyP)We6&y$>F^W*@4xBDgCSVCH|PB?L}RB%+$< zO+Avhxz@0KEQDtUb?@pd3AZlwCoo}Z>x@OW{2=m5!|T(GM_XT5?prWeMy(W7{Ya^r zA?&Om>7e&1oGYx$E%Lt43wMC;joEbfuI1aTKTR-1@N|qW82-2pekHzCG}ux^#;Urp ztH7i$=BQTT!Rqt-owqT!&v5;h->R)!sa>k>28qpaoJQJ0KIuA1S!|+3JpeWQks*(*{b9GTJ)EZMfg1i80XeYm345TlN{fs@P0ud z;g-!W)~r=W?3uN6)`{e2^Di2W#iU7s6uF^JJJuNa?oAuK7Q4(Nz;92|bbJNe+ht^P zQV)8IhRe%Mbg}MR#l3bw&5umdm#a~Kum_Sn599|P=S;HX+ypzUXf`Upx=la_?+u&I z(?Dg;4FV(xKfy9>ftZYg-#}h}W>~)N)%fe`5_}9RCq>yQ+^~qp_UBuom|fjgl|@wc zL>UV8p!XdQmLsie0s81;?R_bu*!}RiDz@s2lz**VtH)bWHX55Vv%VgNm|f)5-iAu# z4uinJ0NDX}+u1Y8zo@Z{Kb`hU9pi2Bp%mShzx?f2|b(k*m2B~L>PmNAU z(+IE2(W|YDX-0e$j&j*fomnEZ!BFT``-%Q^kvW^Oo>_|9Iy0$*gxl4A1(5;mMF%){&NbtRGo1G)nc%QB3)1cw{`FuI3DeFmy zlO+$%ZBEF&y7xPx&P!-iIA6TElJkn8;E2Kj^1kZ=z?@fuc|GMh&#t*?a)I%CVYijJP{VO-U)vblJkc`+ik=$WUzPY{D zZ!Lv4D;-nOR^Ot&M0M*#e9n~bngjzvX<4nilugkwFp{|p7EjO+@oAL}l)ZnXCMV_N$BnX5Cu%+2bXaQ@@72dwMsY{JwbH_RJM2c(z%My0dJ|YuWieb@6&J8?~$w=W&EcBplvC!5N zrAci~eD@Mn1-78u=3Kz~M&QX1JC`Wg%a1s=JO#6qu4egO{?Ma1W#*^W9}^y;P#5^M z+dmLM4M{$Dl%M$OQr4O9yaB3BH)p%NJTf~p#Ivd6tn6Y>}BJ*KFm0(mD-7^Ud$`)P|W2u8TRY=Wsm7;Wbf0b zmMkvYiGa7=KN~5|kK)kVZ;51oTz~x2twU{(ievvC&)XBn- zt@-%Q?iPRiMSo{^-Qa^*mH)bRvdFPQ){pTY9ZFz`pNv1pPiuzZCz>J7Tz5SdRvYa- zI`b!=mB~<{7 zpmjO~i{5=CWD7A}Bm{rKmT3Ow^My?(9P^=UAg$-O`{5?lRy>G|z}^o>!vHn_mH6;& z3@-&$SQ&#lIsSwL0m=`rTV-CgE>wF4x?WfI>z(VQVG>*hQ`AGZ#^qgD#zZg4&(~FVhA*94*C>HR8k| z`q&mH%1>AN;gAtT2|o_LmM`$CqjZ=F)h%DSb`yt)f7`H|Pbg3^iY@pR9}@e~!-X%a zL~Pq3g#68jTV+A)qFTc%PTVQ87zQufft+eOms>*0s(tQu?DYpbMt6qxAab?~LfnaR z8`I64J)}@KaWBw4UhAzTGw|&Jvrw6ev^98!>-Ud~pM|AFi|_}uZ;yg^GDm9Pw#7_; zn;6A_AN z=}SzfaUM53q6TnC!Ax^h`wEA7D^zlru&Ks;1YhthMfj!c%J{K=#TX?c1M)157Dp-c zB`M3jRVdH}>J-%Bo;s|u@}M+Kv4p2IsRe|Wa!Xm+jTqygEH~WA@_@_dN4dIc-gKn) z^@@3h-z2eDJrI)MP2-t(&dAcdKJ-cF7(2(sfd495oD+y6?~qlLizqRGZYKzdD+wXn zvng4N9(Y_dBwUwBw}P#!@AJB4#jY-5z?f3>+&Ft|?DW!$_;#1GTBx44=6cLr^_TpH z`2LMK+_p)*%M}m;3q%t7Tb5iE%!rw=j4PfqKV=&#NZvx(W_ixJcTXy=sfPzyqPh3% zZ+>&%b)PX?|M^tHc*b>?WAotMVIU41qr}B=J^&_>1Eaunsx{+-GL-uSf|`mu6&>%~ zI^=~c_YNQ1_xgUCVsrd{M#iqbZI%fg*=3ITziyq%_j=aNM9+72x8V87fA89JNeaD* zAgBc^>Ak$*c;>O9CVt~NAyayXx~3Na`?zl8n$#gGf6D=)FiCM%-S~&yEohqQPpCQ7 zp!s6hOuw_ctsNd{-16;@{J6@@m@eAFFW9)mk&hIGsNchK5y83&!E`{+Q zcIUe2&l^gQ>33G1^3LuO>@oZP>DC1trTyEj+x)Lv7r0VFo%V0HZeXtSU)j!F_&?b$ z@IQ8k-T8_+_^)g?9{cjIY!_C`Px`)-Y5n&5UADUoeu6jo6!QClx#aKf=dW+VJwIr{!@~=o&Lrxx+QVPryMpt=S9J&DC z9W<20HmX~`#38$Ne|=+s`hE8XW6}j}o$k(u2fcM)V?p!x4}TGu2uCgh@IoPQ5Kce` z07tCA#R39gPBJjVxxKR{6)?9%VuM=B?057`ynv^kr13QETxJu3ZC(WHm zIYl!tZfQK5T}=cHE~1n@r4hqwqUjvtgpRxSB@<%F7`{biVZFXp5@mJVzE~_%*>1x~ z00wgq&H6f1<;g+)mC_schJ$q5B7DJl>#AVi7X)oxdjp_sJ=0CMvRx*AC%O`@v%LXY z$8zkh?E5a`Cq02$7-FtpM?rJWo2>oQV^{20PA3dmgQLC7>;BNQc9)%Rd_j?I(`m{i zc{C<5)>#Y1_O0V2Ev<~OSlHcd0Wh3&G;#VqjStwA{6bu_RU1(cd0!sx&gVX45Nms} zlWQ0xal1OocnHwPm%}~%MUVgw6E1Pj(vUGwr}LgsFd9}&J$fyR;p%lR(!ia2A@4Yd z*yp=;!DsZj`jld9nCRoVeZ=~-;q{42G1yF!Hjojx&Z&Xq2m5q@?+e1vUwR0%uF#;( zul|LqBWa5sQV{$0Xk(E*5<|U_b2y5|u?v+5^YcNW%0ZaY#pbEuWq@q_N$9#rc(c?U z0EBhWM1E@ikw-x+W^rpg9%pt>)K&fazi1u*=C|pag6uB`Gl||+-F=9M&YUQHPfAL1 zfK(UJ(Q|a$!pHEA+*haltOOH%yH#~sS+}Zl8;g@BK1rbCPU6owEb#ZLTkvXH3SK-e z6tqBV5Jr%NUMd1dqXXX?ct zQm&q2PNDd6Zt%WHQkD`4O9MCH*D`EEuUa-Y9p;r=@_KS1l!l{8^u2jE)IignO`4R?!~LMV1OW}5*Y$2Gv$!3J)!Sa$l1L+G$^(g0 zwa)z+dXcr5%~D!wi-s1vyzl3=9uFfb8fv_jB|6koYF=&dDu$RODb+q;YvPAfrIRQDhM1$w z-}<)jb9EtX)MF04iiQ+xI9))rF(=E{avTF5D$Ra_94{@3eg>%Am_EnZMA|f)x8j&M z%v?(|r7N;8SdE?g{j9F!^K>_3@2=KUGtjXhqR{9^N~czFIt`=&s4CMmMoe8VrAxDp zTNfCbUP-^+2~K*}sEov3r&$OzyO;1O8<=#_#6UHM`xG;p?(HT?X|gXIyq_oLc$S(U z!MMOmVXZx$+$W((Q;O`G3&o}?^17>usNgY~x^-jN&7_X3%-4O=>28HP14BrzGgh(U z9`@B&>_H7F=4u6ZPK&mZ^`5#?q3HJSzI_>TlYqtL;fB;XXbTlaAQ{&tGYtmU2I1hR zA?WX?JlFlB%!e)b7S;BPT$?!*VQ>1}cn{C3d3q(vEaOUKEI!yMO!;g64FIk-0UA*M-WVx~^yqwLR%$2vg?OH_Yof z3#x$l_mm&k*|9UYHrzI)>z+*0b~~HMLMW+7ZSFo8&q$wIcN~qM`V;?Lea>DNYm|3D zKmI6%y{uOy)zGLNq2M-%?CTlhP$i8SH;8g(8JWmCA}-^TK-HKu#lLu;yeYT(E7CVA z>xMH8e`{M|{>PxDn|l^EGh9u28NFnG0}+u;xQo`R+LEW$FW#J?zPB-yel8!rMN+~& z@ZDAZCy9N^{M+yoZowFhV*0xNR4*(mENIiX``SA}FjiIU6=dvfWDp9u7 ztU3CPi+6N&I*MLjTXbhTFbenQa<2(V?I}tC{SCN3Nm0!f^k{V2I@A;dp1qO-yb=fq z(O*Q#%!=YRYbe-n%R^GY->v6F2KjEauI+oA>}G+1ly%rXxD&Y#B=p@G@9B3flS47) zAc})QFCK~4lwKID7ln%#jGtTCW3Cj8fhmBc`S=(Acy55AS@;pcoA;uA`33IArMP6$ ztM2KBJc`iH7gnIzn5yVF#eJaRh1j%L;(1g%JL#pmz+cm5iMLfk(AzK#*Bef2sMwhI zi=@xPnd{@3G95Tz%ZCB<-R->y8p=uiN~@S(;{pq?P6BJ)=D;A;8hoPy<8{5;i5hUa z;Yr#asq~ht^fr^);Rpl(s$3rw0q%?yGYotlyYD*2;Yuy=_;j?mkL@bv&xoa)p+FAf zB?Lx2{UDOkNOtOAu}Of2A3$k_+Os24J=TZHI;xJ_>JS06ZyUy{fxnRHjGCrCEvuM9 z0VJK#(wp|?uGQk8_x|P+E+YfJ;iofR4QC7I_hE=(s1?IKvF)tJLe~djLkI4U^KnZ@ zZ>JFlWg!ZkMq2FaXCpGo=xD0ROXl|QBGpD!q=WO`?4V1w01-cBMbaIde93Lyjby_D zli_vHbLHA&kU|VXT~iajof%0-Mq*ldlrsR75Il$dWJ7rE2MEY#6oS+vVkM<9GNi+v zIJpEo2<9k#>-0jJ6~NxDiKEZ(R=V-{d@>sX!9MSnpC8~6Au-cO;+O&Y5kDn=%a8m4 ztXTn6lEYwFvV5_kxuxNL$zq!L9vxF@{jDeP&QHlIEA>}Q^3QCs#p>ioJ{YUXa4P=9 zb^K6KY?oVHl`eRzZ#s0YIhG>yxM>~{>*w@e2=EXu;I(B_S|O>o3K4j564V*N9}EFP zh8a7)x?Vc5DG>~u(CN}q{8tBbwm{~IDn0c#JQa9G<*Y6E{jDgz)Zh<#S%cnL2(UmL ze^LI_;4>-@q^B@0L1-;)PiSo#=nGE!o{+$4=3RJtSpg)M8F+I;gD`+AjD`k6M~3V{ zQ1C^@^Gf>Lcpz13&bVc+sco{zL#(qVNYO*tj8b1|){0sXN&cP3)xpHq#Zyvb3v%ef zOJ`T)$uF+tovg(X(w`hx_qW%%-GJX^?(EvG&=y()Eh@we@B4~C2Ir}iC?YZJG zo46mdN`7_3#&9GP^_G8pfho9fWs{fZm~&c|D?WS)DZfyF#TOirq5fja9qg$?8*b^dtdHxTiod%>8IMy}2( zE`cn`yF5MF3QHs1liX&{4lN_W-0+>MraB>ee?utS`ou}Txm7)e0Fj4E%4?=(3x~qS z`*fy>X2YIl#NA>9<<=9TrmaKgz472i1pe><9s^D4N03Q=Tq{7Bf=dYY7#V^h9K59k zp;LxLF+$GUIcLLxoii-TjJ2=Zn&H}}h*wD^gjt0MEtcVsJ3oj7ajnTZM0%-xYrJV5 zNWSqlTd5>l9%VI z2_Z0|7w=_qe{Gi*?k2wLd_HX_DD5}K&GhdPVpX0Gk|<;lbZ?-!`&OHjfl0Bb

zn&%pcnQZY@ic~;QqU=LN&$q$q>ho|MU7H{AeuPFhu`zBK`6CdC10G75t5l=ar{)_I z)uS!~>LhNNtNlWxC9(PT&|{s@i@7j{t<8MAJLDHW!6CsjP&v`CWyYRRC+o)f$Z2%M zGZ0%EWI0#c&IC(MOsVpjk{qSmzEMoOpJ8*-AT(f#gI~}px2`da&O?xjy1b#FRkeAp z_ycn-d;{dXj+8oVCcbbcabPC-^S{wLmV~i~gp8osw8Gikf!RdVsTsoQlQ*N8;Y9_|f8qJu+-%_gL*6@eXTmjV*2x{)wrwXB+eyW? zZQHhOS8S(ZSDXqew#~Y~JkPto(S6dRM<4Bj{TJ5RTGyI$3YF^Q>kQ+P_yAy!9d}nO zo5WRX!WpZSM3ma6r#HVqy2&%TDcVhw{%O$2DoFO|DL$pBQSBLsGNxxYt%qOulBVI5 z-Z@LmzBK1UQ!wCj-tBkQkgd^>W*=bJwib!#ac^>hG)WSEtJc43VZV<@#M&^$T9>l+ z4E)lC#Hxmj!L5h+wB>fC>~OYud<<78lC#pZ0nM8(r)h!Hb7;05k8PTwn^!!NRY3O1 z4uQ{0>iqep!x_S7%NNOc$W^?aI0Mn!WJ_u~bvDz7HRrp#7$IJokS*cBB^L=aujN){ zRf{Iz8bjFQDOk@~Ahu&_buOZ;1BhTwMRqSZQZ7Lp;%2Omxd~6O%d=6L*b!{OBKR#A zUS#QA4qw(n!bC$-FRwsAuQXP2vS^eQsp^-;*7%jI)-YG*?r9K5d}pT3SFc+L07r?R zTwwSlF$PC>#?sYunj~DL_|b0RfRFGj*M3u#D|Fc-28VKEzQzHPn_o4RH^YCfT%Usb zyCXCx)4Fj}s4XQYf{=UNQE$OUDBE)@t$${9IMR9^4S<8GIJ8S#;(nl4$4Bgrk4;9W~1Oa<7Osh zb7uZU?~k$GSm)E~TaOugV7J(#5q1jGYaPrO?&e7p8jf_q`{&lE{4NqZHl=v*sbOW(Im2_F5-?pqjo}xdV)x_5?A;&hqZfn0^Obmuwfoq6}NjuF^ zGad))9My&1hZpciglKN&@owQbUpmnv8i7MrI!j-&=JPy}yizn!eNiS(|E-&qG+mhl zerDybe>iI2V!XxG`11W;%4joB$fd-f>Uc(s3BmJy!b-Nu9D50Y&T z9=zsWt(Vbf7*_!EDChQ`tv-IDs@d<_oJ^&`i@D&_y1p(SZ_!;_hc&&6v!30qr4dHY zZ6)B_J1G~CD#LNXva|LVm(_s4+k&}~^tA7)p6%p4A*Y;nX3nqNaPcuj{3q~f`e1hR z9pndfX|lL)Xd?Og2^CvWJl9&H?rHi|cf}aC5Xo=d3@%}!e>u;R$+Ta)b=|bD(i^TA zO@05Ohs>#8PsfJ=sVD-!NxG*-qt?@)J6s3H24DkkiJ9oR&XtQHf_N(v(ubsxNlDf^ ztiRYWIoiHc`0EOUIVcM6Xvw>}_~=kV<+$C+(ERuYT(3J|s90Ic^D z<@mPCW=xlL&WgcDs-}Hq@aTS)B%5-hx}q}udPCvGa^cyYC&~jMDsYi``ac;ueK=xx zl&BD1jI;Gr4(9 zdutJ!56v|TqPH@12E}js?W!L~><7pNKYjr7Pqk0x%)_Ua7;&jKMopDDsG%y7!T`SOkTFfzSiSB%Gm$VbZFAhCRqgtPu7kYEpedZm9XH(_;&@T0bxE zyi`ZStxT@kD>LvYwu<;*0;^5%pUqU9d3fs3y|*b}b~TRVVBJaAaFt?lqK}vnAp~6Z zpOj()84;^;nZ6I7xZQzY=1a+9K-SqbLk6g00c|Q>T(JU($6@-^1XevY3QuAaY>b2YRJTqxcLR!9SAPJpZV_=E^S+d+x+qG%|Y`mF4fgSeU}Me=*nc z4sMV%3+7kiGUDJ-FL_OYCPhJKW#; z3(>h$&hZubQ3VEqZJjl*v<$stOzx_+PH5nkZ%m$p1>SI=>jzs!MeXtS8if66s{R$Z zjV;A?a7KrS5ridOY+;NN=VO~vMT|GoAr*7F{ zGDYyw;}VA53|xS%g#vwgpyjBxS`!9yZL|IvjQ~kkn?Jp>W6L}b3wP481j}sMFo{@r z3BUXowifKFl4`$V=|nlxX`F%>Q*k2hG1%FjwtmWaiYSl<0g&7265U+u6cQJm|-m-(_~T%7BlXr1Dh`Er!s?w@EKLm9Y) z3ql(wi^YrEnt8!Y>l{raIO}hFjnKyp=eaodY&-RI%q?#lwC8Pq;Fc?%_og1sSF|qb zdN&%#WZ&G`j1CIFpUjl;a*%G2Z-rxRJp1Y^G`;y1t*cRcIw`lAfBtujJKrk1^1f)A zQ{dw;K~nerCtAmM+3<|$doy(X_x)y+D8cu5glf+BesE zfc}YXUuOhCw+3ex`4j)lG2+|*(R`Wq-!jIP(*K{Mb+Vll|AUsg|4n%b@gdn@nCA-) zfM*|XD8luH!Q#!8Vu1(o1Esb8S9vL^iv@b~F4c5^67(upt@|oU1OlMZn#`33Gadl^ ztGs0XM|mk7`CrOQIt2O2mMTEdTdvHdi_;$|MMfk2yvbI?J`fmTVb#pWnspunxR(nt z&a?G)#{pybM>o37ZX}G~;!et>+x@uxL-cSR4WffDPq_M<_1D^?i2*b#EIdtSI(`}Y z+wh7GnzMx)MGtsgEj*p}L6J+gU9B{g*e1>TEbmpn$9}j30EhiWMc(@)`q$US>JQUjBT%;qo`Fwvs^LrG>uYa~O zdwfBIumt)Id?Es)s?;!?!O=Z+{h>vghys3njtOg9vjol?!l;i!gTRX%6B&dcP$~sM zSf-6wBWha~!@!wC>qa4AeszQmgDR0R`IFrD;%G`Miyi6h=T#!C2f-Jel?}=F0Jo2k z`^hLL9VN*)g{Fp)s^Os!VqlDg_^ER4Re>ou_L?HjFcWSYNn}qg7&28}r<4$e=HrLp zha^;mNpIlnRA#UEFG6-qNsmW`u2(M`;jK;$WwOjiUOJvqJ1}NyKB(44x$x0T)X*g` zRcS$H-#bE`zM8YukeO}A2F8|vld2fid@agS$xP|Z3OYhG3xZG(MG&kp2L+(2OvJaTYRlBb$x(aEE1fu-n{LZ| zmpZ}|fD0G)2$`Q9s$+1U*pKk0Y2HDTCd~+0ov;?R)IPe$(6o(UQSW6XK2u5=U@3dO zZ9707v!^y!Q20R40KEwI%ac$mPW4?Z&2W>)qcVn*f`HHO4A?tv88D81NGo4( zI%sP&Y}7E8!^iFTmpPl{YQg{4G4AhppDmL3_WNuuzj8p%?_SJ6kbKcUmoEbd?Y_h` zumd>)Vlh-Zc52nr?-_ni&^hVp{c*eyN^VS(_Xlu>;oBu)`hJQa(D)!P$dN)d9||y# zraJ(PH6f@jl3;jMVu<~=Iu1kTAh_BcYjg;F#Jgit(s|Vap{1foTMD0xXpkD;?^Fk| z4WP)`Xrm{41fXw;f^{mZ&)>$F5e1l`u|Nx6hD^oS$de+kqjlEXZiXpXrGgkiS6+aL zN7zu=HKHuPqaWub1Zy@Si7vHew4X?^?*fOT1!MP%;$HwDlPEE+V(P~S)c7?1!sI*q zWQ5&@W88?S3h?{JPZyAQIIlDUrtrvKYoRC{ghD)tB5^=dClmp1XA?#01FCmyQJToR z6wOj&V#!nbM?I^ATJl41Z%b-MbvpICYQi-~O_`m?>G1tM$r3^cnw8~Z%SKZ(WWNDC z?s#Wzubws96t7BsUZcn*`XUYzsVQ5Ld&ODsy!XB~xO8c8zqFI<5V`sJk( zCiwCa>?+c_(~AYPO%?0#unPg4pam2hSyEns3#rcWUrXJoV1bkXdU&9kQ1xmkp&EZD zvXn7PR$NlG%dbJ(JNH}HVM#OCeDZsT5EUDN^h0T4yc*gG)-sAe`;MJ$7^jIL85Dalt297xTTYVkqPZNTTZlL zQ^Z3sCAjN2amBN%WS(+kYf81syraukrU>l*KL6Md7zV0_bWUHz8q-3_b_pp}y;=v@ zZLWkU^MnUSNsnUiytYxDVw9fkQ>!s z==CZ*L$TQXkWW(EI;ytp#wJDqI~dYTM_I1@Q@rZHQKsKGDZ^wVpZRp~`v-ucTpA)q z%)NI*m4rE?zt4-&7yMie^ge7rjiW&c8Q$>Z<27UDdHpPHN@Usxlb;+nv-f z<&)iJ)>>HdB)&$cdEljy^0XkN#&WB<3yUhuI2Z<-+8|dNi`D0%;*D`#^LId2=Me|7 zKlqeN;{sZhK1V4w|DE~r`BcMN$4rK2=7l#bLL&TS0{@zIj4R@~6N@fpe3Ed9G3SFt#fB-OqRt@sk!| z4zl_-`v|O5=@wUXAGPJ=fJFiw4rfRzTuzSzg$pNNjc;h zMN^-lPEkXR>9YtmDi(c0a9X--H7eXvg!#|qdY>Vyop*C?+A5<4PbF}?o|-Iw=tU^R zorI(BVwDlJ2gin%#mnyEjqi~iyN2!ARH9aa-_We3p-gk9o0>^qij zj452}EI_}0)$~Dk>=PWxD9VO7u}6Q@_Zt%Y+ijcC{G`ybVr?#5R~ z;PlRH_p#}5Py=5^lzYU){fT7WKgL8U^(d?V*WGLoctK?k6xe7{GI8?PyU{}J00XWDI6VePh6X^pso;*gg@>BFbNSH?1YvjhgDrDF zp12&k8T~r)8&}p9X|xu@P}T?{;4(6O1%t^r_NT#=oLB{&k__engzB+{M!1M2V1|-E zhzejcNKg~%J>yAo^Ttw`NqqNv_-;uKf>~0|-V#O*aW9)VV2H7%At>f1VL>g&75t|x z{7%x%_(-%5ikLV<^Tga<_e*&9s4K{vTKD8Ms^AK)^taTy{zJV zg3NoyXnyWlm8B{Z5T($UVjz!ekE8Bam%x9J(@=5{%Hwnnq0&2gY!l_i+mirzc)Z3hYL*dax&$aWDbC(>DOr4^S|W zUbsEmtz++8&VMl+K|?lhBoaF&3zQ^t6dJ3#_)>TQnAgKVLzBU!qkM(w+3vVusVq#< z8Ba(UbJ$I{S5133zTA?Gb~g!dW?*B$3PZV0H@2HpNG%n5cV7;)G(>l>JBt)lknjUk zbyd`m`jliYZvVr^5Y4-kSi^AJhD0HB6OIu-2rn=jPmyCOfz>r*WSV$ynvCsA?#2}( zG-q#)B$iloSCrB8nE4Rf0WUBi98gs@%`C8nLpIhGvx37kD3Gk=sCXK57x!Q`Vl>Aa z2(X7k5N32AtEB|}0k0oX*^F&YxmYRkSVBG%8T%$VP833VkQtY^y4szjnAn-Q#hgw@ z&J3YOjmbH%fw_@hX8RP`oT@N6I5`jPIVTxkR{9uol@yMWuN!BY+eG}#P|gNfq81Fd z*mA5Hhpy){;Le4yq(~&WG$aa04Kn~^ZV8gZFBC*P;7{+K0fG%^LN`9$O0j9(=Uy@8#ia#K9$6dr#H zswCrl9kb{ z!;x9s0+G?6_UoX<&<^N8wy;6Y#EjJ{EaseE>Od$>hUaCleP_$Z5aqO6$B2Q7kV8q8 zPH|x&jX;d*3-jVqT-&s}D#3@SoW=(iFu>6E<7U z8dTY36svJNXNe}qk$*?Z^fVcSzWX7hc}=(I*BDuI-$py7LEBFnD8Ld2M(eG2l{K7(S#Y`wSwBH6E*w+PS*h8lY+m|Xu{PX zVpz+i#s#w&Z84l_?xJ%;#&n;Qs_q^4jGL3tUMFzZ2*2ORJ(b9{!N5M1cT4K1E==2A z+T&xo z`2lauEw)x8_OMs^Sjx>ri2ir zqszP*hq+ZuNCUmoZl%dDEY0pGs`p(JOf;Q}!>N5CY@)9&IQFcQy8B(;w~C-ju4+8$~GNk8v=!I-5O%;<#asSOWj2{bulX0kj~&j zhja%N-+0hr)Zo;tYCt$_+QVu3S}cN-FWd?1DI|Wy>zSWDR*3Dyu=Sme?>} z)mwZ>R%ulrfi-Q?QXMuM9Xoh^u)q6158K>gvTviL-hEUWYuLYY8sEd!;D@8RH4gX` zNv8-Ec7>aCPqjh8w}Na&L~RUKiT4~y_LWM4uJcvWg(k!UMEPi1ADW5|zRT#9qHoD6 z@_}{g<}{OT_WQsNxsZo$yaPC8Kj}B=s6OJ%U61>;s|ci#w^K1(DtMq)JP={x3~ zJLcOn=C3=N-NobjF&4Tx7Op!UnL8GAVTK(e_Q_ibuuwQSXqOP8=i!pL%z;uH^fVdm zID+x)0s7>-N9G{y=7?jBy8j-h1hHE(S1mJda|-7Jd^fJT5tjCt>d2kyoSqPdA3n}8 zC!GRiq#RK^GtQa@i(gCV-7HL`Z7sJIvgZ^ud|4YzyRq&I z{GT`7hR4}dmEzsK1;T@w3i{d9LBqebk>>1lCc=RdQ(PTp243ArGvf&IbR%OCzqZz= zYJg?GEC&qpbs@*!3RoG?txGc%MrWl=9=6t;eXk7&2T7t`;!iu(m@NAvJ+2-`%s}ig|iDu{HW0&Q}Qwqt>NvBd2$Kp{YPl_ zqo&MVdXhvbhtPET4S($q&+^Tn5poKOA&>Xt(03sTx!;Qjdhh*1nP7>pquHM!bqtVn zb-x28Pv;OtO~KLk3JY{sjIkm|kK9(fRvPCxxKGcP7T@zBwklc(ZGP^bybG zY$;izxkY7s{}W*#Zmw{GtNa^)8D@$Cy1^8Ao8fiqt=&34Y_=hJi-nk%`6c(5oXG~* z13!honfbZR>b^MM_{TSIg#>oJl4hrcWdcnkJAE@5TDWD1ed4hfzT$JxdH4^;&ODMl z;II;scV(F)arZ55o58VkipQe4c*jmyJq6r58UitXYg5^ig;!$N1v-Acx;WWo=DN4| zTw-SJKsX zc-PLVLz4KE>zN`E(jpHP0Dml0eWz1UYZ z=dSMYf-AcqlTMTol%}l5RtU9%dq|8^mi%TR$iBj z*LB828$9HZE|^T~MSkgsUc5JCF5N$mT_2AmrNU^#Q!zV~Nx~Bc_xN1rmI)|^ z6>`uxvPv0GFzmIq{IzaK&oHTSvz?-IGz>rTAKDJ>UZ}gzTJ|2AS+P2~E6Op%ZSEWl z2SL>5mN#^5nY?zgUpJG>@+ObBM_wHP%Dkt3yj#I$p$s3*}2R=ft zAfvw>eD2X4U+EHzdyu{t&t0ikzgL0PAEff8>L zq>XQ*n0!Ele%Ga)UnFo5(K~}gj2Sy!RK ziP+$AW$H9fbss%#kk&@%z?-vUJf!STgou;l@(>J%hKUUvKG0{0`58Tw+4{$Cd-`f# zwg0`!nMGl~5!htxN3j(|P5dLAU=ZsGbR~Fg*#~JO$I9jbPCi&hrrPm4iutfd%cKY6 z^F6IoHG~R^5Q|Qd9I=1}dQ-la9W;Eo)H3!pCsUb|%OmVHiS2a&rjs1z*i|1Vsw2?} zB}vR@^DrD|Jvq$I{-x2=)e0a14U|Letu-1D6W^T)a-?ch)3h6OQ=FHI*e(B-V~z0!x5s6Sm4eO8ccxX{VIW#%*Hml2L*n!PcfbR#gT#wQo{aQhVJK2O zSHt1=TgQ`bqr*}Dhw((?JJfxnZ>+6M}skOd`BGp35M0t9YPt?3&EXb2-{xDe0YOPt7f5 z4vD4RHhdSRQxt_*Cb%_kCMx;D8DO^IV2_lj;3f3eD~r=60|8kOBG46O9-J~X#2Mz^ zAv&}CqM?-HZYuFHm9sJuzFe1Hh43Q!q=B9+Kx{48I=q{+nlb=5-9>{{HE3-G3o4#9 z_zZ6ht>WL(lU$4ir=Oxt+rgbQq{(? zl4YuTpS$3g%I~_?>-(RN@U90KPL`EuiaRGlhfr5RDs?c=D-f)U?LG|02m>~iI}Fx$ zZ--4%ZJV%(D}2Ew>6=M!rdTUt3mw`1{0EzBp60mT_y?Q&YSc+I-`)SysACUb=R{~V zB;|s3T~arwa~(4(b*Em@$4Y%zHBKPl$TmXU^6{`@ zkif4xRFm)bydBU_+_jUS=>J-!>frx&Rxg-#aM6zx@PTE^6!7_!kns2O?Hb8<=AWf* zpM+Wx^hqzc^T832Hqh#2yfkBn-;wTDF`jniczb7J!JS# zqwY(28AfmW)u{Vg>Lwk(8g*aF%m3R_=lkEb)QM;P&l==FK%PGT`a}Hx4Z2rYYVv;? zbnJjzmahgKDK-e`oqWrG8g#@Kmm643rPAat=#bnKO@|4wAkYUc(#_@wL2s~Yn-h!T zqgnhRunfY^|1{`QXv<0+sunBY{5iv9TIa^&a_%6A8=9&$zR?7EPmXi!tTwv>D$}CW zR3tJj_lE|@)$FK!^$ySM?wjjiVpYD-IrY>L?YIy$4LN9y#{Cdi6v2F5NAkm|-tU;B z)315I>%914^s!bhP8LtwWY9$xn9f!`;GkdRbPCSe z0Ii=kNjZfzRZ3YTD@mGO;V5o!k25INDCIJTSJ9H29QF95)0eyr*qQl-%f(mMp(xHb+f z_-Qa@X0(EUPA^no9>RTHT|hIIZY8*D7h>&XFrc~THuXr``V8se-Yr)C6{!b;`&e)z zIJ(z@>cw$O z95YJl4hXfTFxNNcV7yIYaOL4}BoXFN{Fc~6+VG?$rvz2)tY6yst%03!(niKGG4l<{ zWG}r@fdz@PU+5eu5iW_}1>QPjmMA1S<&A#x?Iu?4S|5c(44kT}F*-00oGlrJf@h2u zRb$N+q>9{LH+^U}TGb(fD?z&r7S!5K+oDz%gCgQjKTh zi7^i!`wU*9O99JI$_#fHB^UR5-kr?~Ck5&GU|b8*lLHFp6;mKtawdzTzD~O7EJun) z-gG7#jogl7(OmFkMM17jrS!~tXuyxuGQ01mG8QTFS=kRoe^d+4(kmJ`%1#~bX>+~P z%}O5SAmnXswIq`$*cAzv1exl{WXuxBD-|ppWGbuGB0`n})7WzrA%fJ~tH+yR=*=X8 zVOA!MOTr9kWW%NiUZxjP`!CG{Mr!qF`easi7<$?`Y zZg_a$mkJqeoHti)HJ;4v;uLDzJXc-*>)8dh)@nw+4j!?TC?W*mddCarfNZh>^QSP> zJ%VdjO*qn1g^U3*&)PtgTqdyV^g%tBhCn@2+N~3)O7zPUBUrUoxMex_z+|Ri5iB_& z8VmcMEfy|LL#Z%|Q5>k-4E8RCJ1|_#ZH(nth}OCLyYuylJD2E)9I~Y5B$K^=zsLJD zH#br?PU`fC*lhS}&9xbaWtNZ7ThA5t5<1j(>zB{Q{=_?~vDY#+JE}$;%{IrBh-(Kw zi&0q0rlm|N>(DVtJ6!NtNkjip%x^XY{Jp-|esBehrUWZiM)`!=2*(*BooCP*`vxZM zkhZ{N!{%f^%_Co+DhrO_48hw@7$2l+7OFiSd+{Y!u{xZ!ZeiOgz2HUK$hP}^rr7}d z>yXo>t08~;A!`-QmScZl!8EJ|!duT4G%k_bT>LI2Yve%fx;nsyAw~saK&S-@SQ>9B#aTjcph z1MThbS!7c^F3z(A4}?JA5PM%+ypa=ou49x-Kj$j}wZ|XM1-F@Z1(4jQr*CRZRxo8gEK(d-4{20{ZN6EFc zcs=p}PwAAdT)(;$pz2oR@HrCr>7CW(FVcv2=O57Rp3lL9e1%@M6f{XBsq(G3rvb6g zu|V0+>4iq(UU;kZjvE=oKwRL>j68t7yHj6DUR?Y3#;>c3@Le7-WTV{A_YrrvIN_;_ zE5P+0xFgdUv1?6NsdGYr>h2i41YI@XAKa%F|CZYL3Ec-z$90dFS+{s$M(kHw`T=#; zE8LHFW>G4}3(ILhc_^rHJIX0{<5y3AFqi%SCtFj9l;}>W!7vv{+Tgr+PC)O0s^XP2 zN$z<)v?bclJ->x^4@&M_+yg8+%;^XEo&mAO#tM|*Dokh-eUO3!PEi9<%>d;ZT2{+O zZJZJ|72ni`Xba0Qp4m;yM!l16)Y_lHpr!DET-HP{r1Z?ekZFdL)I4oqeixWVZsfjr ziNTN^-)OLj&&2HBlT~Ta%$|jrf2p&1tvJb{Dmoe)Clv;KSU@Hp`3@I*GHX(}4TrMq zg?hAvKBI-v8ir8~n47hR?ToUBXOd}j0lz2XuyMCks zz%3bEEQ2Y>{2A{;CyPDzOxziy&^g9M7^zg!ZyUHxAkyzQm*9f)=O zGwEE}c{0}|^C|&k)M0vT!C63V&;rfis-j2$LT>+)ydolZ8S;FK|QRF z`4=H$k_uzSu_3D;V^Ac;R7$i*G7Uvd<56yc_PN;1vrLI`ghlNbA`N z2`4i$3QT|9nNcIg%GAcpG6GtK_M9|BQUylpt3k&@4L8hcmIdaE!EWH;V_=q0AZ=oi zVVLV?{FX_PIilscB#acu0#ZtZVeA`&90-l0uLBhU%ANUrHN(F%Gqy^o-6Ls&Dt%nL3RwdZQ(R5$&Vmk?+p!M*WyMn8d&6 zQo`+BV*ac#t(C;{Rw5MbX};>g^xNKKLd9*A85~9QCM~Yb#FE0B%wv@Kw}dDqTE3T3 zJb^R>zf7>eeAelZvnzOsGD-OucKKCEVM!K~I3Nlf)?ONog{YN~HI$kH5M$sBt!K>; zj#cU(T_#|ZPn?op@ZDj?ojDxWmRb9|sddEVD;Db=KkFFgCk_hUQmoK_^03+%1E7^fkFKq>OoowNy8Hz|3CtN zscMcF6{IP2)S1#AI@nu8A^5()CwR>rXGt@yL(*O~p;YA>b?sZEzhe~#&z)>Od2J4_ zMa@1?>mct%S@AVVxlVLB z*2YL%em=k1A9yu&A;Hf=^h!RxnYSYR6owatOLcvY*ws zhH2n{#ycx}df9@0tj6~2a;7QYvod6^o84FPew zHu}4|{JR3)7)}Y8vRud7*yV3;p+(2SZBjOE?gyY&8@4u6ULp!<(6v{s_kjUER;OT=*jXg$mgTqGgw>suo<3r)U^3V(W4A`Y3 zi}A7!JGM0>q(`K&G_%4JhxE(Y*5FznWP6cn^O24@v-JI0pUx?#sy8Bz1r+V;`{kKq6Dz-= z2ix5=c*3S_JRa%$zoBz-QL;MY3Az(Wz7y%W6LHgBkEG4(9OFsAPF-0{vs_;^H8hDK zpCK<0>}1KGfwe7$nBzY!b9FhzAn;4%zf~%I`4cb)5@aPZ;2fnFn=1`PSPR5w76AIgQ>6AQ!K|4sK+>BXt&c(zmZMMf%pz$13*1z&AEZe zYb*^%1qWu0IkGg+a=g4coW=;Q%Vw(w!gM1lnc-|1V?p7&{(Kw=_VJLgb)7`sder<=+Fe5k?lp$#G zsQDhwjo{2&olQ`0PU}*ZT&kDaMrUP(p{dr$<2nHea zAXPkC%p8mQz2+^7iR51$$-)W?A1v5HmzEOeQ#LdC(w6}645+_Fju)Poqm{C3gbTN^Z;d$)FBA@_?gk$}{=3*s-AMz<0vcv5+m-%}PAT{>23@F!E z{HVUjz$#zD+A%Kf&y$&65y$t|xDw1CUi(z;zj>*vPxX9c9k*sd9=&3RZc1B<=eq=| zynUgV);#&^5;X34(tMc{+t?knIf3<3S`n8N7u_CR^(&m~*7ulWw}S6x=Q3q>Dpfpk z^0U=}!h-i~YbDdB0V3uJB1P4b6eXQiA=L$-BD)W}&8luKpd#1Nnr-OvuD~ZVE?FqI zft9@{YtUy+C{18KkKh<~Dz9Va8GVC#RmG5j#&uxO%Fir_MMeV=Hd}f0si#%(>nY0m zLg0{bbW^B+en~xO%)L4bLa3cMxyVPshiDMFn5yj$zhjBKxDD6{0sYRcPG3R_a6a37 z1EnfO&=Dl1!GOEnRi4y4Yb-Myn=9EZbFBSUN3=M4iBCV7vhzLR(MyDn;RNTYdRc0Z zk2tX!$2AFwL#-x(J~uZaFrX6`Hg-FObP!zQZ%Rzp?65D7SA$eC=S(jbseYr8fYg|z^l8wZsOp~T4$i8|f_s3|wQX3RGX6Nu^zFRB zI-wVaCkXlG=k$2UsrGxs{IE=$Q$U}CBKs)pDJ*T-3|1pw&tXo-u8s^Iy~<$oB0mI# z;O{9kwPWER0VpaWkiG*MSug_0dXQBGQ9ncdWT9sPnpO@={l{=*5JxiXNE&^b82Lit zoUHVMHth~Gnz&pJoZ}IDV{_SD0eSG9D>FoH4NHk?46 z!~{#|66K-jOJViO{^l{tYO{AxJXsK%IYg=VG{i3Lo9alIl9A~4aR2wwA#TN4+Sp2^ zLqFTa3#}e$@}C4j^K`;(S^e7K=2L89#d#!uRF%Vpx{^1o8=ZO}^gB4Q7D1oN-%@lI zdz$@brFo>crYwCHDZJaCXLjKZ-TD8rbvn~TE_d>Lq`IeT?X!EU;v%j--1bE!K-9Xw_Odw>;@u-LPnt=E7!^tc0(b zB4vm`EDi+wO}QWoVgAt^&1rIC09|6})g;SR!I>&w3Pu77C&W&*B;y!7T_S(SQCu=D zSOIr1pQ&nnLIC|l8ag#uVXTT$(wBET%%74plW(Xoo+3syX_}KxsGz&JsTOTn0PeC}(W?a;Pwb4+ zzWwMoNM1cyWJeu;KMb8X@6-=jre1(*%ta@1;rD~y$G<+;Hl5!m>-&K#c#eH?#9s@X#qXhnYAokm~Fmb6U;UPchg;t zHZHSl{W*=Z0zi1zuR*StZcgmK&^cEPiGR^KS(>pWb-{3FXj+3Aw^jW=r8kotoNsRH z0De37-`0|ODC@==z3!Xcg$y2B?&q7uYB;6E&s+W$-tuz+ND7_~O2TJwvteK8obUtFxoj*SONf3PBXDSE){^dgI2f{c84*Ot%B1H=Af0|3d*cO6WM3iF}9tWY< z8XoJ93Bp-Bh6MN|z_5=EB1bz~pR!^?OMVS54jCRc?3u>7m-(3|`qSr|Qj3+RzhHs>O#Fp9Nuk!1 zM4EEo*2Wuaie(M!(Z!!~5NK?}!j9X0FyazVI@kN49@`*UD2k5`w{w8HEd}$ugME;D zMa(hzPM6pIq-^M8&i%mK?F|zsvH!NOJGxiM5#2ji!_^BAgb-E8?-=2x0P>}wVh$7l zfw2>k3NKaY1!bOyqJ^3ks;PG>d_qDBBIlVGL^Y3r=7DO|@!eJPKy5dIIi0vDa;!HJ zREfG+3e$t-(sd-PY=rs%j%~pbB#Ih5bw3(GoiofNfMsVdQ8ikrG>OxAzC_5)Nn=Gt z^Wb0uAS9u6n1!cHLz>);LayW><6bFd3#Y`P9Gp;8RS_n!Qn_sr1hH%)*2$5y6O23@ zPNM6>$txV`N0@a8UU~{k({p}RcbZUy9!#h>U>~KGBl2opsi9S-#s}r*@@G+9+2EQ zEd`wBk6nUY*^eCddt%Do4D-#W9fQFnbToh=x^$fNE>qt~+f?R?2Z!mwL|p*73C)^ybr$*f_V8jb)hC*Ufw z$^jep%joIpQ@CJ5)MID9om{0YJOhcG#~lLv=8t#b0-BViG|k+DA)){!s*pL6f=31N zt7GpIJ-l~zsi2&awM)2Pu0JT3bntr7`?fCs|0C}$qT&kJcFU^53GN!)CAbF&?(P!Y-5m;dx5C}sofPga z!Gb#^!Gk3<-}iT~?s?yJC-=;2de%C%-)Ha21JT=G5$v=9-f^1mCUE&UvS?P18C5Kg&5NgSS3=9x7_TouM-Gf zDi{MvB<(lilEgImRfwqF%dR=oB(#xL>3VU>zekt#Sys>6M_>nD`j@WuQcb{rLDwT% zPx^(Yk&>V*N44wnl~$by3A~>s%90LbZLlS)PBE@A7)j9fGF!3Rz(O)cwPP^MOv;`3 zC9xm6`J^zy8G5ahpKUN7xEn63P={$oNK`{MS*>+peh-Jsa)}8?EFFpW&{*VVuVa@j zF~Rr{@P(9Aw&1>e)>Yc>(l)=UbFfNAso6 zGk&Q0NPfCyTfouLA#$=2g@*_L=D5@Pl+^ewc`gFerba9mLVq~BRFEKJ@BBi&iL>S2 zvyC$7HDI^-E2FX_vybJ=g#LK^!mV>MN!lg7*--gti>$lDqQ22;bH^}}kcR+8mXM`F zLIPIbW&BT!)*R!zSMUHT57@`cY<*X$Qx`X(v3W2fJN$B`QYt{H)A5mGDTaYE`{fhu z)Xn-oC}wJ($xkcI>bGX*O)0wd0<*45IA9}{q=Bx<`4&Y<1h9~&0`#Lo1982z# z1;5pGg01%EJe2~SNw3ZRXZS`ZCkm^$}zOu+@14?nphsf_=d>w&E-mumi>T4UBo>IMJu9`!k%PPPda9B`Sc z(ZJPyr?+fM@wLErr0K=DvoyVO9=cBOdp+pXeJJs+HSv23JH*W3flK*pn@)#(RH3vb z{K#ZI){9HId!}uBcbmJi>NZUH2J*7Xf$4KQa4x)LkZ|1bkGRHb4#00U_e-*6dyw-0a1_%|LLN|n@v{Z(a z3U1mq@20dmZEs^0ErL^+M_%xCWY9*KKgtR-xlE80wG)AsbPYU+@-+C*iN{(dST;jd zYgG52ncA9XXrwDe(ihQOY)s-)xKM-uYktPqFwstdK0~`bCG`y2ABl%y7HRgTC@(>51z_2Q38- z7+#0c^)v!*O=b<=W=;%ux1953k4$2a?Dd{#=E%Zs4NmAG%rr?qWsOhDUDZ5OEsa2| zz$@(MjZgZcq|J9w&|4?Z*Am}vgXA-k5r#aVsuAKOSQohm?nFL#Ur3Onb8I@VzobNX z{E=w>qh{Z!Vc)4{7q>|_#9w03FH<}!7BMgl$DRr-4mtdIJt!j3>}EwxCUhKYex+B$ zCm^}Z-GCc+&K^St_1X3gKjj1E;wPwdYSBf!(2o05Y6(M~`sx=P8KEiY6kzLy|%Dqcb zWx<5~n1Am(qWCy`WJhKhUIvA;Pq?&>5@!a#iWW~7AXApb!iFY8DnenDVp}SJqg1kv zj@M&RHq+S~h5-h@D>zab^2rJk$sgojm6g4hGac&M&7bfy!~hS1%|q`FkfO#$)Dg9g z&*h{ggheX$$@%jj+*<{j;LDyXO3Hdlo7#)A>$L4xn7)F2>B*U`DAR~$mgk7W?Xd~X$9B#H*LCm zKmu{E0>4#u=?U_m6i8Z6g-v3vKdMNnzpH6g39Ky@vpyH=dFf#CQ?T3>zl$w(_$ctK zif`dll|tS4DU&3T1YJ)Yw=ImFh7)1NOoxvgX>SV@012ozaGcpz5o38K2Ttlb`Fh#; z9oR+M$mQng{Gn@ZyY0$7W%vd~ve%LtsB5?uu85k*zTCbgp6A(Y#+r1#ddU0ihgd0Y2RfmGOMz?|5KTJhvwedpwKt3 zeB#20k18?j2%yXuCwBhoFUGmjlbmbx3KK0bF3qa?loABk9H2$}7#x^TuN*CImC6m* z56=~FdexqUf*p*TT!K#pBh*<9ZS@ zT*Z^XU4{4v1$@PJ)B@8{1h-m&Veqb@r@3)ygKc*sZ`*`Q`X&p zkuo#x0B4KH!QWO@9N+}8Vfy%z8Q9$t;99J8U%-6<~}B^NO~2zA=!O)^sS;Y*B1 z*q@S55DSU54j;P_UfMisx&^YkhkI0#V1{^tj5 zGJhWU-dIxOer~NcipxCa9(e{7@6sZ$?Qo66uF^oORr3Vf1yeCCiHg)g@0XIZ`7U4J@8AhOJ?I3k{S`yDU#v2CMlhUGW#8tZHU-b3j&?Y0sVU<{RDu3#%SXn*$ zX4OMO>AmpK2j9j4ZuHv35@YijPflNCVz~7t6dQ(ymNDP0G5^=GK$3B=(73O`$mNH) zklgXG-tm~N@lgA56!lRAzp;@LgQ{yLn7yuKIc=#d^0F(2xVJGI58`2k*81e;3N6{5 z{q%6fu@Q9IiKi$>G+t*J`EI9ITF(?@1{{yxt*QRYsiNsg-luOMlR=K`AM6e|`)jvI{bp|xGw+z?UFdGi>qV>|;YewJp~{k(Nr@mTdIR+f3} zzY=Wm_CkzQ>#wx)3+AZwu%Ad4=OKEVqRr_CGbE(h1aB;}NYn7tRtu)Pg?4;}G#sMU zm@`6aV(6nw&bXSw-%;P}qlXzFvhh$tyDa&?@vu`77JVeMUm_l|TlxR6{!=G#m}#>? zO(TnK8n%a*LS4a6uAIx5a}3ayd}fMOi?zHR<$ORrvtRWygpo3AmI;`g=v}pH%qh?M zj%?>BMOa$Exx~k;M#?j=j!_F2SI_U9<<6WddAea6zs>{Q*ifCX8Pgpw-Pq(Zq$qKN zeL$5)S@-IT3#;Svtr{4nUu*Z?a^_j}wR5!Mx3ikE^n#%Srv(1M*b?vy$$!vODoGuW z2MO5B{;T?)JM-yoEdb%~aLP}fJoWaQQmEtkXo@4wR^ze`=hHPz~?a zNd1r228r9$Pc@k)cbL@U64r}5*Jq;ci-D}W6Y&Sz>2~`!@=wdQe0v8t=R_NL+nu~y zlm>D}apalw+iYlHt;4D;xjBWIJO*xgwSQG7>(SY3hnpIXjw4oPDGu8Id}+;`CFSt* zFHuc?vT6I4E+`4?TmZ0o9qr|6AJLJFSVokCK{;shjlePXG zhswmVP+rl6=wjUtq3aoeb!pi_ezogmM?y0uM z!2d?J9YgD3`Bc*bUNjY}h+mvdsXsg;G#)HM@I!IBK-%$JPa`Z8x(Jc1r%Jgg{-Z93 z22*BzTikI|_z$}*;n%NbMq|g&&Gyi>HwUlEfBoXh7Ec;ce25>YG$b|69lrVBGn#*) z(eV6o_M0u-qhsKU<$c}B;TIF-FE2I5oL?W9aj>oE6iqW9q)i_@DIOLjs-x&>b~724 zVttKgEtWPMG(ssIG<3=-+iHPo|PS@q_hh1}*s2 z?WAaayXeyWPu`su^bS=oZ^YHKd$Tl8!9N*jKAl#THO~nV>$$sr52s(( z@Z&82nEyb$OEX|Ow9cBZ-+eAW+@BTEZTs!i^Qr$|#7ossH8H&?SsTs8m-45*m69^M zs}wyK-hv59N4n_W%Sa2ZiRzz)I#%8q_9bg!7Uq6ZTD^4NH_}G~Byek+2y~dhT9z`Ype@(S|8-#R%Z&hR1-;m`xqL-caLC1l2W;Cc0*ITY-${QKE~xYDT75IelKjqNHHViOSAOL<*9@Cd!lwwO$aj znrc^yyrIL-c3b_8I}4gl84lqR{#SVar) z7*If;cT$mfUpUH&#ak-=s9|{|hCcT+5Na^Og!O5Ayfe8(nwVT%>x}Ovfd)Q+gq#a@ zfDrfv48Xd;HB*^_rwL?GK;p7yNwrbgc&~%Z07}Gw-tyV7nJR=zMU2TCcU78H@)f_x zy$7-e5V7UV0VWh!;o0BdQ9}q(=BXsUUTl;FyVqcrci$BsXz}J7!QB1w9q(}|*ux?E zi}zKC>V!Rml}X0*Y20E<>XU!`l}8l%;X*J1@1DMN%^82?h1QRabgr21T20$!sNC)L zBtZhqOG~NB!lJA(sydC+x&`t*IlL0J9o#(JFhtk^LfzD=BeR5bhREJco~dg+evc)! z%@(-HM8H;zmN({b^MM;ETjCqh-PWFTo~vK5$4wetjxjDKy*`*26-;gpFScy#l?pqw zU4akD$~el_Oc~q$A5vAB*}4I($|~Ned(GJMV!4x%h>HsPK#svtnxaC|UyB z2i@qR3RpP?5t5JCsg!cZ;-h2)%nGtz?j^2nVSRYV8;vpYdX%~iMky0Gd54abeqH-=0VL7- zjvpx>SX;etChNL(W~&`h4>B%(^>mHCtWfx#ufyv+{@WDSaYaKR^T#KNV*?|9y3~@( zkiunk0)VE&2XVCRuSZ18YuULmy--}s*8)jgCuj@eTqhYt1aBr;|EDr%uRX=}pSj#V zJ7wOiu%N$WyU2g$a?IPr&hX=eGp*7*|DkhyR4sR-Z1>C_tI}|a&8uI7SXkLbXl4-C zER~1v*KHe6e{z_;06uNHzFe_kiOt1(ZF39McN&s^@4Bf)N* z2%67fiksRWOfThx_sX2zugBy3AhhoNyvX;;TzSps=l_T;pXbuuRy;1=#g;wYRsW@P z7rrn5rE@<2L+23geK9ltOXrq2{!8cns%SDBz0*0Tg2BD5AoPC^6WGB4?_$dWzq@xj zCw#Hi{yvv$ZRjq3ugsD8rfC_+ztcHv;r^SyPGDH`P45hh9uT8*utI9a5!N^qQBK9` zk}?yHo%?+*=lmbBC4vaz;5(iB|5KT>{oh3A7RiACiYHhkSO5Zm8Swtdz@PyEFmK-7 zTmRT5Wo!EQE@pb(jOi21ZSt+F>+LW4otfv{9d^9yfBXM_gBCi=FcT$?m%2{a3lz*( zy35t+HLTToPW|-#w%h2fz?w66+Uh&w*t2uh>95qV`TMaqaPIfZ8#p*5G%P$KGAcSI zHZDFPF)2AEH7z|O6Oxsklbe@cP*_x4Qd(ACQCU@8Q(ITx(Ad=6(%RPE(b?7A)7#ho z4LUG5G(0joHa;;qH9a#sH@~pBw7jzVeQkYXbL+?U&hFm+!Qs*I$?4ho#pTamzpt)u zZtw2Lfsa7I!|UHbI3P04+R1dRk7(3-|<^()sif&xNzP% zmzjK(M$7pGq;+XHkEbnWh7*Up62Q%nV5m<=uGjYU0|sQGy*@Y24F(bMXtjQakGUy- z{7;8-XFZb+BaVG%(*OtrcyL#EqSzicVX|W-@Mt+P62A}lsMug-v{<<#X#nZw76fAL z{o|WhYx}99g>bi3hi~)~D`d*DU(o;u41`Z%GRpV=^dT7Vhlbm*rPD(N0I@R?HXhLi z`RJdg#x_9jZ*!BJj6}9z&A}f`dTQ5-kf)%hOd&96)nOE#fck3s3QFi+A@Vxvf&T%Zq;;w>Jb z5PiRw!Um+WK*dIfH3^doaU{X+dhvf6k$zIw>@pW^Ku{l*_`f@NqRBDk55S=iz+I-y$ z47%3bT-URPJ&-{jKAd^{f39%tj*dBRR@BqO%hM^*c0D{5okV{I5&wK}x75uc^)$C5 z1MC>s2f;VCV%X1kovOAuC42p6M`cD)Y3(aFJ=0yLWo_`sj zQa##;TYh!gOuI1NO7a)C7@fFmjH+j5!rCVliT|F@JLYij!ceO4vwDrtZ3b`ZVsT=^ z=pH`qk7A16(@H@J2R>m0r4S#`;|PA}9dWQ3h_gqOWW0u*lh5TOFpoQ~?Ui5z!=X@w z3rE4Fo=Sqd)f0ZXFH!P9oPC)zihd~!4RAVth+r_-LJ2q+G%9lTVk)Kh##om5oD2

0^TIYC6ANl4fRk=l%ZZ>arT(~uaZ*nvPp1F449e{9w-Q(l;Nlox~cBMdq zKjZ84Xew#1Vk9(KvaAx#$$9V5X6T*5Ow*?|_J@Cu4O#s^tv8u?wmJ5fLl%X(?F*E@=onK-_R)r~BL*^s5 zh+=%OYQaYCX!uofS=#oU+68!A+}x;S`OE z{r=kE!({I?oJZ7f9SgQV{Xj}f&St4@unLMIMbcx7>%l-W|A#G7zRWt>@`04~%~a0% zpMoEfm)s}Ru^A$y#er&ZSa15=r+0tkSyyO>Vf8*%WyMsu3o&a%8609R`A7&rZmd4# zb_%-D%>|Cu0y#iG&~)71nqXwHCefx#)z(qWzV<`>K{z$+tLJ4zCM%hqy#rod^yOgx z12Rxu9{qvnoXl}cmQ0dfC#)WTY>1}vnOy==E z?S{YFVj6MTk+0Z_^8_R!WJzH)UbI$L@f^@B1J-HB$T!bECjgRdiMeWcBk~=I_}TTZ)x^r|3{Wl@NUm%lt?4^v(eK;d|~i$4MI<-un9f98$y+ z#-(ua24WBy$@!Zm&pnbdcBj;kD&Zf;kZI6@c+@e(wK@2d|Q2rtlW>5+ew+1bLm;V*a&N@O)!pq}ctV147&r|#vqnyqX zL@M|Q2iqE~fDuAj9K^XKX$b+E^NGntMMM`VIgCptc0>^4MfQeic2uxVjM}TFTBKHl z{U|d=IglP|GD;K`H5!Le&WNxZluU1pV!1LOEcG`%aZA&omeCQ7>jY-5eSHx(7Iy>C z9=Kb+J@9iciWMW+_pREzQbl-(MowMBH_900(}~Shm?r4NnzoX)ck1U67`1rYvCKyg zM&VSdv+xvuDt8H?C}f^cm&q&sY#kmB!H9#u@}oG6sY;1gpcfmra7g?f&9Q5+E1s}J zE1TFsWJV>a8pV;$rKqw`r5z@qxuoXStkY$#>S!Df;Y;Z8me}TlnQV)m#S`o31Z5Iv zzCt|NMdSV=lF(48(C(3gho~PSKxQ0-e3F>=)+|bC=$q+LrpED(g$5gl9NOF=jG8c$ zl2V!0FrWBAv=b?D=AOEhp^am9y$?K46MCP>R6_z{_zylQ7*~lDNol-q z(6k3_(fZMNMcH(2s7$G5c$FJ1UkQalBo2w{M^96BY)^h8OC*zVcwf&X*2W}40Q zi6sz(%vgOaUCfRIr0~Rs&=|B`iERy;W-p}FvNSPhVkHA`GBcAJAzdjPqMDUaQ67CX z2;skqeF&k;UUac~;QfoO_9Uf*1yqJL`SO`2#Tbxf!=_vR1oFk>o4n6unops0j)v6* zjY{Sv(dB??vyRl501@=25qQgC=+8r-M=WM*$xvvyfHgMKhpOCvG6J8Sv&r8Ib9mS^ zby753bu!hSfVkcT3DH4vgYTcamcuR5v?p$V7e1EX>pdP|*LP$S;3f5*J`&xJCN$hSbG<<+7`2A7qj~cDf4&}J?BMvOZax$j8);kcbN+a z3+Bhk_@g+#!;@mIku0O?Y`p? z5LVWUe*gM2bGk?5d>9q39D7oUDAecTuu42UwtK^e#JEPJ(7zOxHs(vXJZ!0O5=#)L zep^KD7FB6jqnlBMC)l?F!bRUFN4>@1yUs`jE1R;CQN;)!!_Q%+kfJpd7Jjy`r(9e< z!|%Q{2^#3EJ6Q{gSgmup1vV2|!*-e9A;YLY2$eMl;2`KINfd-Hd!6m89U!HpHdYnG zgi!4|xzI zl*%%^RBG4rLwmdBReQm`w}YLzK@L#+!s>#$^It}rju@=`gLjmZ;9*unybm;-siBd=Okr4Q_6BnM7q7y4X-^2$f``Abh91?(S`ueov1( zQ!jcKa9^-@-~&BJ61dZ?gW^R5r6)#B9rm_`LAPB3_H7q%?AaPB+Ll|Ecex3Ze9<|W z)3Pt0RI>^Co=z_8CvmfviL4%u2;Yf<_f5@|%7}}0rvi~c-hz6!@5_4~UB5q63OXn# z@m3SI%m*a*kLio1m=w#G1TaO1QM2KZeAPjEozhlpgOVBa;wKHgPBI-4D*~A{wZ8y! z$3Tc~^bb6WHy5T}y!r!T6{$&`Edrp<=axW5sOt-#)}@J}T<=5;HrK_Fw0j_`7IRv5 z_H@L6a`Cs5);_UxjnwpPZaZGG$@fqSvETm(zx6I?Fv^WbG5>cQcR7Y_?e-wY?d31M zpZqQSJc~u#m6v=+pZHkr(VLyM@*uC<;bjBA7}># zTBKWWm7ERYdGU1`;Fhj4=8hl(+RK}adfa!Dcc1hH6So> zLQz07zG$^Id8HL}hCgY#9xHyvzP9`nhKnzm+mksl7v;FJL8E&1kYupW55B}7-UG$- z&m~Y6fjP#qwr4A23?^8&Wnwi2wGxjnjj*-YUyW|pf=?H~yXT|b^H>K%jPV5(+ku1N>-P|Xn zd;xF)8DMrichS;#+2d_v?%9LEd$4y+a^zAX|7i$})`R*qJ))zwDCRXt04=gFoO$-2 zj4fVfxGKkfHJZ<^^h4m1v6}K%UBI7@HbPw1Wc+SgXoVC1o!$7m@Ch-JPA!imH^6`? zgetA|4t3uis9X;7D$_Jp3!fOUjQ<%X^=BbN%cp)>!?4dQt;00_rE6aufWw`WVt*?X z>iR5M;72VsYU)bPtvPbmUCPp79E0-(_sfsh3pX04D-8?pqnFj5HgS#&?lZNmFj7gjE$zL<{PW;_vYS?M9g?J0b)cQd-zlj>#*H2oRd5e++A8p`vUVdg5tG2SQ z7N5)(xcBd`0Mj`5isFlRDfVjmxBUZa(qE{+sUN6lYAI15X;z#+aFCLXSeAKz&t;H& zeLjTW6UaJ*k7a2us6&oOE6ynFPMP67(7KVdauc7h!oS1yuYi$lfg=5fRi8GR5|CJd z-D&nXTGIM)293l+Wq0-S%F31iUN6Vmw7B-!nZra+0|sC_?Osx8km z^wY}0WaHyKs^wZsr23LgT&}P(-viFYgFK+CkgSNuOu8Wm4!>c^HLQD0a@CPH2U%_9 zNcgTNS!3f6jVtKhCGs{`?>9DBgzIR>N3Vi@3RaEy*zqa|rR1?4}{-9d#y)mfcc8>4k=&Pf- zLM>rY(n5n%VD8zh|C1fzcfIN;qkVn9_P&(){wzfV=|be%&gh zd^IH7N?Mdj$?|fd$?#zRQ9>*ybDHts%0}uI+j?$;?ioP!TlK+VW{N{hD8Q}P_NY8J$Tri!4veP7MozUw&OZ$*=nGbq3qV-fdPOM~G>LW4d~6R?IAw1C0s& zy({PZ%M~H$C9T$dnR%DlV@0ds{e&rF)ZgPf8;%2X;cKGegLKLlL(dIC$zsn<$8V?| z^~SNJ@8h_g_&*#PCo^6NSnMnL_4(zXo<{J+hUARKb&?}C9)cMzVA4o1;XqzwQijQ~(Q5^Ht^XCL+d!ZnMX z;3R7GY7$BplaX{bvu6xMu&8JjpW7dcJ7 zn{9W9Yzj|un!r@PGoDJsURS%>BFz7jU3sCwhbP>RQO9)fm(r2sQe!;k}i(}kPh@cglPpVSQ@gT z4D5S##RB0ja^?K%ef$#-K%qAh7DSG5TVZuyf8l(6dy9k>HS&RZ919k6*3?K<+yR~% zQ-jdncWlI^9T+elFfo3FlCXlnVXL^_JECVlQ}Y!qO$PKMnY%G4qQ+D^fqF!?1S;`1 zf3?EHIoeMT5Izk;3=#>!7F40!H(n#25%;Tv$s$ruqDf+6K40Xyk;5nrwD5xQBvC5U zwKCP@WND%((N;Dg?ha@9I1(=ACKeW}J_A|gDM-OmMye0EUQ9&6WJbM59gw^zxvQe2 zk!XTS_!7*!biMkY6(^_)V$Yhzxl-VYFj}z(pel@oOj0~+S*3&@s^_^aV!@&|xqF>2 zTV_?|FJ25o0m^|?y#{zYrjpSth;{=peb_<#8zGPW1y+b5qkTmamX3-axpkFARbG1c zUhA&f9=6d+#&;Ea^2-CPKpO_TRDRC2KLi z`J&1qVH)^LXRNfpexd{8dxC>r5x=|+2Ni`c*)bQyMA=;z1qx{bJ6TbFk1>B@Z+?%8 zkeACdEZvu*C$^(F51>fv+`u@|M4P3EV0)&|MvqDr_1#T$pu0%s_?yq{teX!@nU!A< zE*2qqn!v$*xVno}^(Ah_rt(|So`0qJqYSJ!SDkcAVivBi*r0qm(stIdkDG>{&< zH{;V8oX1s{AIZUR+pwSJtN=fdFZCEZ-u@=TXQq4(+X5sT2~T++K-I4H9sJSPybzmw zE*yG9Q)N!#Vk@9@`zTkkPp77Rr(8?$bm7K+vX0cQTO>){FQ8V|2AR$OnkSdFcX)n> zuMuxg;Z>ECyVd^_)iv?X}1o z>?yf&Ec`rEA&AmpxVr9tCJDrjU@xSc;_$#%qag1irinS5ArR(uMvOt?g% ze$E73_3V~&+zb;HGlY}ifL`7TWtbU`QK&WJDDl{@noUXL7l;86Q`Gtu%!w(pBaW)LI3tG;67rMGUmX;$<(_hwS{7%8u^egIGXUqNtCW>aLMZp zx`GZVGB(@8`D^GegOnyws`Se0Qx)yqdb3kVZJMNwo;ecvvlGjX6J`+o$h`kRL+jvs#$bKQXMn1Fo-)I5xk&Le92YEYt>bay^1T$V>>{nMW zs-R}mGOo`FiZ=68wWbwCjotK;UR7ZlzAL%La49--$lr*cr#!%}dG*~(->$hU*q*9l z``cHf>?L=jN}-JU9Ymp#&24;IG^cuIayokOy% zp(ZKKuOm#b>+HTA+12CA>c|6VtB8hW%+rh6!0**d&7YxF_Nbz(~cWswltc5 zc`+0}2T*T0a;Vtfezqvu>Tjk}&u66{DK(^fGdrIx=?tFYbtc1slm|8qBLlrUI@<=k zJLD(a4V{2bXVF9frbSEL^41mHxGUKs>5eS)A~_m+uJY&k9U0o_7Zwd3X#NEgA2SB1 z=2`tH6hKH$nS*DpjUfo`3`wk+U8Q}|H1Qn(?_zop*V5(XfBHSDq0}4s zdmUD7E^y4#+uO(BvCVjLbY}%s6feLyF`AWqBrG+INNQK*E4O3v{!B+JL4KOxaY)I0-u9bP`+HslZd5}Kc9npMkI z(_q|@hC|gGv&00E&Z-ukFIFSltH-JrKrnc$kUA}ruOUAkh3WIu(~QULSj}>kiO)E0_ zrE~k0e4%d2c9Y#W*>0x-QzATHiVmd}?M7 zh1mQzkaRy`yS%rL{+6@Cz4DK>7|s}L_7X5CkL_9a$A-VY_7QxmsEGcWG_?FlDAv?* zYJvF|_eaxx5TcPOSO`24XlN}HJyTi@nnY3v!Z zT=-2~+T!i`^62rdg8uJ!wXmWf%oP)uaeDV#2fYV7+cfH6TBBcocxF79q_G7Pmc(~% z5Or{a1e3senp~pN6BhOL+6) zaLYJPH}Q;VF!b@*qp(}D0C*s8)ves2Zad9b1BG~$4w{4 zq@{xQ={YZTKu9_X1C?@VL)beN&Zq5cgcg2OG||(G*l7byG-}Z_m0n zk}Y|_2vX_1#_4D_soZQ}k{!X6{} z*hEH)7l65%`e`M|_bl~_D$~!@L$Heuof<+nCT%Ml!8O2gUHVldn9ZeGR)H5ub{syi z3g$g2LB5;5_#mo^?O76`Nt%@s-G9ygbED07G-cc&_;s)`BXj+;qkIJT1V@yc1`4X9Rx#Z|`}`%x^p zOE&}!Cx~<{Yr5(y(j(_LYfD1e#0TDt39DSE1A*>8x`>hNV35oZt=WrNinbPJ5JyV% zd?C;_@^YP@Q(A}cNptmm+jd@@`Q7lxgyAQ>5}pknA6kVIUbh1uvLjuSPE&q43dfI< zrirIf8W!}*Qe4uSDSy-QyhRhv5wT#NVKRLJ+2~|G%h~EqN+0l-)IszMeFAPLviBpS z2tvIRu<`fMox7+ZIzr6jniN9CZ4o3v?$84e>4fI3Er~h$|+7 z?XeL=Ib{wW6^BjNxZ!7rlQLA&L;TyWl7a*CV3owwrddni%vfCwl%_4SEfdMAOoF%Q zT7)2$W}$cRXx_^%J)4wt!;NpKt7qe=ArW7jsWZK!Ki_KkLpA2d%ze!=4(#CW!B7Er zti~eYj!1rrY6Yt2ik)X3I>xVvHVLQI`5?i@1HHyL(@KA2Uut7LdRI5?2tQ^_IZaD$ zIbEcYbIrd3j0jAydjeGO7owjxYQ7)m7~29i<*Ki-xmhFp8W0O8Vpr|$_lfgN zNxZNvzmg@>jGhL!Fvf+y@Ep=j}Yevb2SHsFHc*FwlviC|h?*&RfWXA3qgtK^Ye<)&T`VuL=q+G)ceLTmlNQf>M)EvL8aV zbu4kn`^B%Rm*wSTBx^(qrRLvbT@${{r)X_y;JA%v;2*#mr0bPe#}Y+pw(DTb2P zl1l@4#`bG-X5~QRJpkltfUjLInSWsWNux%oC7?^N*PqD-w`C42^E_sbuTiZsU*t+| z;lm$5P2YhUJ9&$r%JE}NnvI8(AdXni3r+C*{LK8pyBaMY9ebY`KH)TLosj^Yz`1MF zHJkR3UCp?MrP||cj!Sc|W%1_6YYtXlEMWnFJ?p#KO)-@34>@|}Y9HfO_>69D4auy! zRhET``25S)B@jajgyXVBu;#*yfU2R)g1N%?jg@aPEYuK&e|3?F18CbVU3J18Y z%kFwJ|G?3FsA`{8X`jxk=iSZnCfKkKn32z3=ONitngLaYCgGzi%T*esH&@JoPXY6h z4iFZEeb=G|$$e~>#GAG(cjH3^hYI?}!dL8HL8*+FD$hL%F1DlF$y?Tjx+1hCxk$x! z#c73%&BudVoxV4$*cpsA3oI z%@N}{pjZ>KY?Q8~+|udv@1oB-j%LBd3>BomMf4MiwC-DSCPXtt4L`pV;` z42(T6{^99nuMQp5mO1QB^RD7&gFP`v!Y_zl=GJsX5K62x z&%)|YmlaNuUP2k{W4{r}GRRxF@l+L=)1tjw%&@i1kN9LoP&!*`@UIHDGUc*3Dk7Z9 zi5AA|<>tTDmM(zgw0fvL9aaz!KCg4ZzJGgYtk^^_8ayQe(OZdriSy4XiIkUz?L%5g zTq5lS_7`~S*Cxn&U6Fm)zB&H#69PV1s`cii|MZJ6ISTRZiRxmyo?aYI%r#KlMOR1! zy^?T)xD1nScbs_(Vtak`(zkP)6%B)Q zsbs_CA3=Typ`BAZ)TzMK_s%~mQDEl(DNm+{gthGCN5Mz#>mX@IRh-2J93X^I$*BiP=zTo-UKaMEnCf-sX zy8k53JBN?-%M^PJ97}`DF|s*yIy)D_Y@&u~)_I<7N_kGbY;a#jG#=Lj=@f^YSuu8zT_-)RoM?JO(pWG8bo^oP4w6^}(F@dVPw=*=L3ec8`9 zaidl)61Ioe6l*;hE?u!}b0CM#s7y06YQh*EwVLvB5E3oRsHuD`i;Fq0bkB(9Hw?B z)&6g%m|oG`uWsQpc{OWqJUh4(j8z8U9>tWh3?~y|@eYCk4ZGkezf6TmK4`_3s{HmT z>Wq^89UQ)gwJDN8;--& znizuI#El5RAre!S6PXZuHpx0lt=|Z>9%k&K3c#lAQ^Uav&Bri{5c}dr3i)!Hnxpgp z#X?BV^w*P&T{(BcjEWYpuAM%nP*oTYE2Oy?A7!gOZPpw!B0+D6G)ct_hA~M=F&j@g z5H0?&N(JM*-UV6cb2n0!A$`VoggZ{j5 z*Y}YuU?&2p{+apu;g|r$6AIJzA2LwV{F0=x;ro zJ}Wh2do=mCZFN3kclDera~}DcAeO1TuxS#rg@?>cK&uyE; ztnfKLpY`qfuPHdKFsJ{NCw(KLJHGf`G|w9;9wJOAe3mD#=ln!L|AA}QfB(U?B!Qz* z>VM_Q7RMfg`Oos?qb{@aKer8;`RUVb3w#mxW&T&5MAmxfEd4A`UI~l;{e3sD97K4# zniTZ+?fUlj-@hNoB99SY{=v2TE9-x7&38iY6RvgkwbH`7$m_BBqMP+qZj7cpP){f3F*^h;Y5n=;MuGI!EP3m8SvemXcO{o+M9xj$r zqe|yD)C{)Vu1J>d@JoRXvqS(r9oFvj zN`t8!ygrf97Am9mSTbolG(lJM;dD0fVNY(?J%5+DV4M|o*73=YvwfkzswwPetK|@A zD9H`&LPIpL2n+~4&op2V02~~p-k0F6t_Z#GZvMLK}*6u7g7=O6Ue5 z^4$>!?;}ls+my&k3`8Jsfj;|_A~FTRv9Ct02!#D$_VnSiDNlEn>rB*C(HN*=Hl|ql^ zwUQiBuCo2`FkJ6EZO5u{C>t6p6;)uqoJ(bte|z`|1VauFiYOe~$N^e0;l^nVnLj*9 zw0!Johzgfo*Fpk@M+cf$=@4CQE!ds8sd94jh<)}))gn$U5`G5tMJpBxesL~vXUeKR z47G}+ZC8&K-DxEe8?A(>(d(q++|b6P^F~Z{BOi&ujw+WTzg0aUIDk^M7tA;}yY)~i zyFx#u+mBRe1NsxxZS*~g4F1@o7Ypg8Q!tN2_7Vs$MrY^SYWboATF}Cyrl}ieAQo-< zN|9A-FNB9L!;G5LPT(?_Cx~-D(u1eNo@!`S!(MUg?G{p7!(KY>eVtUzyv7AcqksLsP!?#S+u9FE|bYfU@O}Wo!UU z2taRd-_z?L%yz}ee}DC3%B@%SRw!~YPDm@2w{s*O@FCm>X4Ouv%y3`7-!E_n{ni+X zK{D`PeXHME(zAjOy@2t~Ff@53)rS`vL?S7gxCqLAfAGbmZeKfBw|;7ZK;`JVg;#hI zs(Sqj_cz^>1ZgV*;{{~=8;hs#%_c;m0zDWC2894l?uIL@M?;c9M-<)&CCn+91cvrR zwD&L`k*t*jjNjbA zxabCw0K0@ztHnwf#AK|OwNe_SCn%9bSDv`qP+H~F5k|1eWRJ39Vvp1bbzmwNIt?&q z1h#iD|3JfmZ5j*p0IPb-TJS{_b5M!{fp6n3UDjguv=DAscW5``^YdY1Mb7Nr!&msl z)1#c~P9hyEW<{If@BLU>Ae?|h`I4|7B@Td|$0c>lB=qAr;H$LZ8G6P+c((9|4}pFA zK+Xpgs25N@ABr`V-^U*kq0#n{Oq6KDZ`5?$BlnbT@nlC1?y&gTBbyH=Q-#~(phe6} zR?A3iNk`p;xb>J3s<6Ze$2TzavQp5?LZ9XUfiMMe7Mt3wA@DvT z%2=dF7?x^Mtx;E~d4H&37t08zGh0mvL)~wvTF=1^uP$#RMLzG?5HX;pj`WLzMNsf7 zh9Ty;3$PkJS}3E6?Y2h#6`pZ0_kl-B1Y~5++iA{O1H4Ae-Pj4G&jM*$PVwQUbT+pY zR^Ngf$>vkvb?XdGk<`Ws{?M9E*SjtI0?TQ5p&cQzv66acqL*sm>5}n{(RQ56L=7j9 zY8XB5GQxSdV1V*#T5IJ8&Pw~ipss^@oDNAVMmIC&kVn%d&AC!m53_GwMj%e>2qI_d zsK$V~>Y;qg3Zg0LCGISZ^kmA)d9VEzk_mc~;Z5RrtG7?R5jX)EcwEK+ol0#GQt&PZ zuJ_=RJod**4&^va_*aA>%?R3|G_tSGrjAg%3DMFDo>K~Lk8(O;k1Cs^^;+u4SmzEN z#U`-)$uNvW7sTc>hE70N4GUa&{ofVe+A@_Bh`$tr663hYOhMqrw)8SBBUz;NtRu-f zc;WMtxs2R5qxKJM0Rsdf1j3JFTq1SZRbkveL=#1f_ND8hw^CadojNTaEJKx`uv(mG zZJajr+_J;l7cOZ&Qr%?na=LB|VH;kctSZjp?NLtInenFVE0Djm=G%gvnxgj)^OL)N z9UE-`EKlDJ^;xS>EXhEV!jc3TNh8O%qjL<2yik?=2}i=7zB3DNoOy04w$(zukUdyj z@wx5&ze~!8L^p2^fC+T5z3Nla9zRlw3+7NEH-=$%P6b~VY;Lr&I0Yh|8jO=Kj2rL) zqjP6Xb!8W{S`uw3`kBnrpl`US8HIgQ#-0!I4WB*!%HAOr=X-*UKVPaDYEUH-TGo!# z_22hDC*mBL>MGsMpSMG9dEAc`uYJ{{4luGiCu_97Audu_;+rxnBVAGZt@y~Yauc(9 zwbhedUN0YgJWeSQ23qn!0Nc})#DgHKguYZT=h0*ZPbGo+(UepUsAtJnAT1titletV zxy_af5+$=DeZ|_>xo*j1fsyyRecNnW?Lf;+{OTA}Z~{YpcDp_IukY}Oe;0lRp?H(n zrm#@O?5+H~fFK@kPKu^hU59+#ABw`hvv(tnI$AALS?uRElAi6Z{nV`AMIXEnG0EYk$1MQN z2QJpR?-%>G6zLMKpP&m+`134P9a%SYVBRKW5dx#rzA?pyV9nrfl8eaC@NT_vL73Ba z$tm#L$NO5H%xi<{$9GKEkb|H?s9+Q_sq1AbsVAeld%GD9i1{b=4>G@cYNsn0fT2f- zph++kjR$~79xOVDw9%c+T=8byXWTRNsU3oJE#zKWv0xm0Gm`f3R{$Qm!UTuYLI zGiIAA@5+%nHw9cCb%0f}`JA=@8FpBQnzXDpy*!V+j189z2tpm!c46H6Rm{Gooom)L ztlCUd1k({$jV^IfHs!_yuM?7vhgfx0`0Y8;@kGzLljtiBjz*NUo43C7-q&L)RRE7T zT84tZ7TIPLDc^o55tt30TcBSG9AGTmOhrFcM?ktv-OO4sJzDzVIUHL&C<9gs5hIrH z10{N7&sB-bF^K}Fo=R0Mi^b-b{*wh;c4L%OwAiUstm1@7N3_G~QH-{wL>~|7kd0=W zq^lo|@EDIjshDG$xk2|n_j;CU!!gbG6{@=>Q+p69fGgfqM6de=`~rsVXfUpZGx0JC zV)Zxyg(p_aEnu%R&K#3$d(66G$P{EvbXsC9)uLn_VK8E8oMsY7I%0ln6N504h#8!C z4<3&;Dnc`!j3fbBmJup&lzcd$^I$_Ul`719Y((S93g1i^?-n?V>NeNxroU%ER+?;> ztPOKYj)0N&1uQL2O3z@}pGg*i4>z7y()Qk)6aL5`le?QzcKCXFK=8!B9Ub;ctBB3p80SFvf2$O!;?Abm(F?22oQ|WXnypWn&vKdRlZ<=tD z6M&+QEZ&7Iy%TT~SqB6tP5~}&L&-GwXqp&k|48+|CxG{CH4saAnC)eg~S)n>5)*kKsq z-eKfEY@0GJhvouZcwZy#N+OeMqa@3*$umTg^D7R4ped7m?|LZ-9Y0Xc3TFkWOU+Mi z4rlJ-NHiNbc8uu^pLa^oZf-qemEpDw$=OsKn118MaJ|l3eE=VXysP7~XV`BY;A1&+ z8$g+d2X2hcoGQEV(}J6bY`maNBD1IZCRLmRj;c5$OTuj zY^B8f+^n!??P_{lX#wiAij&k%eq{@av;jT_8u4gsRl^zo)uO%R9 zua#?!9B=dC59qU`m>O)BEC#ulwOZ_U=srdX`7np-hX(g_9C%k};u~d5`$#mliL)7R zkA>O6Lza{qpM_LTLBb{GX=?Cv3NN(zGB*7mS=dYt*p%>b*Deh0PyS#t&>`c!Di7mTp+8v$ZP+Q(wFGkeSz*w1 zE!lsIf9TJB>P1Ai;F}c=#&OekXme28}58V5OvTes%GuCZY(bFbZE>Q@SpBQ zHef~V9%3LE^umDj5C@mZqhcI!k?^G>JcI1UWUQo5coZ8vAMb~I%s)Ga>_ixz#RoCH zo2&SZ9H2*XFnm*ur)bT@iT9%n`kaU}V2kg8p6GCmJgXK1YZhA?X~t-<5$LADhm_L? zx4MW89gLl8?psLp`nyQqjs?GF;mWEGg1~PanTQkcE{iny-zMS=COi$kg}+avZ%t$x zOlBia&M%Iwa5gs4DVKae+e-)2x~^!oz2U#I_}ELeD=Um5)>J~F<@als(BO?v(X**? zbK*mq2~iJCNV$l^;2Aq);UBn<`Oi$`&nRbAi^dH&{c0jK$woyr@1KE8;i+Bdjj*x^ z!?^u6T&r4l$CSc=IAq;Oa^tfs06yc}bCdh8Nony8dCrh%r_bKK?2MV&+56iXDH=&& z%4dF2GjbyXUI838I_FmvAb86XIsx2{(`GB4l-AZTO>A&rseO?o^Ac`UEn~q%uFHN` z!$V*0S5+PYV^NqVv3NVn%P3wLK;e&A*``RwUSxJi#w_{}&~tsxGCBVALKc~8;aSd) zg`NzvBJ(UjxZHV>ok^GI?d$^lfui zd;$rr`#VoTHj?AQ<^2x2YuqMla8F@A)^4z?vzszg%-F2$i%9pi9Y?*kTmf_BHSSCKfc~6Zfr5aOadG|> zwyubLh+3R9*5U2o_Aj-CJjpph3e&d9+CK?+i~2I+6E+Z}T^^=Tc6;)KXvj3|88%Lk zmN%!a*4E%AvwYV#;jqd&akf~KwZnZVF(^62#Z`N5vv|Xepe-WjwwFDDDHuNa0y)Vm zjMYB^0DK=lX;%R%Ml?cuj#}U$TO^!2utQqucj6l&wX<96PW~wYJU?UpY?_;tLK?c3 z5MultBSd^jG2vn^-uV_o!W%QD&%XORe5eY{9jY9i z!>c4~gK7@C_|0=wiKE^sr@yLl_`2~HVyJkIEOz7=gO5Z9XD*)lQYD!kEaS-~{UoQ< z+g`uX^~2i+>|R`M%Jl=QZ6mH?R>P{JvU~^wPo&?l_j1wPt}PTe^Gy04i_R?BzgaR^ z1tKbcAZ@fSokGiGhW6J#4`(nJ2PMmIe-Wba!0@2x4doM+jn4LEM@#)xOI=}4Qv!6U zf>`?@^21J0PK{8mfhoAGo-e{FC`2frLy>6jro7 zWnE7`A!0vFdZlMZO?A#O*^WVp%!cwIaXWG+$Y62YqgAg0=T?vX_OTyg^f(lU_>wEX zfKwMs%`Lj=#qkg_FU*V~ee(J{ZsoUDM=rN5-M?3z1P~Gif@X}qM9!ND(ihNe#F!}& zY9E66->`jiqSS$9*Qkw63PnDmKhHXsN7tBKHk*Gs4mFqW%Q8BQJ=3M9fHXzkSIavr=q_ub+!g($g3}@I%4mxXwT58C^m# z(>ITGo~p!>O^tuOYo9@?1f0MNX$Yje6FN&8LQHJn0B&f$y6MKnONyFBZLj|L{63dKT$&J^xT9 zA^py4)8@hKkRE_8pvz?PN8#w%0$Sy4!B!U0{27Dt})=@X=>GwXTk0y$)bxCHS}b`zn{} z+Mqp;Kf<0UvCgf@@h&OrMIJU%!9YlSe?}VGO$;dPMxLQ~VMig?1Og>tzSqvB| zvy>dDDV*@j15SK6I=E3dXUofabE9)8LF(}P;1mv9AE_aOi=y!H@FV{NDXfww#kS#Qbd&Xns4kS=B}iB}jhY zRcYqNu`%-M!@IhVhATzV!2_I&<-hcU!q*Odbh({B#InKRQT=exGCNXVQWE@1`Bv-@F7Wbe#~xh z^cLVvksU0qsc#J>c(ud}#^rBWx@lOS0*@MlgUSmG43fi|X{x|7cUD4~qxleEJ%P+T zj;>nG(v`^$y)-Sxu}U#>S9R?RG*&TGUU)y0bUZ8h<3ygf+*}SEm_jV>Sh^5~WH=Z{ zt~g0S`>U*+kr5V7aA7c!p1w&?swt?LdSX3~RS)`}oK-Bd1C^+qmChDKOXEudTBHFl zPS0?+t%VX!lIzl4-jeY%c{jHev=E%d_37Zz`1!zK%7P zf1#zq=%%h8;s@P8`_@Ly5HxfiKg%GXCa%#;jcx0u|1zGxatK=c;${?eoJ9?GRKy?I znYaisj4!@!CYukx*P*VhV^+b96>l#OvX%B{WOK8?^E=e62r}#a!gQ~L`=VT_CHGC<3bH&#SV;Cqva-_aI8pB@)MSS9m*I^l-dUd$ zpu7jgNoi4H=pN`ZLaATTvD1ClIRDRrqo)4-&w}&2p7C}P-|RqIGeUXC-qv?>|ML^n zP4+f?Mkqgm=qT2Z|6{@BWQKzieOhq6#(%n3|3xT$-}62#xR*X_(@#*xVQl-d^a<)% zd_CnLQl&mY-Q1iTyhaIv@kE#9D_AH?Z3)u$N`c+NO{BoZ-YQjlW5ne`lmr71H7R<8 zg6?aKf&&n};{P^K7c*^e=9<-eQO+C$H)8_tmOT=#5Apvvx`SpI_#bpf()3^Gj(&jU zGhmry@DxHItM)4-l2W~zBQ&Y>pJVrwOp{Xl58btvt+9ThJ9<5M3AoRICF<{JqW^O2 zQa>F#cuk;4fJV#PV5M?3RW6jT9bud_iF89wZ8ydAijq(wv=}%EPGg-RFQ@I4pkK#z zUM91ui{yF7&1kGCB)$*-OK2iIX8HirQWFUfY^oDhH z0N?kUYIkXvn7N6?WT029z|VLdb|Cm>udWirv*7>QNxj_iGl>T5{pJJmWHm%g+e1=B zr{}hkg#7Ox>4IQ_-sLR_NX7KsP#ipn;IJRi*+U`%NPzv2Uy>pEku*aKBvHenAaFC- z$PAoNY(7$r1ll9-p;!j2V>3V+ArEST*xv~>dni=S>_mmc0rMm&Gn0&D82B6lEbxel zU|kH(({dPP*ONWCDNby2Az3Tc6dS98=fgbQ@JZ8j%(V{H5I5V&aIv{{t+YHBfZSlD zAb|TQhJZ!GSbI`4x)jC41I|JyREsVo|I3{@rWT2XELltqYC28*=5yXr<;3r+)Nu)r2&F(OG9UAD(hq zh}ul)09&^9_3-r;BBRiRrs#@SgpL$7Dk3&L&z(?9N+fMc%rk>?E_*{LYcoN;a7cfx6If5bo%9nk zV1~;hJF(5E4IqF7()7@~c+F4$&~jCJqx4#aqv{jVc&jRSUZ5$XEK8~ztpzLH<|*jE|zQ$h_R@557=>h zx9doA42A31%)PC%ACHuZhln0k>hyB0y?unV*3#C&-uuV_*E)8AfMpr*lS#`V%owFx zR>|xbie3JRy!Pot)|$_)#6m#ra<|lo`9T$l^2n9RxE5jsx-z4H2Y!^Z@>#lTq`(=@I zt}80Z+)Z&o`I5c!3V_WgSh`@A{hQgPTK=VH{a+x%` z;nkX`kx3Bzf)WWH*2SIPQA5vyKBpXURdqzW=b5yngRp-ihEzJlzd^Z)`j91ta@6kE zRBhz4z%fQW)$Hj^5RIY1P`?bWpdyp{E-LL#2K|AuN)}o^ZJ^H>Z)_+ML36U8To*GCmlqiSt*8xd# z)rXBw6`HlK@qIfy20LP1zk0!LXPz1o1S(j$g!Ayu)3%8Bwx+NblY1RkLEi+j$PVDYCh+K^C z$7%8sz{`Q|Yi~t3NUn`fP7+?dNLG_V=ds!?-mn{w8-uCKLCU*S70H&J4~r^-v>2Ft z)!xac=73oX@IFHX#A@$Bxx@Hh+8dE}E@S{(VM8!4z?@^%6NK(4_}Z4mF+CW&<{Efg zZi#V~7c(T=;v98nhYfG5S8@C`n_|(2Y|bZjh&x*w43UQHR5vA=7h|pY52JJD%y@+^ zZ%qD{QkeizG&9Qj!EEW`7wGeP!SIBv#JTfDTlcP3Fk-*_;$?xE=s zz+~TEi6YHSO=;)3=O{`!vAs~kD5a~&|H5aY`tB;iUz%!o&Ey6<*XCqXY1G$PXadDgSET)SEqjParJ z1@ki9a{{=1xRIvT^mJ^vlg}Rw`~qh?4BpXy`FO_p?c8#D;*WB2y8szVZdDYsKw!x6 zxQA<+>M~h1HMS3n#(raJOC>E_&UgVjSAsbE48d;mt%n}s4r%|4EhNZ?s;_Xa+;rgF z=pz@9Q%GCJt#V;fsgglIwSDD&${}6wXyP_W8Tz7X7SEN#gxk*9JTyBjQ6d}V<(t+}PonQQt z-f5WK9R+JyvaN_KbzZB)KFv0w+^BRn1b z5$Jto&Uo_G-freds;?ceqPwtNv%9k*P~a1w>`s_*{rB*8RJ1iKL3kN!%}C*Fob)#@ z_O;L$vBmxK`G@1e$1E~|VS3QLBN4#Z9>(Am7;yLm{!D774Gx|HY4b!5r@!nam>lE- z&Glg|gq$AqCkg}WMe6#Q_yPby3QJu41Ww=`gq|GY>K=-hY*FHcb#=(zY=&CXAqXYr z=r4u=`hhAa6Jq4zGZO`1i1ddf^JJ0{6R`+K4Gl-u2=5}77RP~5=_Eh-%+#pSw~FEK za)rH`c?=JsTV)v^xw9UV!I8j(2UB>O*f8C%MpD8m!ahZc4$AGIN9o8=sc?rrnT5=^ z^Rxnucx{69y-n%%BS!B%vDy978qH;40X2`&kPs4PkK(DI@VG<4i}7%ZiNLH*Uh`Fm zKpKLf4|YmLsbGo6FpEX%OUW?XW2I7n2tQYZWpI@Hft*BT)O1vwutc2JkGNhL5hd%m z!NC}w2={j^Cm(h*IV-OxG}BjBrb-*uRx_nqsyLKiapo*~MK5ts7{NU}>?Ph1W0eU9 ztcm0%{@Xk;-Wsv&JO-0!QWmKO_^QI*=+7_R5~ub zpkcocnMBBk)EJAviAZnaP{;4y`XLj9)GD%^GPs4KGG?k~=_pZ<3xJVq%U&2;SszIG z58Y%AUC7>X4nFQEZ)dZnDxyqvS{;4iU!}K60;g8PqgN zOLY`mA$wc!cA7MvvdnTaPqeBC%Qn1Up3Wrb7M3Rx);w@x6M)>~%sfva1@;VH7j2tT zSF?6a9UrhbIGN1okX;z5SD<=&8CMV#|6Qs9Gq}?Hs!bv;D*38cZd8_OsjG)=7CB5F z$$i2!FzfGXF8@HF3A+X%IJs3Sw*Y5e*LUAhjZEy(q;DK>nYNiQwnFW+I3!USrJMx} zVW}F?$<}}@YT5#%QrE0k!EjqfO^9qqYX(LaVghzAI7s(cP$&j=+Cq+Z%_JoH2P{PY zq~X{&hXQw@D0LyRn-7?8JY+ame46Jbwb`as0^?qw-En-37OBOn3}Fe4<~=O9ZqXHt z>zZtVdsm+PgaCyekP6-dA=3HD0?4odlr8aZv*0A!aN3}Su);L<9H&ICw7%u~DkGU) za%aSs73`jw>ot&otP4#?$0VGbz2ogF-&vr7S1#&Rgy~((0O|6xoiC_@P-+U|B_r(8 zlHrsLlXv7(+?0zy20FZzo4^;QvC9mwmwSTf+^dtbb!dqBh*hgJf!21=WYGc}ke1>a zxt3V@mS#}V74j|-vd^GoysA{bs-!7VCq0NP>wJRXOhT5}S1NYxZ0GZj>?+ZLykH&+ zEOzoYNEw$=yRWMFZXT9XyzY;YGHfnBkCPhZhgFYUCL`XJgCz|48)dF%6fep69g<-e zaLToK3d!cC#&8M!_jXYz)$Gf1w3TehXuw9Zy1uiZfw#|Lp7hP?5FSe-TT3k!a?UJY zeBi6+JvrLIB&b}XQWm~`9hSC5r+n|M;C-WE>y69>9!ehGTf>IfDno1Jln1KEfOwsK zz|}L_r}7z|9vlHG@udN*hmJVc;n6A&TAm05i*IhF3L6wp92dET62A@WI$A11jzQfA9=oe#gN{mzg;o>J zfQAj8+V)A)9943!UX946t(bj%9JxVngmnji7Bi#0bO=t5UK84vJC*}VN1o1c)862` zMe3nV$Gz<Rf>WksnAc~QbboAziFK#tiTfz>^(qehJ>8sC9eziorA!^|FH zj?QVkoD~_C+}gY|hNVjlGh#oytFi~YY}(cfp$lsqoJStYO`fPR*Ury9lahf}U#JKGe^$D>1JeBiH3BLMnP$-$qi&3hxudL3{Ys zd9t^H@VlmZddXs0Ar(=?mZ))b-DqZ+{ zMOb?9Z~CqyLr)P5p|?7iz_5nI29#1`52)z4hZ>tXxrC|fhS_WI;Co@)98d%X5DBQ^ zF03H+h5$7!5WR&g^5FaS%s=m}BVfq{;Aq>LGi;-1P$!JN-tuw~pe}j_X#C?m`9`YB zhYmLT(eS`U1&Bo`(^D*lg=9^qmg_@N0;pjI;6}4@iSn@9y=%uYv>^Y32K@aPgMgIn1cSZANOC59g*ee^K#t(a_qut zC(Hq?*6(D$>G(t|_z|g9ZZv&`KFV8FQ;?%NT;t@K54*>=tMhDBdb#o>>1&vkWHH)&rx$EOVmT6`(gqftC@dX^Xa7oprF%?A4ZP zh0=M2p^^MKfjoe>LgOeNM2eWp5`n!Y7jLkD>`!%uO_dBt+wyV$E`Nen`vDE-yox^r zIgs+9zMfP^F^XvTYj)DVH zKZJQ~y^%M=UjD2dD@KqQDmh@c0BrMTyflnb-u>*(wIV=)dy7{kv0=o$UP1sOIsll( zH?l$n&{nmC<;0yr%0TLKlW40k*r$MvXIBS)hda181wKCS!b*M4Ah?vUn&!D0WlL!| zS2B)l8?hCxerFsZ`4XD0<1ZG7e;{6!#J5_FeFa z%IGyjqN|k;`hI%?Wo3pig`P#9R7k)NN633?pPVnMxGwGl_DJDxFV`_mmW6_eT(Hw| z&M|mk-PoS-$5$c0*iI{^AdfdvSB|rnsBK!83=^67u}QPKzzn)bT(SyoM`9cNkF*Pp>W^+LTWB0`YRr1{LFIbv zgOylNAR?OK=45zAqs77c`Y#yID^ABVK_>QUjWdszD~jm(-vUYgzxXR~onC;Zfiq(C zeZp7xmaykkZ3+p6g>X+yp=xJ}k@(k957OVBZ#>?`}7`!1V)ijA@2AQ}0kt|2{lWu$Z~Bn6vjW>ImTzi6 zeFsREUVVDA4Rr)x?y*0NN3?sr&~8?xvh@R@7M|l1_-ogBqfA(DZzFGgVwEGpw9)YV zFF1#D)f*fin`{l%&z;D|I*gisD;22bt9DGq8eFbJ7 zlA10fNA!`SM_^-TD&%(MAtL7JZfRznh~Pzn!I=C96J>V^{&InR`MNhm6-6m@wSN;G zJP%&?fs6zDIeL;!ej{zuxfV`I1Dv4ofp~mr;mDE2wOmK7vOQVL8Lbdm2#$RsF@+f` z_B;cy$cIQ-eXe-<%5e`CFL2WdD8xU&;Z5bZ$8R~1=+zEh2x#D5vMSbvdH0n<?k^ zHC8Sxvsg>r_)V=Q26B^DMCMIVj?2>b&kN`O=@ZvQQvl1;J@+CFjtO0cBKzPNPL^qm z!o-l;`kHJ8!)kieC#E?ThsQrKk)TVmxD4Uiv@xk$&RQ{JiJhnLaNl5s>ck$vxb(Vj zH4jM{JcNSR0#e16iPAG^oXh9UEZ=Ii6~Dt;sk+ta#{Dr?@}o)IjY;ymM(lbE3!qF< zF8PwZi4A7g3SLiPgt#W25dI)B>ptY5k?kN3y;ZpCk-4{FCYiFYDs13u7jt=HM z#QQ`+Cyp*xq+t8=evji{z3bPzU2+Ea^V6pXzhmlk1>91=3(0{MwGSU;r+3~PknZx& zT>-(@)0?JX8D^E)O#|{pCO%+k_meSqmxDUiECF>U1do>wy=IEg3+V(GkEchOX^U@|sfsd_l4L&h0nzd_-N^xpmQ(SYvG}vfhuZBEUUV z4#-psWsN{3BBFLaa#+>FCAn{Rm7s!tJ^AvMU<^#6=l7vXnW~RP_*!LuIJ$Tnj3H5) z8isfr{lS@Lv)V5;LeoHPtA4iB8p@!N#a$t^O?IK%x6N1Dss?669$+dSaMx!Z!+zx_C= zXT*o^a?G=>Ev=nf?n|tcjGqBZW5V1V9cM+{X>_q!k2N!C!#m_F7XigM4luj|>4abj66hy;^oMQ<@5WTStMoiSW|cL;eu&z@0bvDat7vYt*M z+u7)1FF)vu?+I{x=INxO=rdsXBctB;{4-$b$B|a5;&ajdGtuvg)4Sg9y8k1Q|9s#d zy30av_P?8AE_%A4UYhfNSX3tFxLf)}cTd9i^#RX2K@C-pyGftu&YV{`>mR!7m)idi zx~m!e^BJ&A5{A7#o)7xCEkzdmfO84n*(ClKusp@3{|s1~JV}sK!+ZuThxOCGoJoBK zELl8S5Ox8=uwpZ#Fo0x)5;$cZF0ZzMFdByvgr5M`;L)0J=1+9@e{}3p{;xuJmYZn* z?@+qQ|Aa6)cQ5OrHmJuJ8jjS7^U!AXmCr-j4mnW%+jdCX}t;SI{Yt9JZp!lhRk)KJer9wO1E6vjgJndPo|@E^}b{ zJH40$Oz_5H{BO_En=uJc7Htibu!w~|jG3+W1VN<%y1UjjiQyQ1 zz@3XfIX8uh8LD0Z|Ixq2HdmMAx)ZV=rWT&fK8LbbQUO#8ZHOE2pjIWB-690x0%|LU zMfm^Nd&{Rf{=ol^i(d%AU4py2yF+kyclV3CySux)LvVNZKyV8ZoFup8^X;!QZ6Ebn zXWD;Y_rcEW%)ZZ_^UB*1?YQvVK(12Gu@rT1oW-8(_4{qK@xmWB)Sci`x+|{_7BLO$#}%&njS?H+0YeYZGX01${aN#Y>L3h#(G+JaliHenZUm`x zi2%`*fnmC3?yf}I(F~t66TDEeJsH2htkxT}1T~@Ok7Dr0{iZ;eWbSMpi;q?uS5n&eS|^^-+m2P-Mck~!GE0lUNw0er2S@|N(-`` zh%tbWjOd4)ia-qB)IJj*AAq^12@Kephr~VWTrfupPEOv3B-H${bfS=exx{dUFT$VY zqr9QX70$(->aNmeR1UHY!NiXg3}q8eqRms(rKST!u+n}3q=pFkN8EAd;*qtqCf5VP zsEbI8^6j`=SlL$nAdr((ELr>-SYeb#XYr%;%tHX3i!rv&F2l14BHU8Lrc+j%k8rZf z>VU-=CpB?`!vK-KUA@3Gp5OWUiW3ta;7kC`l$CW`)8w?!ikZt!Y}TiwzN376|2o|O zwl?+XsnNz2o_+#B4@XW2StTEOJ$HLn@tMMAXJg((YBBu}XfLUxO$j7VUB{ZnOnTSz${?$C`zhR5ZiWwjR+AB{5`P3E&&Rk1T>1c?Mqg4(A zlgr4y9v2uPDCO1NYtlWe_>n$mL(AOj;WwqdRGTCx6klgz+Q)o1!%<0PWdk<4(Yosa zSHp@^t7Y~})eb|{$;91j^2GOA9kj8$ew=E&Olk_pzEwsyo(H9P%aJ#fqtdvDmKsqg z4%c?C+Mc8|sHj&VjbyDWBWS>eGSniwUeM?n*nNF#+NdMiTK4l}|AO@gp{agV`Nj;% zFi||mkS$1a^z&&W%S*L2s!Zrod}@V!{%pR3Ujcz z#yNKAd^=)8V3dc7(hfqy>=sO;nC+7-mIl>I96a^JX-yPc$ykQ*)VBD-Of{ssJL9E? zA6i+1r1eiOGRAQ%USqqA%CH4u2EdlCFU#o%z?h=nugT z6WODUe9j@y>325@oNHec`h8r2o~mvvNyj7V?Hrn>sShv8H1b{`6?U8>8_mz|?xiZA zYXwRQc+L$MVrTN+o!L#@%zSe7)ftfH7_3lxvP1=ONF+#jA@hylQ?-L|iD}CUp6=gR>twYb?=s zX#5*u3{cNx1u{M?Gsin(Nd30Toh}Td;Ml9c2JJVg- zj<_MNZCaS!zpPii3Am{-bv=%g?TMy;cFOGo(%+CAfc@{TH2^n+r|%g6aE^(PdtB^j z;_KEc?f4KT{M@gWLrIAe?zb2p2%t|EyFk$}>0iz^pTEnh`hN<2M6RFD{N0CyxK%Z& z!6cX9?)QZ0^kObD$#OGcD4ec#KPgsL>mxR|VV6;Let!^XuXmN+4Dm8W(M7R0cwXmu?f2Bbj$3}4$u z>#+`ieL6Mm20)mbQw*M5LW@`sBh+jubZR|Ry3>p42Os$wW`Y?VvzIcRuzU+?AX1_q z3prIhgfV)g6hTG+VI_?!SMWv{&P7JRo3T5}Q8?O@k$y$^-*KHLHjQL4GnN-!sxtv* zYV+PQdvOlnr}j|P4fj88)+Wc149wQCm4K1c&@eIIv`CKR2}mCt0zjzKiigGpI82Tr zgJY`AlEoDVagj2^C}QnnW^O~D3B}E-*&(yj5B4bJu{mas!668GCv~oIH*c zz|4u|&_IHe*5QCp6qb^M-P0FMP+gM8azkqE40dS3D_ukQnA;ed$Kv3Olp-UMP$lui zOOSNJ^!tQp=t?}jRmgpb01;Mf02?Vzvk?1=v=|Gw*$aHjS)%E_&czwcsWc=lt{r_j zM@mF8EprOvW-_~x9ZIX^(GSN075QWj&T^b^TuJ&bRS7?vBJEKUy;Y%7z!j$QQJ#t* z4DR#PvqM&85Y$CS@~Vm%F^}hLk&sm}fzWs$*(+uu2`z>g&;nlcj4T2ZB@t>N=2R?Y z?9j^{)peqL-N3kex1*Lz(&;R>oT1QI(vPmcaP+gl=V1lrt~?Nw+}UOm~?K zA}f_HZSK}Cs1ZxHurBFZF27Pzwx0FaZxQM9+=?O8@MWWEd(AmkI3C@Rf*rUx>Rq(o za2>a@@@kv&#)eH-Hp!)wiD69V#3P$ph)J60E{np`3Z}0_t7|w2in3u^Fq2`i z*G&k`MPx5&3(rWw(#sMy1GBERW@& zpIN0Sath7dBjHM%wtTD9OXfoJB)!UtKowrmWt8F-!OL0X#B|}famnb4zd?-F<~9jU zykp`#;Se5@*#9V9s!mmsjfjg*%C{ex1Pkeew^27(tZLv)JGyhv+-|^N7uUF#rF1d3 zC5~o{4z95qQ$vb|UG&!*Nm=H7&yHx#N|@?N&f=16yRsiuLV<-^JbcavAYTt+6P~Q` z5zFZ*siS>7X$h<(QYxGz;dQ}HoYx%5 zjuOCuY|TG-WN`Sy-(J&kdV-0fpW!jcQ+zv`}phxQzb!zpW?qGYXN|h5&iRsd_ZBK@!QC)77 zmh;|x)?z{M${gqfg@q>Kx7FkTDle^le7dH_0D{{(bv3HIQ0x=jYI@T`Qe_DUBozK@ z@C`lcyIwu4gI&0Z9gl1Dqd694HC8gATBgw!x;@QKhu$9PNl&;?3N<{zBz^nhfKrC3%wIWG`r~9S|p;>F*CC>Gxup)W@dzZqT6`~(A)tF zh?*8?jO@FZKIDk2G_?#Sapgz}`*ArrvLN1bmbKRlHP#Jy?}DxJhPC_zeWS-67NuZF z?mbaFtMS9k!aH+=xTKWKW-Y6i+jo!}JBzyv){A3mCu^apSrSmuLupFV@x}lV>vxOU z?bMW|(Y+uTsJUo6v3P~;(LGHw3x%xDwBt;k*le6|EMy0z#@K29)Qz-BuoU%U-juu; zW@}Dtyi5#kC4iziKN*V+9D)CgIUp$DFgSv4E!Dl#*mCy_NQvmD2QAh2ELlMqQwYFL zOcjU=uy90>{kkYgoyqvUY*1uLyc<}^zq`y&9IMcqVT&?vsidR0OKxsWVPNrGJt9FJCbKc)G#{I{ zIT618H)@NhddtEnr%-$Cb$iew14paa5~Z`9#SQ;&43ZV%u)xZ?*JOQM9&A=r+;{7= z7=i5r)0&!#9Sl~j%#w6;WwD>D>vhDVX|W|xlUoM}m1(oP#>5$3r#epO^+v!Dh>u(x zF`4Kx=XcA>oxFs;~fC3ehekr_B5oFy*CAznQckjM`pQCq}3{@TS_{(HB{i zp-(+p3oR;QFAo(abocse;)7%(J&MeUTBKD_;;{L~TDaaj1Hw0?K~%Al&VJY!~~CJ+0rK7kbpRBz8D)^w+E^WouvGFLCQw+~KcV zu6I;IRc->wvNq<8u@y{~IhKK`UBi&!&Ws2mB{3yVUnBlW>ipM&eLm&uEjieX9ccl(Z#{?_8|@FRQ9HNTb6|{yZ}$ z{IYRxPdP|WoyEy_O<*Q-z9@J(QinA1FOaYAY!s(*j530JDxy5)9I;(Xpe0;(!hhrQ zH74~%c#Mfkiy^Rr*eCfq>VjfA`{$WC4)OI>zFU4#>kri3P*~2J9eAkw@RK*d#C{x( z6cOu-!ZC4k`5`_(i&t)DO9E_y&w&H;S<(D9+4pVX1<2;rt=6EXA2;&dJ`&h@E8<=( zjS+Ya>;&K&6XNB^lK><`z_Y%m%r#(23x)>udW z(*>ULya{;R2ex+!DB8T@9mYebi}=7{0Lvt{hoArhvZ4CI?n$mn87l(+&CIR;C)oWO zFoH*j7%Bb`>}bRC_vjmAWh+*W3(se!3Rmm7yjP>mgBxDuF^tA_7~iguT29-RgHd%t z@AF{_i-?V-P=9rd!-*B|E1PJE!r{{J(4511@=%~yM{R;Ar6z~ZW$;R|veh-ZZMws~ z*`}g_Z@kY`fMjLoXBJen!NwjX2&G<@+>Fy_l*~JoU==!nue+3Va?@BovxKSoe^%l^ z2=Ofpdu7@NuJH_2rME%o@1$70zXnV7}}tA_|O)Q?_PYU)RXFJgURnafb`JWhm6fR~8yKyQIqAG$tP zG-hKEkYur8UO;p;pYaWGi;wJs>^JZOi3&xBB7^s(?KZQKKC>!88-o>FuO4uDrEvGM zvjD9;Tm5~Q{sprhYKBmAn1#~d)n^E2rnU?@0MbPhG9$Wpx;#tDqYFw1QM#+4#O^HW z56t`~jm6-ZBKV}}8RvyBTu_}jcria0w7z_OL`h76=jW`%N-$3|kMJQM!T7EK=RZLn zwTw!#P4~=m3<($ULyiok8L>`%3q?D=jMA=|anl zHimsGx)4<#)RO!<KcI-s$9e979J382rG{!f_YtcYK4#{o^Oh_5z?mH1590YA9uJch>mMzmFO8&j zQXTW9k3J~f+qWmtSeLW%XQd7l&w@GcOH+pn@2fTx#t*^ndwkEg*3%Ect{?2b{qsLc zHzt?T&6WM-UkUS_@%OK#j}qqHqUHys+iLOu^Pgb1KZ)G#`*Ko{AlSEC@vnqw+50~w z%&q+YN|n1y>g?*K`1RwI_l2SXj-N_-F;dcEBN zA_a;&uU*w3sqR&i@nI}%Y^10^O?9ThS0TKEHT6&XrzVMNThiol zw3Y2e@!X;yn6GDI?-5}Y7_7*P3WPy8b^2JLB*{FtBRrNB&{N%Lg1Jvfus!8w$t5ohVx$o=e>bKES? zRP=^eq;o=hqKt6>)d)7~>F|wB=G8$-<%$)<@>So!mz0e&WKdDk-;LAK!wn8%h|;1A z%oJl%P0%xmxVU4R=Gt`59b~6h8nOXAna*v`uOy2Ueypd2169;YKe zX6eVT|JLjlE(If(`!8LuH@A*ef8`|AMO&Xd)5J&5LzUi~y}>X#_z{R*nC|-yW)Qz? z;tQT!Kz11$d8=30?A`5*3+1NBKFGJ&J$q<6c$2LWOmo* zT?27e_M!Q3Iypj7g7HHO;dmM=`s@?jF97KKd-r)=z{CK%!^nGTqkfwt814bxLX>GS zVJdSazt<@u+=Yw*Tp4ChbED!>+Lu8RX_hFZR^cOXV<`blmYEbqaQuEFXE*#yg*sqb zNlitpA68hB1rYM!B^5fHX=1RdLCX;7)d0h{f&}5Idw$aEa7+L)DM1V#KG4RQlBwW zjdqs=ba>KA;!zgD;5z}!Rgti*lhE(1c2|7J~Dki!|SiOcF7`$L(abZ9Q3bO?P>!kT` zw7bH;^3*Q!St`NxE7_ENbE1yS3z@VSeph^!@F>MK7|JRtcrCIla-$@JS!RH15!B7S zA9T$FO;{9d*6tR(P`a|KIRMOj`meInA(E?E`U1h~4LakmCf(n&^@r^}n;K?? zzgG1OY;w-pNAdhj&SxKvcB$2HwbfcoWlw3nWtX_T%7)tb)k$sqwfj2-le3!7m*I=_ zfiyNJThv+t7@_pRFia=y&9>o(XotEa9Yug`dlKR{(A61F4VR;WYy+c3Jfvzyj}c>! z<0!qB0jnWI*JoR9_N58wXfOsJ!PsM0Yly3_9OUTE<*$wun~bo17O&0W^k-Dzytgqr zIXQDyhE*GjKi@?13cdo6B`o%LCj%G96y6IoGgftnPbV?3Id8|Z& zxadIY5zPHL-&Ci1Rn6#AZQ{?Fb*h=$lGmoazm#^IJVNi(MkfOnU9*Y*)K74H^Y!%e zy5V(EgQ6PadLJO8GhWZ`& z*3Xi5d4uuR6J{K%YmpWlbX$gk4J*Eg4EW_!ZrZZJRp*rny59xn-QH%(lp zLF}EG6&ztV3nD0jbvzbcz$tP)L_AdeU^ZTLLw^w|wzAmsN9%t2+P0Lur;-edDuBTmIk)OaG@u186H{)jo zcB|#ao3B9{f6KpEb%P-*8VJOu0*)WJj6|FRAkqQ=oxJ+u?CMa=2`dy^7M^jOkeiTH zwq?wY;+_H6K*LoZA(TMysSp51=|MA)v@qZ@Mg5kG4n95jX9XnLOOUNgAnA}m_ZlH# zxVPpZ(WRN63meT$5QjZGclF7aWGAoRr`T=}zJw@#uP#zd<)QSU9*}UlGFJ97nH1_? zkn-H(YwdwSq!_)VhSTIqRLg+_sh+9q{y~8*1l-bAr!JIU6tv^PN2rczA%1G>{t9kV zZd$TH4G$;kka`%gfi$6=XSrYO9!F#J7x&o6tKmk>j;ipmO&n2j6JgX!QQBoujMU;v z@Q}`(5jt8P+F*)EKXe?uCHs(KhpAQ5H}fD?ap#0^n#4}=Uml^j#_s9TVN2LJ8qZN_ zCsEG_Q4N^7C~Fbc8nMHgf-xJ+c_AF}4~D_ZU%VnT*jiCZHDV~7V;lo@dNKn;=xOmZG^egcKNg18UXw!;tCPqWP48_@#xc{Uk z@6+NrtVBm#F+H9TW)IY%qjn#tj2BZ&>{ycX!4jSq6*FLSn_txUnAEN8?y?YZ zE**8L1?6j=ln1L#-z99Y459%+vdcg+Oj`4ugw6~>aK3Q;Q4iKgNh+XBasklkp@XNQptv>XDR7- zm=aNH9+E)230Q4wLP`)F^JywYXFx_U$eSie)7tb(H6?CH(DR(i>NHfUT+mju*76eIzK<+Cs%MGmKCR3 zXR7_MQ`Vs^s%SR0crIUHtVxv4H(VULE>*-VC|~t_q+9hX5IOW_ZoY)c+`XTGGII`i zLoB&MSw8(s3tU`sW7cFOY}Y0fzE<{uv}&OzTQ`oE!Fh57RXPSJxJui^CPkBL-Gh@# ziS&fVE<{ZnQ;Z&~@NUwL`Z*t_T~O^fO-n-HgW)lCyGK$K9Dako5xROtvbYeMQ`b~jeoxj;j4BP>k3-jnVSh`T?h>S~wxjS2Yicgjize3F z3{nE-u&c7UaU^&u$4t4W?~L)wj+&d6;zcNxjf+TddsnozKq;q{4R1)_oRtZAM+JH( z(ubA_E0v*j7wlNjuAN1)Du|?{2y5b61LvD1N1>$DoCT zIb?|O;%V`$M8ZZJJSMm%)eqz?JB_CF#bbrECOM;xy<%-Vr)iA8Z}8g+MYD3XlW^4( z;Sw=ogkVp|FAYgms?7)wKIE;&BIAOc&IrJ3)*Q-b->SxMtS$7ikMGQUO_9`4^B+A% zQ=-&Ao^p&_tQTSS3aA3SpVYw0Gy`=jjpH(rff*qSVp?DcV?nhssTM=2H+mbX zQfphQ86(devl<%24IB$Nea2n_b#@qs?4!0AHE7zjd+<+53{ zZOh8(Ewv*V1fq^v7q?yc#1AEI8Aq0Kv`9DdP&J!hdI}>$d;G`nJev5+6=HkO-=~Qn zTw(PXnW@GFiKB+Ln$ALHdgRz&J4eHz!pmW%Mu~kxFZ%a)plE9VFx{{X-mn&*pzmfF zcarUQ(?h=6O7xOYAXXyrUJNPAlW)c*a?K1$^TVQ6!-iZJfAoHk6 zL`t`9J{e4MEa}b4eriTyfK@i{FK-p3C5-LpRRxT+20)qA^Go0GCa^^ehBwVF+s!(> z%!S9g?AT4O$G}c-uP|9wZh(7Gf8^qetm}4wNSd>?zf2*iPgUftFNx@`{N!J>2y|)r z^l|%gV{Z%(Os;@~gu?2qEKGB-%JSyzf-cfZ0n{4l*Y#-KHOpId={`e`IJSr&+E_g3 zVe*E*S?wFbC5*Vb_GkHLM|qNYs@8#(aY*^kO|7Vr-XSV|waI<_gEHR}=UeHUGte?g z_H!slmZ5Dn**TVK$!bDGO)T)#`mkw}x(IZCAq~C(yfUHuX(sCX)&~V(eOK2{reCbL`p4dIyj1(mAC(>3wJ6*^#@oiM-7z0;x&4ex<=YaFd{=*D*Aw!VNku+K$N|K zD=@x?=R3oK_I+ny8f3RVv^kfFnS3_QF7cLejg*~yJ;UedkxVV7XensK4LJwLuZ&8{ z{W^|8gE+JJU3fO^YTBwNGU5m=8gV;oaX$!h3OTcmM2g(=v#WUhx2)oEZ2C_cRv>3J zk4k30PeV1d+IW&4GZP@-<6zKwr|*lvR5;Hr3Dijkr|Qz=ljv5g3PzPRxKBjRL}c&; zR&GYAe%4B+u{r{$5WlzZlcq~hOAd}Noy<9{!f(k|3I<@Fhq|p?Ku90Zqok*vqWRd z{m4bOx^knFrC^m}g!2T{J zas(v1k@{TPLX#6TRM~{H;QEZ`a(_LpN~hhs!~1m?Ix4@J;xe%IjOB+L&i5O3g;N41 zDqQdd{!IYs&D~xflS`8!OCC8lyzTd2Vxsh*Z#@MHCk6zP-_{zv&M!`&DZHa2?ghY* z!I^@#*H$p#zJ-7nA1Oz*ol;+BqiEr8AklzE&0ZeBr{4FO?6(|Fj*OYq*1ViUB1@Sk zyl_44x_zfxVcb-aj=LErAyJxEk;T|k&z~v;q4?C$8pwOHhNpZlDDEBPWJ#TGxAwS06M~_7XCWySENb8shN=RuA5NC8w$D0( z>#Gd`$+jv4dN19pZ#cq|Q6vsrdA5l*wE$rMo4?aa6ag@X;(Qv9zt2I5il3T#ykW8ub1J$y%Pen^uHpR_wwtU%s6jz z&wr6WAw={<#$giEX3S7J8}Z9(%2Yg7hbnZ?0iF5rtLC{nRU#V@1;%e zKC$iW)aABCuMkJ@?ht|TjK|1QIev>-`yWC-nOYNSq)f1`?|x69Th*nuxg~? z-D@@APtN>wd%<72Ib5QaE;UjM%C>jJ2by$xpQIG2rov4x5%7E|KIf%bn@iJxTc56t zq9J&QbfT!8i%041S&IuhlL*8T=>7dBOz(rjxx+rje4iR{;NV9?H=#LGO6T(CMT5^f zsf*^Bj=e5wxYgj5N=OnZVVc#b;wxmc`uB$;G6;MhiL|84rQ-SEhK}rS$7^a=+w3@0 z%+WB{w%wdPA)UC_19{6mfBoE`!@Su6xNnC;Y&RS9HiyqdkJ7XlKnr&1eO@-=Zc#4+ zAwECEz#Qr%x=OSh*Cy^;S15k9UBfO$&aF+r^g45g_}s{6=2;-ILaY$JKH^zievuVp zw4j}gfBl~73B!{o&euKLAr=l99T zezEPKN>E*q%04e3`wlzVe`i(=Ie1_sTYFi^@GaDv8@AJ52gcsjtA`PCyo_!qZrW#9S8) zgcK{yDX9{|VkrUuUWq~<)a|KRXobQ_T@=t9Or1xKVIx}-U(cKo5|1#PFK90_E6U8jIfYYf(sf2oZy;-fpoVu5TH1DjZcAAS{<)P5dt7!7FwGaN zo~WN%i=yN0=2iXfPHP2W)gsgwx!t^sWmD$|X;yRH8sKqhpFFMNQ-Jq<3GZjMVVl%u zW@FN^RL_%3QeMk5u(4ibu^*2XZgo$JdGI%pO9LX^9iP+SyFa4C5QV^I<1oGGO#KLe z&8}$>2P*egxIdP@J`1maepr~Tjz47rrMDL?hjpHwO{Uxc(FKvCgno36{|n2nd9Fs9 ze`|Ji#`Qd8vu?{DYj*A{ZGY+hnRdI37ILPu9Exh5NFEy|_!<*yrUiAgvrk!ZAEupW zT{8we<-5l&nxDPro_B$O!Q6vOqvyU17fIcI_?N$~jO}0m1JjRquHfenhUegzscR_@ zI$^Ke6+6iOV0dn6;R@cgNf{reU3J6W&-2<3)9$J{rS9Q>OgroK|4h5jy`Spg{zWp! z1%LmGWcD6Sav}RYEEUZ1Am=OoV|e%h|00?F3aj8zkAG`+-;(6? z4F9d!%>!?K|6_RJ!vX&o9^ggLZsaEL!?gRgboyT;b20lPl3CgJ_5chaxFWv0S_vfq zIfatz?Y`e?4q;R)xkBR&L2AMe<8(6^a;JQlb}u~9EV0H+BSpvo@FT|kwR)|p_b3)u#-BNMYdGTW76CHC6G;p?oW~UZ`H19xk8D~dL@Fr zTAlypAt<@4@nW^Xg?+3ForSFqoL6v8JdhxX+sdmv9bRN1R z$BibD?T<+J(^Ko@$2d|5Ww<=g-u_gkpLt(y*RLK3psqL3?q?^>rOIWAT&wl*#mOqu z?=X2N%tmuOVjbzT@8}Q!sDG<=xi5hOl;vyW)W7Jj_7;#3sTK0NA+QQ9KbQ6~K>*g~ zOJXe9`?_BbCZsZtfA*2?-5ws|LlXb)eZ8c9TUzN;2Kc^$AwHu8`kf-(eu3RYb=n4? z{jz1tljT5=BI10D{tMS|zSpW@j6a zMP<~-nfOY;ABhy9t=XPHYcCzF);26153@B;P!_QcFi3$U2y4Mco2N+|`klD##KD8| zVjx1~GuKfxL8b@3#9MBqC6Y;0lt^K;#~VaG`hCk`nX}Dgb})i$sTrEd;`w>amq43> zNGP5&K)Md66Yuh8x4p4smF}5A*V8*gVoo(ISW1FHiL~-*?=JqtLYgJ?$ z!T`v6Syu=7Dh0*q8wXa4QR`v$RTyDZH_@h%xVtk z$xb(Ka3;CCpCZhrgAhF4^&L=?oXahpx6W^)om0lb%kLY*d&vQaH-wXqIe2$12|MoT zP%q_;zUI!oUwwLvq;j-0&E==L-rD5XXe3(CI`?qvVn$G+>8DTBO<-`1 zfjWYCI9u%51j0ke{tD=FqkFi6_yVMm+lo&#xE`J#)U6YkIfy z5C^~ZX}+x;ab=SuXUNs5sKZXseOv$;KJo2J&wql-YW>1?a=?-<#eZdpDXF zukWw0USAk9r6J&<;~~+dF%M}D0)Yerkk@O%T*4?pXsN`Ia!0}%<`h8)E5tC`6#&}J zI{x*0TsaF9@;}aIPSux$Yn(?MVBrgh#}wr#Nn<|9w?ttUU*hZFWme!%W->91{m|Hr zZ%na@QP8YEkUDNhNaImNPJD2Oz~bs{^nED4QAI1+!lqq=y&r|cWekS1U&EY|O(9J1 zh4^7=d`uIIaVl;<91E@b`SDQPTptdh(YTtv(2$c*HlZS_KaOs_gvt2VV5r-5=G7K` zW^Nl8C*T6rQ|%xWe{>EjC^v&kXzS*r93du3H7wI)tg2O; zWM41BsnPB# z)zz<|^e<(#aO@r%$AI>wN;#rrofvJ}Fhf?_h~Hk!sWYX6smC0$(zcAyEX?U@%G|OE z^Vd!sePm5dxT!G*!An>I;?y*@iWk}I3LUNVi64=5M3qZH?A#2}qMm3oJiR?ub{mr` z|0m}X{IV&@IU42XfwpNG&Oq@4-IZMGqTQRnkH&Kp_VSQ3>R06hjejZPgO?VQcnvsF{v+8T6{KQY|M<{dR-Yj)lvo2O*j>#OGgp!vMGn?{3T3}Xw3 zDnHVg8g?On>tE#dW{bPI?q zPTtn*Q}2wvjY;-*0|M;?5|tc0v#%WK&5I+NUyL;CekEGLsdm7zVLg=@2im!_acrJw zw}$Nt6m5YRZDP%((>;6)_#!6d9{6JaEKy(V+}jA1nO2gyLeql^NOqr#3+*Wt{*&%P z@&O~e3?XsvTL;_4p1pka7EIrezq7Gzn>yo_>r}}MGYai6Ch5tjwn-I_wITU&4Rndd zVr`g%&zJy{aH9LEx%puN-WVaOZltW}M>VQ%wc~Z1B zahk{;U}W+Ur15%&WJLarbrZ1X@E!lD@L9eI`FO7x|Nisb)@lu({tfLXr7jtozXE~U zOlF^6h@9UUY3*W>m)7M_KsdPmiiz0g)ACQ9RVtObKoi%1$ox@6;w0KN3C8988?;phtWYw<40uEI8S{Is(VbjQJ z`lGB#3TROZZHVxDvGG?zN_jy}oJvY(8bffKEw2Z!JYYGd87n~g+fw<5EEu6w%FDvJ z3$+9&QTZs7hf{hHnY^$GL5F%&xY4?~eX+toJ2QQ4B0GV`zD?6L5DV^5;S~)x-VbLq z#i0vpqV_*@xiTq@!QxJ; zA=2YRqG2yi(B&bu)KTax2|yMzUmx0_ZHzT*fCxh9NsA|(d?cMmKb1D zv6&(++_eax7qI`u+)-FF(~BVl0_AC@`EVwI76)wYY zt0T}R!Zm)_peGFb_mUpNuecK~;iEHvTUY`^dK{jV@aK-WM@c9*ck@LnLNgE3cW&u~ z5|?OkArH>PS`9h}Y>Ylqj?EwnUy}s1!vtd|b)?CJH)>W=9&5Kp)(f~~>c-?P&14QI z(;;pSoH4&d^}xv{Lq<2lAvLvtUyei|Ci}$1JS(V+3{!C#0u--QYseHyFpuz7iG|!| z_}FsnRhaIbI?p6aq`nTy4TTFF~uucTkqBYw@DQgbb;>0uuZq0~nGa*aHAJ#Q7buyhe zP;Djai;YFrTd)CFn~MmPZ3m3hC2FQFj zB&Yvszm+nS6eYZ3=gW}kG~w-|YtNl)cbY5gNO7~ex&B%V z_kS+7>lWY}P*%x~kuakerLPnLeS2c7mdg!7le2p3;M`!XXk9dXC zmJ*DA`!9`oQHg)#LkHm-k_|B11mwb(Wh8q&NXBP^@u2&%zHE9#AEgQCok6ma=_O+r z`X6XVC{_F-myXGh5E)PoU9BReDlU|DRBEmgaw;TUCR9Bz5Gm0fe<^n#iqP_5fYKt1u6Ty?*xQoylt^`&tmyPELFl0PE0u}IYv4voOGTRdRg#+M zN8P$jSsYr0?`HHqUi~B$_upuF52=zq&WfSoFGTH*+-ROtBYKGvhSV+9ApV4uTOaw1Jbyu$#=bRdKxi%r6GNQyzkBheC3bF(`1;fXRWbsa_G0y8B z<)dW4)Jrw#jn3wMV0hkVRv9xmoecwlXfN=s=s z2W^-6eYYWB*Mv{kIAV`qPL~mO^p(0Q+hJM0ZBZ2!7NR-zu4|vVQU_BStN45GSPfv1 z&cd^&*B!k_V#OITn0w?s;;}`k+mv?^yxPa-BB1k{?|%lz{;vPVOK~?1<-gr~f$#ep zG(d0Dm0qD^e9r+z(3jvY0QQiMykmZ-QRr^_CRC!a*F%09qo}Dd5HHumS2N%}UPYZd zBw{;MtApLh(yu|GwqZ&Wr)t*K-6z4}9defT2N528ZiF$coKM&DsdtF+SDv(8gw#yX zs#!j|(TFdwvf?e?1u=Vkt2Xq0Q0LZH32z`Hs!6o43A<;+4Vq!!)p*s)&y@M^?j}2J8Yz*9|I@17Cm$l+oCN;KIK9bK-^ob5 zanH@Mz~AG#n-P}a|Bbx2ij8Ak*e=`5jwxnlX2v$e%+zLPW@ct)W@hG?VrFKFnc^4{ zJC5Dsz0c9i+>HLY80jDByD!yMl~k(rK5JoG+UjX7U6u1Nwx%R~4$idp(M=H3ZX%H> z@~Va<*JW)y?>nVuBgLU+lIFnRn{wu)@vMj(w8JG)cl)T?P4&%4u1i|^g;Y;Z5-Mk+ zHJehtLPf%N^yH)xQF8{Q_MU52B`(XYB>A@BLXLXQVjH!bPM29L*I2RE00-yp<#nZ-9XO49NxJt%e&&wdt?Y3$dE(Ll_y z-{G8S<#NNKk&#|O@g_0TV&<&uaxJ(u#BYpJHh-}l0rK*92Ty(<0^v}^h7`R0(k|YT zjwzp%dd|~?`AssNA8p2N(t@zSv_Mjt=hX7g>t%ALOupGwKRy|QEiom3zqmAes?gMJ z<>{ESDFb~4m3n4>*=eCz*bt$OQI8Ec4}z}}+8B5_wra(i&t^7lD33eCL=2{OOsh$= z8{9bkZz%Ib zlk4^y158`(GE4LaDV9wswBYKZ`cS@=3>Rlj0zNXs;86e1l5=w?>okAG#rx@OJPvk! z4k*L7iG1cD_;xpb238J-Fsjdxy$(8yeGc&*KQP*!(k+*<+&_Xpv{H8QeM`gG3#QzI zWV7;r)HS}PE8a9Q`-`!B4~3fF->IUb!8v_kXIB_*UPAP{@!I2KWp_kneiOJvykgYGtQ=JfVhz*Rs<~ucem&K`yWqubov%szh z8A&rg4Q&%&$dQJER|$MWv8msSIsvxA9KVxAh6v{iI~K-XjDPr{7Vv2Go8=j@o1B|iWW8UWhpjgWeW&hM^!_h7T6KvVj7skaCYUG!wyewU-)-yRX?*u zaT7GR4WW2^GX4`3FplFC-9!|Gs-bJ?q4m#tIDR<@w1D`E#lv z?4s-jhQ|K=_p$o3M^Xtjt6C0A8WSc&J?5IrT|Gh&O;eGuQa~p^vEy~^t?V)idk4Dc%*uJQx4g?ITn$h8_3Mj_N>SHD(N%u#X@}dO z#^1P)Zq8u@iv3Hinum)Wk^31>Wi;YB{g|IS)Yf1PO-0hk@?;_M#v;vscj7ga8Ctx{ zwgmhztSpS4IQn5gVntBEM3NCc{7Bh2#+Vk)V7p}Vb@igKP`0n@jPi}mf7F=&soL2fB99@Be*n8* z@gsxuurD9L&NYAxa?7j2=TzqXzmlk-?Kw#pIWm+u{)t{KkV24 zSS7S}^93bAYzQB?4XAZM*FzG0&1hE1m~;9i>DeKPtAfgE#O`pEB^Y~OZPaE5DFO|4 zDqh$gig+StM*uF8NyH{lTl{ruNM|zm#9Bi)Swl%Ih`dyerwOZ6pvidU*BAW&FPgx| zO1w3hI@Os+paXp)vl6;k%HxOe(MyV0E+Y$>^#-z|W&7&QKI^EtR3y7|HBXs}bJgph z0!zoTbgJrg$(;(R^K66kQ~{o6m;IACEO8L->sz9Dn6=X!##8|DR`&eOX4>X4YwP7E zi#(TIYy&E-s`0!}KiOAyx^++6%Fhb+>addX{96b3qk?p~XETGHUW|(r3;8!j`64@h z^2zUicZ-FyknQqXJi!L5`Ui0KxS@a3(J?3;Vs8wn^Eq@4PcF>8xrV4f%^?JHrb7_$ z4Md=<9$g;Q*Zx?~GnDwPmT5+|KK9e4LUrwaJl3H3@87D2U{vHk#VPi`p zf>4Hwi5=x)J)%?0!KI?5gY3pjqcrIz3JdLnj19JD#KmOh<|2g<^i3NrPjYAh9;Z!t zb3_0%*u}JR=Qir^K@e8gjBxRI)g2@&sXD$q9&Za6pI#p@9~|DvmsWDKxLcU_VP=kq?6 zKidPxG7u;DcLriv`pkoRnc*?u0Zs$YkbNxuHSfNSgMSpa9pT_<@>qtDdE|%rGq9g# z2w~OaZ}@-t*(H8sDwbh)pe~HNmnvCuszao4ooSe4{YQ<-yl(fv_V;wAb@t&GvfF>v znBae^b}aqObMhkgWJ}6Q3ht{-%`MHVI-#xi$V`s^0K3MVZNy*5JRVzkGXJPCZBdZ= zZR#F8cE6$iY~S_yG21LOR;N5u=J$yhXHOe5!Rv?xJdA1hEs~+YYn}ZV#rq_~5$FCS zhh*f}X~92gOcYOMpNkJQCVyZ=<;Uo*;VW^{F`F{#e@1uWwf~Op_7(s982+TxcQS;N z_@TzEWO_A9Wcdf!{r3I0YA5v6YdQa+#kt4gT=L z52NWQYH^_z!7D`#x3$NbQ_Fu;?X23BA?zXmwq(fvOEqTN|KEV!W(V~D98mZFg&p&M zwXCaDc2=FivAGN`Q)#`lrbDl#ZV+mZS%p$A0?F$kC=*S0D2_%O3oPp4cGm0j{?UO& z$+ooI?G2)O(f5V3J{Uu8JaYW@;~_{3lEmv>)#DvQH*FK&YMZ2sQks2911vpXA_ z8u8G!hpRRWJ~WN$y2qnBsuewf+8+y2zrD{M=_@pFFbDz?nbxqu5AYp}(V7GR|NG_c zDl3L#e?T9&un%IkT?=x^4;$EwJ)WQU1Q2#PQW6er zLLGOM4N67`{be0qQcq!YEZ3%}HlW7bG}nnaCoIBq$>tii|07hrJc$D zimJs}p0a{Sc|R?eRY%f^{GAs+Rey>;b&l1twh8cqF7mzyseXfct|^%AWI-rba=#aR zpH2D&mh}zLrcbnM)6Jh`?Y>;NJMmOS37NkiWysNFo;^xU$?Bhbl!T^V6@$&Q5f%K6 zW7GW1RBx-=2l)mF@U3M*WB90Vi3NRsTh{$1%X;kWSJA}X2A28x`E-L*T90N0ymeju zJ&g{ZFb?65Kf{5VGo2%}s|%{YIgOjokWpD7Tqytokk5Ev-F$f}k*N*C;vEm7uQ$V1 zE{iVycUiY0RrpGpi0J=oh6++?ZxN8Q3K+!A628luteon)&Q>-fJo!7;Sm3%2Z7<+C(KoWZbp9e2;5Fvx&zd&P)OG<(}p%?0qCs6h;tqy!a4;4z>SU&J;9V6d}Sb zY^Yq+0d(@R=$>{23V9kS0+W|0XZkr1-*tW|1FQbhsmf~RbsdHWhZjOW+yf3Uof*`H zaKn2Sh25iD>;oqvO*Zao>|}@;{W#ihFB*faj`;%|MN30%u_&ftmOR-3#p^CKp)jbb z(7DC~acmvKR&cng9Z)Kvc?=ir6-EYc*fc1JZ5?ZHZc1F(HQw;~EcTwl3WivT z+;p@tywgaRxxJZJTlOrpOE{f;_HjhO&nZ1}9Hg3;pJ{)5At_W|q!`$Z)2sZBKF5zt zNkgI_H3^n8QY97Gm&b$9dPp;wJw77>8<tfKaI*gb)JBptfEXv-pfAa4C;1 z=k(JQ!h*C;8Z$)cbp`iGeXlU_y^~H z_oxs<|C59#a3M{&O}XFgLN0${Dee9?oz0z&J3DJ)?8Urn`kqACow6gREty}eOeW9a zd_<>6y<%J28WmDmC3^4PNW=YHBl1bz)?pQ1J)E9_V0^Os;!CLm2C;q;RuaEAJBt$= zvY1^NcQSo)LD_kY)~0J%#H~9YTz{}3*alF2WYpwazAxJ%tL6SDQk$3o)6S&~`*^fdmB}0p!(;{ z-$_?WBIQ?*5pbFDGhBX*qAN9Bl2Vi4{3ML1*_!}Wg3ugUP%~8ijeGU9)Xgb(N90q3 z8^q}1;}+@+1WlC8ZR*sxaf@_$9D`kg^#vJ(o+Ba_&#v0pRg8?m z1vXZjP_*5j|R?E&vhx^NQQ^yJCu z+i&^>eB!k~bp+&|)%?2rws(*0R>LqqjAirJ0Mn7_hy>)m+1NCpuDe9+^O5T_-EJr| z$QqKafb~HO#Y=g*w%rIFFMkiBZaWD~KU93KboWVtlU&WCkdu`j?*>@N<10qmKjRze z(TU{@cDSSj8#f6M&EIV7@Tp#>w@b5=SanJdXQ_0CmKI%RQ%uZ!>b9PkS|pp-YRZ_b z%E)y(nMVF=$7Ja&{MU{t*!k4)yFVNA9+C6;!-#Bo8*pBNpy4;-V$E$Z& zz3wK_xk&MQ(k~3`byGHLv@1$%8T#Y9#Uziz?DsU~a1xP)rFcAdXd$A@9li6(#B;YY zCAPemtH%&PxXLh-g32}5<)?a+fjLQ;QE9%_-#hp^t(LF4(GEo$<4(76_CJ+>yzmp_ zAkK-tzZnKM`cT?$|F%cRxcg?^XR1%?O;7v|A)Q<#@s&EQ{bDMA8VW5RlD80%m*a~^ z0YTAuE;;psIXynh$QsE_gr@)+pPsz-4>xUTlkWkNw*n^%D$3rhs3abCW2SxKWpb_l zHP1p!5IQ3?yaQ$Ur5C!j$#MFiBa^IHl3`h7L?P z3Z(CZ#N|~XXbqml#!|_2AZ7JEsSJ)c3vT)z46iDwcZ7o{srLm|J;x18Et-PVZNXWhhZeF?!^Pgp zdh^(KlEYt13sZO5fZ9m%6vig`M1+}x2iXc?#0t>K3tRamcAq?YHY>LLOMvbg?|WuE zRa3m-_rM*k*w9WFE#8<*E_8WSNn^V+2HjV7v@nsk38(fJ_Jp$K$kMdf43 zMSEdena=$TN}@(frCdlE$&ea{7j}*`Bt-C(f*>#vi!c3da4%tIEUH5ar60Eei>A%R z0}cutTT8=-OJC|tQQ8EGQ>23?-7h$-u3;E?yeQN%^>&B-g&@)jO4RWu;mxANP_<2? z+t@mA4V<-89qF`$sZ*O=Gr1Siio4jjJ&mV$nd>$n$&4lG)Dk1Gd2PGlg(qO|c>wyM z>EuCyrix>KZ%7U|Vpyq>`E7xa`7J7Y(0)DUwYNsm^6ye5L zAtnEN_H(QvWD(W`%SU5~B2q%BCtpRjV0^4h*eLrJom8C`4|lVGR!hL@ zB7Cxn=K&#}gbJR;#t(_+UrE0+^-%517k&Zpli^ z?<6K`6`?-GYi^<)WgBK5kyHtDBK?LZLd;K;Jyop{BSDQ=Gbl-yyH%Dj?p;J}!=|Mz zb_@lxZf36H)8S$DqzykzuhIq5m+Q9uJFHLhrHSl>Owl0H6EHCU;tDt~4 zA+WhPrWMQsy>O;R49m8dTmiL8ZNfp&D+}9!sDa$Wtj0iKkJPRq_oXVN-Lt0sJ1;bC zdj}PVddP^3$(4?DIZrXL(?-DE+qa`{ip4*rqno?aS?-HREw#j*x-gf$ONLU}7DTRV zON$O&lr2mcl7_rjo!4szE?Q4|MoJZdHBT)Bw?KD=KuG4jBU_iH5xI|rjZzkkaAH#r z-IHANHdH`PaOYE())B-&twlXjry_K3OmBHjB^gMoD!d!t#WKgW*yHSkH5)1Hy`~cp zt*!jEk07bfq@rhRI_V^rZO*nmRl@4Wipb4zjQAk?A^4|AmKysW4#Iwpu1gK~kZ%>l zU+D{5G9{Y<14;czU43^8A1FUN>Z@>y%?5aBsGL=%AC#x&OkijM!79@-?NXdA$+(cz zF=ccuXLqN5pi2w?R_IR%sW-)bUzQrft9*P)g@`7IrN21nz1TjZ%8gyOs+WI;U&4cu zNg))Hx@yK8YH!)z;w72mWMR+3gtG(Q%;t-+;PY=M%ZJ^phDAcGR1%U=9>uT8H01uv z$h+)V7lQ)5JI|)DtRgf@X)>qnv%00Vrk|RR?IULQZPlNjMy`|pO#)-y&;bZxWZo9E)=Xzp? z^)7`HEmg)pI&;?Z)qBIvpYk63*`}gCZ&46`;JW3RVDVsZrd?=``1jsrr-N>tETq5& zv_lr;Eu=Gb2C{#0R~=^VXC0u<{>>XgV|-tL+rcb_GwbHTRo;QQasvB7CQ|s&HoBXG8m^ zU1-d%spF&lru9D&Ya(;X(h>;+T~d+i)yXki4cjLXFTzFvZjI5=>0KxJt%9{WIDe`X zXu@bkzkvSSSaRm^h`;Z8^@qB{1n;v|C?xDZ zZRG43o%FzN*HNB=TY?wCD1(Dj{OT`|1;QDPGmy;O83nhI-@?2jOv0CBhYa5B&s$yh z^5zc~HX-JG+0}!QKZl6rp2Mt3f9i>jK)CKtkaEmw$U2k6o=gU(@~Qn|x@E6$*03ki zoY!zz>?M|aPm!D3jrDd@`$_0dw|BU2;I%AN`ThOoweO%rhz6xg4|BF51;fGcnQj$7 zO8;_zgT%k=EUb>)q9!)l=skhRDxq6la^(ni5Iv zb|j}8s@f);Mvv>`o;;lD)1_@RuV#fg9V&+?&z~R2G~b7ib^rPY^R)o6TxO(~AeA5L zysQw(!*I;**BQW9unH#o%F`Y#BrLZKsz+doeVr;eUY}>!A8pYPia>KQN6tK*Kh$fR= zO?}f@3K|`E?opO!v)u4V#D7h}a%1ldzkk#3tK@WNF~9H)Zix*Ugmh6oQ{wObvUVr; z87pO<*(w-n-ETyD5#i=c+t(_*9aQ<#=HdN{!spUnNcK21Jz8ox*UdTa;Z&GrhVyQ3 zd|_i_y)^!YC=@5FOZY~&`r1)wx8?}3^64=vu+p;D$2MKlef=_Rg|(x%-=#y-k_*3> zOTPRs!W)BTF&M9NGw`ij6TDSu*H!qsmk6kwzWG#YSFCP?(3}meVGe=q1#`-GGNuD$ zCH^L#q-hSh{NH6=f6(EF9W!&L;sN0cV$>(o$Cz20LMWoA=_ZHqU8;5IQT+z%n3Vz`*kYH5v8Cn(&WMw(ev`wZG@z$fOBLi;F(sVw@Z= zS_2q}MNv2!U1+sQK{3Db#if&$A5i2_nh{4#5QN3oQZ|`H+nA(|7mUUhLhF);`)r9O zY7>CS=PQXKIUCLzi_f&wGCR$Qo!Wudq)r8JR?L3nkBPR?paK~y?%HtCufdREWAMA7 zsm5F7U;)awS*uWkSuOse^Fr-x^nb|>(IEd7yZ;q*7hf;6akn=_K*4N*pvh(k8;f1c zBptnp0Oyb4-tlU;1W$-B$(R$@!*WO){MAa|ztVlNQMb6F;%|@ndUIRt)_~9u#%X5- z8$$h6mCh;tAbGenwBR3!F(Y%e;yp8fSy~EBq5P#5ze$?%lh6J@bFbTX9BdEfn+z~# zi3R^YDq_rJ^3&7bCnKdEU1BiR;urJpo23ReaKouaHY`Ova{!e4_5*%Q$;>#oB~myX zc$A@ZLh2>x(cp-2!4|_n`Vh7v=|lIW5(pxuJ28h|y{N5Fo;=ozZI?j)Hzq3%)XXlbE9;4!iO-g9cqM%P9?vdhm zlf|m`qv3{v?HbQ(wV(kyH-iJp81OLu z{JD~HxSg`CY-VPsZjnQlvuPGQ=9FjET>3UtyW~J1>iFwJtl7Bb;BwU!HoU;tbs52s z)?H#j4(z+CA^4bR-vS(a9$MtC`>9uHe+>MUykZ%!kLF#M%Iwy?>(BT|KU$S`+vHfM z>&H2d5sUs|94R%}xnm)Xln)!DgbV&T*|kvaGR>UY4%5IgFYh|by&vZ~eR4YUVaF7( z`!O$O+WoK~NfQ5PKT)3Lwv6dKlRmDfr0}$oKC6utqIGAGY8P$LX)%zHg znc4e<^w{3}G{Rj#r zpjUwvKbCddeXsv6>%RVHS!ek2FQ|J{8F~=&{%2Vy9Gms;vhKUT)bF##`S;(e|A4wH zN0GjNK;7Hx^N)G(edn)_Wu2rW&=}*xj+rIER1W>ousgVx2mNcuOnFtrT9Fz;wz;$2 zYe9tN`2cm?C`Lc&4@)FI?3gu9;fx;*JHwA<-IP-V=l`3AUEu#tP)AMuKZnWvU*kCd zA~Y%5LE%uSJ0v_KDO&MJr0pI03|w=`7j{IXyWWXr@b?UVV(}QP5y$TnskHG2rdq5Y z<2hkSSV}95kMSIvCPq?pYo!u41K!$SnKr8^fARkm>!iyROJ(hoR7`38WGZb|Qyq&2 zlpsC_?84Ri%#(v)m# zG@B-fB8e0rqtl;Ee=xa>G|yH`?*Q~bV*OjzAyQv~RD*n*hGSwkrPhLY*}B1o$S=9d z{Y4CNTZ3O9(2R@#!4R-13@m#Xw9}`Er|&3={>yhK8_h^o#yX~2We|oS62oY(Uk{VT zg$ow~r9Ss}bP&LV4^)k%fw0$r|24220Ddaw334E&g$5XRe+FuazjHmq2SF4_8Nn@a zc^>H4@l_R*10=F`gM65v_kt0Z+76>5faixUnAlOI;z;#e%CRy=>7V0iPosik7_cKL zU=OX;OF~#1s0^@-5xxPHe_Wg&!wUX-{{GQgi#`mYRMZaBL6)pU4^fJk6ip)z=^~ax zL>)zoFwrMVPNMF|OUiP)-JpoI9G1q(k>U0ZvkKrlFvt&6T{z4arccs^?^IA6#>>NcjI?q>+qk2GAtX9 zaTia&BGYmp95#F3ICh-mKA>9mqnLp-Li<<5U{y))0jijw-zl`A*4j3OHCqgE=SzKU zyTSS9UXIg0Q69RVKgU0mgS|u?Ld_SW+q+7v0_M8(gD>lMf>g!hcQ>WJjosvBU4dAo z19kg;E|0|s_gD&|b|!jb6rh<7XUYYAPRavm_(I7K=mwX$#M8b#u7C{RZo_~=MgYjJ zDSmighuYdG6DzVuX|Ns7>J zqX3gLVLTAF{7Ih*@K#$04dq6{)TIExjVpxZm}oi)W+1^^A>C)qBKX987=o8Z2!}TY zi)Er5PI-Nhb^f~_Ey|pl$2P9yS6OcQHHAWxZmx!18gt+75C6g3A`A*QiF7ANmtU6! zP+tKew7;Spljy}igDJEsZo^}dbjymdoGIC_S5O5Pn^V>YkIQouiezCfKyHFmKp*?M z=(4PNjNe++n5WPoesS42{Xw6Y713e?j)#6A(}_xW6ek5U&XFpB>bK}V(fO!m_zXNq zs-~M!wCMs1)!oS&h9F6j<<0L305Tc{4k?;e})t(cKn7hzjhO9i5>DE z3li~ETQ_c{ODkxrrX?q|Cy}`*rtv`Qm)4aCciYRlR??dC`?}2%6uA~1?3^H?#w=uo zt07$5(Ynszf#t()8>!LzQ>hfvsecn0u?kr46D?X+vDnv>J-HQ>lZPV(%W?u?PRzd; z_I$;hQ!nAVIaMIo>X*4$DfxqI`DXJBaUm#G&^{dB@Mm<492>!QK281=3m+kKpiP)9 z9fGvchNLFJs8(+^0VEYP)np-M0~jgSrs)!_M~L==992GN_g><4Px9dWIoA$No9&Nr zUQp6>sgs$yieu*1^wE_KU%_7+9zJLaouxx3jolDup68myFR9*WV;B=`<#92Ou5^OI zFy%`WddD(nlOo%g!XIpA1k~CpRc>g`W|&AmUl=Xcv~Ek@w{)nit&y9zhLB}GY8 zC^<@m42$h*gimS&#x;P*H5fBU&r^dwo7h}w>vFQH_p`p?npz4Npc}1sqEKIj=o1{4 zDB=#G%jOmETk@@YD~ejJOr}fJpyz)341(9u%*#RQwb;4^p+z|a&n|3j&OLkMcrZCO zXMdm4WVObXR0xtf%6u|?ESkL6NC!2j8b!C8;E)ma=QJWr_hQn9B z0WNz^UwuFW4FHhH`!9*upN|I;)sy5vGUZQ-lih$W=2@XKnM5YKG-#g7SuKhDNpWWN?Y4;QMk{N{DRga)S@)-m6|YC--~D0AZU zPIEH!tZ%I%o|c1jewN)dQ1bX%odo2|o+rX=GHk0_<^et|p1voFu)IHvgTR#gKZ47Z zlrK9w$^S}`{lxJw)ZmP)pr#28%6<~(Tlak|5%fDz@!-*LDpvhOE_!_iwQLy(WcQB_ z^MitidD)sMb10Awb{Ak9j<5V>831B1)qXXWJmotXNU zp=}f-qL;~xn|hYAnaVTFBzH7Nn}mJ4LE(`N=Q<@&B4YC@V!wj;Kx?jI zKgmJj5v*3Ad@}T4On!cNpbiaO`!j52NAz1{^fzA7(Jo?H=me}J?;&1}GcBI%$b`(U z@as@^6Ans_7QLk|tInS)cVS9$7UsV{yS=C*>~6qLWYOxt#Ql*ujOU4d)n-Vih|wvkxPMLD$)$(YaSK!?=Lqsz`=0(Z1f0=J2o% z6!&J*hUDc-mDhrrACG*e7B0V+$CB10a(5NTG`BBd^ru4K2A{(Q@d9AAUF;;io7|H$ zUILLeQ@MfOl%eT7%6_cc5<4dB&QzFMWWH9d#-k@RdB^xLql^ylu=X2bI@Zc$H0h|4 z3H@STJ}(-c-F#%3sUO}l8Yy>;R$3&Sw5K%nK_08a6`Hv=VX@@IL`{*fY?y#-3w&Bg zgJ?UuFOcd8IeIS;x!F)?-2svaN{6S6)fmKw5Kxz{6xAuf8?K}j;71fME58~lEHisX z%|*#tFjPiU*3F@s&WsY*gbScfwkcG6qZQ7cDvBD0@7 zRl_Pvn67{=I(xr6-_V@>p`6Ki6%Db2**LPX3emeIV!3tRim{Kq64OO@H~#e)qJ<8lNKxhFT#+<8zY@(EK7 zE<0|mwS;l1L>Z*@9<9N|U&>j-tPHZG#K%0Y4&z)8r~c;AEQ;fVE!^C!U1Jr1O;MtH z7mpJS!&XB`t`qjf-BFX*TAe@c&?-daE}J5WkC={P^c$nqa7JWl{89(wyt5Own(sh| zR062fX{r#dv_Ryp3?45LG*xhsU5WAW&8<=5Q(P%UR$*w9@^Z-K1H&VJc` zwBSu?L_Ugj89vonvelH7mGo#{BiRt{n-CS?XKR#Hufm9g0(|J1XqJ)||Gah&ze?$9 zRl~V<20v=fY&ZD%ag78{sNl*n68945sY+C9<5B!#0<;=k!~#igTe&f2>6$7B9-ZhO zP=}4@s~3EQteS#sASWfXhmQi?R3)uX-6=w73VZ{Uj(WVa-aD6luS#Z)w;6OE`C>QB`(mx4fK$N7Ok;)T|_Xx(r1+tH;C=@l5Jz8t?^?B@|E-N z*N};`QkCy!FpI%ofsHN%b{LyS%2suT#&+aAcjmL#WxUb{%UL*0xAr=-?+xeN`?zF} zP$guP;rrHQP9=nCg1iO8^y05m2Q1W7FX9ifE zTG5NzdW}hKJGHkmx*(<*0h>y=U3B<)@Z{GPqNxL-M!igS-K;VL&996S*N_zH2`j$g z8mA3Zzd|BY4ROR=gJJqFBnFX^YQ#uepn8XU)C&*=LuzR1SOlG+$;UY4^C7EEWbZyJ zdXsWxO2wV^CCiBz*p*Ppk&WQ0YmrTa3I5;4bBsfJ+m-Qzld*!6DSDF;f<58cP3UpC z4CCX^!8YvRGU^iK!8CTmQB&DZ(4u^Dic7wukR=TT@@8kUu-d*c7HH{xkAgONG~U!$ zwr^faK7ta@!TV5(nU0j8zU=4;gB1w^{eB( zi%pht-8KhBHg}a%v4h1+#d+zha;FUMaS8~k-~OV3G-r^F_}b=>EydlN9-#(zj29@4 zmmWHrzNFJvo=X0_5Y`SGfNM20xYyebiqqCGy_CjM z|JE)|Q>tZ9DwlU2^Ff2+^iE|)8d!m+yHqLtg7%n25-7fhV@^DAHuG4Q0-R^L1 zF-SDna-e0=@Pv!sYHe!Q>3J5RcXm*NzvR6>71sfl(Q@5*^N1;_#Ne|-n5r(ahfZ48!O-z9Nwtn6Z+G`odT>;yR{}l|= z{uTZ}j;e-oR`YmzMvuAoMYDGy9Of*P_{s;X>-=5f*?mnVCtXNBE*x zOm8!XMdCY;lQSO+Y1APDcN)x|3Z?GlKVk7qQ{j!+{Qj#L(y@n%re9P_LhfP-Jd>}B z_{jt&O54 z8SNDW(-JQ-xS?JPrB1&VWfG2Acrb44EiSN#+bCaQZiO#Vhc+q-yAx=;Dj{qK6}bA- z;?+#Ce8o_`=EPs!!q#n>2|18*+%>eeg3>z}hzR;yd+?`G1o93H?&67fg<5^PiEH6D z0$+pypvFI#TwWWDDsTYi3?m4x31A#t0zzY4kU`VKfu*orVw+7^{l|9sQLKB0LPq|F z$;E#Z>ui?8-Jt7s8h+bqn2lpMz3hBWU59LYeZw+ZA7lEPpt<}zaT)ex2vTe~D6}LQ zGK6issJZod(FGuFq?&y+H1Q9U!!wJd`9n4M!Q>Dtexo_)AD&A^JozrSt$Xu<}Yn191i|(yx*yZ$U zx7e{gAXWhc{zfF0!ENduaE;Gzf`(7tM#Yzgr&?qo)kCMIW|(rWYqqNKf#4uk(`m-a zD64ldR{%9HbVKMFh70jqv;?D=uS6Z#QAcKf18f0fP227>s=Et_)wH-WA?D$vSY-UY zLq|cMMEX(Ldw(@@lgv`CRJD>GU0E^@^Zf!Fe!cvD)oMeWKG4MjWfwXsw5~}%t7&L2 zt>T%i2blqV;MH?j7Ui4HiJ=!ZrFFFDJcTQ+7xK%010jIkI}=3wp}bTHEh*MYjw#7L zAmM}RqQ!}QTBsuQ!wYg3RgTv>Cvg7u{1~Z7I1Fu)@-+$`Be;OoI!J9B2C&D#%MJTo z05o7l!NTE_Wt!P%m%YtK7KfH9hQm)zW(M=-6=$AFs{xfIyB7@&SlTtAAs}<70LGP& zM$tfrA;iEHhYK5trAPBepA~n|_EbS7sE^U2a8A$^qX3{eCm<(xoubOq3uGfp>65cz zQjNG{rZW9Q;IC*~O7J1#qPCzes@uV+Q#Stj#+dR-Fu^(#Z1mDW#0_&P&7^8+HWcL1 z8N@wTSR6VJjIA35&GxOk__F35TZjv`os`fv4p@hC{I@9V$lk+M_W}IUeSaE;^uN5# zMltv0sxvtGFgCq94gTP0Gfvp#AogXfP!&Nqe!l{&7JC!bw9_BJp7zF!^2v0 zMJXE@!+ae2bK$(naiLJmwzWd@eAq5k zl~9;gHFf_!uKrW3o94Y(ci)&cXY$yzDAXr`XDFKO@Zc92a@}^BSNNSuU!~`{N0eOe zxgRiJ|G2=%^yYb3AA;U_7z1W`cQubaw*CkPx(@$7&MrdbDAtA7{0R7aKhJ{mI~ZN*AKN8K$>qPc zOU2QDZI_?A3R%29eK0vv@O3BfpJLs0CYrlW#_}@GpyUUW zWAz-4J@_crjVyk#MSPC^uw7bp1;`AA^IjK!0VGGb zQ?GGJud^#>FhrQvnsUi#tNVW{)_u$Rp9Amy&p{mk1`_&Fs>z5b7yysVInh*%4}gF_ zU^r;{fOn8c*Z;yh?0?~1>%Z_W(F{4MrF@zM03ply(o!*ti-v?2<^2!5<3qCg2i_t0 zbN&nOE~JzGg?G-hv{4`MZa0+0WIzcJ{tvuM{D5~RmuA`>^&jw#>&uGOYP~+6vI>x} zR*H1EH;Cp&V*=;Xzwi$7ytCnG{PPH`1afzaNLj|mpl&7`<7BRA{bc4h-$$yB?Q=#$ zGtZBU_39Aj$0059>+NQ$KR2@YXQ5-Q&PZ?!gCB!BXjojWIX{4Ikx3y#P*v{H-Blg{ z%W|&27XpGw^~VeX`*)k`a{~L{b9+ILm@S^Z3Q8iFfRmfeP^BR)OJEP!H6OGe6bYSV z=nDnk73>vB#JX+hVK5`U2WY7&vmvkBl>>yPjqIVNW1JU}WFfg3V z`9p;Zaw|k2*sx$M# zWY%#9pjnzz5>S8H2K9cmjxHPd6SQqJg!Sq0^YC@XL=)75aO|hMC{OU`!quX^9U{6#U1~1S zwjhYLH6hx@d^0X`)HJ|FGkS5Xm0OS#O)sHf90q=bX;!E^}l;<nH!IF5DI1m;>-tp;O+GufSWeY;?T(me)%$PMRV2(>^zLc7AMj2Z|Jm4v z1#jixnD+l5?=6_(>H;=fXk3H4ySqbhcXxMp8i&T+-CY`YclQ7Rf=eJ+fDkNL(wFy} zshar-_tyOpr|Rte?6np@&nGP8NW#KhL^uu}K4XqZrW11n!PM59$X_3?@J+n&pxDYX zPqn!WHoUWaLGm(CuHCo9a5=dpa8wc@(-+@PhzQ^r6jR+;f)3>%n)s9IDy>?kE#)}v zej}Nqb^$UEUv3fG%Q|tsIQNIom&xLmB7znp)AdQQ|I8Ewe5#>eExe~XL zPX40z%E)Y|q+!)k{tK6rRuV*2Uz0q*)YD0~rmb?YL9u)=wcr)aUlsP_$)nCgRA7?6 z&3v{xk~>A1KP^Q=X>O?Uux5mYOrE5Zj7FKT9a=5_e}V_z?wre!x-+E$wY5rvTd;Xc-sQY5wMzbA*n++ewwQLE2rlKmCy6r%OY99R>Gl-Cmmd$z{$Y#+ZG+)1v1=x~I zR41&%%et$;Y<%jppjaJY(CV(s`vb|KZKJZR+R+6kIO@ui2qmJePS;9WzEKKg2fAno z*dUgA?Zo;`NW62gP03PObV`QJ)d8IAJp0p{ZY+BnBH#re9oJcdz2Dp`Pev5&WK(T) zFoA8wW9Zszw029~yHQM2vp3EgpE=`fNWEs}!aVh)&aTv6obVy?*pZd*&sGihDEY#> zV|!0vdLMAs&y3L!)~r-;iHrl67j?v|1w`k*y zg|QyFHrK;dd1-NeU9G3|t~cCXl^=_kWcByB`u6t$G!^?JEQ&qIbW-88qSCUyZg;Mi z$Mrg$u#Y}?M>q!r_MII^J5>(C>E-X@EXD~zNqe!iqD~SN6GFer8#FxKZ0rpebiXcO z=IMpxDOyWuto*#{?-@3aY7?!j7a4wUV2l7l#(yuQl^_2!Aj(4scqWk!`$BR`v1lOX zlDu0rm~l!7)jQ3($CKaJR`gpDEnmvpzy@WJn%5G@X6@ug)LxDGnR~t0#nHBaE5{T> zH(4BgUR*nj4QuhK|LZ9U&^O3ALQQNFeoFU=rk;*z5JT^qb5iFxa-%)}cJ-IrN#_w! z{QQsr-x1h4O)0{O)|#%)w#y2gE+x3Pr=};>J71K)d7B z^(NCUn#f4iL3f>wi5(^`GnXZ1nalLPUmR{g+cbWPPrWm8s&{TnrNfl%Zz4A%l?T{<3{5)@T}vhpV+o;&h-z; zyeS`#;@0lc5i=vje1oU87U}oB;013C3~~ccDtJ@Vvt#Yv-f4Exea$pGS{K5Pw#I-G zxtmxOSYgDUC7@WNl>IN34qrZ5ajp?+rB6i`zasdEkTH~sxGMHvFLJJ1ket@=%*~Er@@4^*b9+`yw9t^5 zXxtfIV6E1{wjBrVr$@O}ayr{#dk8}L4a4;~J%nzW@nG74T|7t=2lR^z#F1kTB_NFa ztb|Kvx%WgdjVlm#kK5no;XTH9=b`6rDLg7ol*5A*>=P<>3##YkdPfLj28F+#sWLqC z(^CO|KS4Xl+0mVZBW}`j=K9Hbc%9sH`r3qjPxn@d7I5(PEr7xG3HNG8K&m?nb%3(o zuwyZ-2_hAb8ug0utBi6Slh*7BGVh7%n-KBT3+tm|&4qC))()gO#5I6XJG+le+d#y! z4Zo}QG1rs+gb3t6H$m-`4%C-cii}z)_p!D2;nlbJyh%c)EyRaKi*Rf-{5?qjnE64P zUN{m7-8R;|)TlT&sy+r#3dvQhss$kHM^%@D$`FM#a}<+$Ncen>b0Y(j=vY0XfVldi z;ryYi$L1FH@S%uCY=_x}HSg)UUNT=uUtLL%B(TQ?L$@KgZtlh~7Tq$OLVip^z^J$6Hw+_$tG<2sf z6d6qFRbgHHq4>TGXubr3(*|KNG3G6)E~$o;3bc>U(SiyvZ9W1AF=@a3#KiN2gV z>H-{q^?N?MpPNtNN^--yqbb#0eU;YE!(nzwiy4Qi=qU6T;&s~INL zWk<%5%(Ad}jlUDDMZT}8!DfmLpt@GjcFuPh|6v4e8OLd7`TfYT^R$4XhbM9w_;3#{ zC8{fj2-TG+N@i{Y>b{i_x8!u%)P6w%xcIv9=haDotYoCf(g>5uk12tMFlv_ua<=^X zzuBk-tX4M^*-Ha-h;);16ISUeT7|qwN9yPaYGDz$>bmTS=&bR(%@}QrY3t%3-iRxX zI{NXzq8T2}zR(|a&RmyuIR3Gkl}*<9DQM+(CsWxJ*+vC^P^6E{s(kjcT6sR8n$sU? zR&}+?Fo|yn&A;@EMz7orGL=tP@2qUp zB`*v+XJ}DTWsL1X^CU?Of0FJqjpSHwNO);$@5HHFz^XB?8noIq{?uiw+0*-@hrGA- z+f1Nn0%b-&v4RnNypwJMVs%zOJwTEjrK9Qc<^*%*m!>vo&q4IdQq)#795}x98oW zOB!ilMze1_fufe!pfzexte|xtk4-|q_wr0CvCB&=Li{`-Iofd$xuv6&c?cUqG3fQw zzlUN+)Y5Sz+;gMl`&&k2I*Yd@K|zjIv+&hMZU&Lt(Hs|r35o=Eow@H#3A7tHx(lt3 zOXAg8UyMBv^h+y!@u6AWfm1=2(H}b}-=_4rK;2?vRFYy`rG6AWZq};@$KBXD4_6s;_jo^aXn)U*=43fALjx5?q?_npKfqA{ z8>zceIg#1`zUFfx(()fSOp)QAOt38d6oSfKwi)BF!lZ8RfQW7)kKLpk9*m{+5tDwi z@=5LTRC!1jXGmWQmvFnJ0{ac_e?Z;Gc=utx%r2ZweIIR#P0W3t&4-Z8m5R*eEzB+{ zv}etE7ml^S^0RSE8$vn34&$?{2q6ci`MXW^9H0zMKDB*#w|_CaH8Uj!CjvDyruo0> ze!r{a8=FwwSa8svsJfNZ)?3^NTHG}Dk-O-feCw$dX^elt5WrgyUXGiOUkHn1di=qO zj#bmxt(`8-z;5gbyF?wh4GP|4 zi62s~?A_^kVumNEgHJ%k#%IpKwex_hA;KRozg!Iy_&%@+%2qd85nxc93QGvcP}^-*_GbFANd-^7yiNM!0fQndFAl zkZ!bwb6f8fQx2VnCT!SxKtH^D#c&f|ro0F^2g6%8_Lph$_y$UsWq>E?xIFaPi1aoJ z+*cTj){+>%YNIZcY?azB>*;YlqVO)qGVgoK75Llx)t2JtB`DUNhSsv3=}P4d z+$|#Tprh*Wv26Alr}!Y6SHgHm5=<0$rss3iq6xfo5zKrrmH1ED9s4lD_7Tof_8}F& z3QN(wmPrh>lv{_LtL<9Oq=NU~0McSf_qA&Zc%^vhLNdE0LxKUdQ#{fC4W zDj73hg8^c3@M2rGpB+?TmCd#;nQNngQZO+QULMK;)AJ(@{)5Gw(^f8t8cmIBzw`G` zNy&)NNd@(mr3uXNT=VW|bj&r~BleJ|_v!-Ij{bIeiW+>kZSmyX&k`ad6KG196Nyti z*Wf!*^VX-{zwz?4N)$|V)GGsS;hnT4M7IQ&SI`y^`2ilDwz1PDMJCN zwJORI_-jFbPt;YvOAuvZA(>VZ)iD=CgJaut^v;aGmH6)icyw*m#}a;0w;ZiVJggeK zrbpg=1_@usS3 zPVe4XUZ+^@@+}5A#_=li{7j_Eo;8fs@6MV-vL5^g${5ni;Xj3PicC?NY{d%)R};e) zUM*0pMKJ|5{BekQ9&yJHi*!`wnF(k>Jo%R-un{5%$#aCkWN(x+oCpZ`8?9zHS}79d zRP#4%544)LuY!}Ww1seH{%rD!ehB(^$|vuCiAD}^V?zJ@eIDVLyY$4Cu7Pw+m}Kry z-GcJ+0LCE!>2?wt(ieVN|ErVFmT|v7+np-*R^0&o-(M||q%+~kn-cze${RqdABl2kFsWIkIA&w^ zH+pq%#qxcnmJ`3B(}!QPd@`tXak3+Vdz~t-hDKRc}T6r?jxi+OgU>^5LJ=*Y1&!tw>sRe^1-%!el zS()8S&Z9_2q*0EMl6OMkT%@sox~U~xdTKXD_^S6;l{ZWD#_+1C;$M_iSqW)9%R*(+ z>ff3H!Ms!goAQ2Au&G{u4jZ7}TK^mGzVzntz2V7(-a{ULu-4NgKxx3ji32E`Hr-d}Gio3v%(Pa#R<5J(aJaC?@-B}*3 z`__xXc62uqk6~W`Y>ZIH6w?mTpScR5H-EIVv41L9Wrc?(5F;J2>SNrnBewj+WO#ZKYr{h|+Fc5gCWs#c@ z{$vaDqTZZcu>Yt`I!5;xWQZ@kl0AmB)c4*r4X1+pA1 zBTRbjq4-4>DZ}3dO8~Uh3f?C9i zfs7IYHzt~BNCKrgIuH`Qs-~&uGN(m((PgCjuL_pbm69`>!T}zAvovH7ZhR)_S^-pO z>ufQz3Qb@*GA0JOmZQ?#V8k>f`wQ0vjR44&G6y1$VOs&&ba}*+`WI`HlTR7X(k0k` zj01ueCPAZI$guue_S~6>HoVMZ$0SUDIem_R?azpNNgT2alqu~eh_*SFt_IbSg|u4* z@XONb;QI;cW>s2opwB)Dt~#M^Qv?%F z)@dzis%$cAS0u7HIhwZ-$y zps1?h^3}efw>$vG-Is`d%!-0()v12<>9$m}KnO>z`4a`QvjD)G@7g~XxFel>7#(N| z6`O70+L4nSINg0!R-hO(8~md%1GGHyGtWS_^t$ z!bX4zyPqHIV0c)T##fP9mN(+wT2&RhR_*#9^QEqp=iR!Yl!N<*(FahsS*S|YuxTr| z^|>qWik< z*HYlGFE%%Uw;$%q_uc0IF<-K$z~3&2eV8xjh1r82H_XU|A2;1T%$Er%#nLzXALh#! zBPX|z*URQ%p4Y4451_8Fk3ID7(}5Y$b3#^fDC8fc1nCvp9R$l#N(O5`0?XtcCL~S) zLyjl`bNLJLd%{PmPG1bc(mjGixnxx61E`xy;fuy9LsIJ*6mzifVfX;*{A-4hhdzM1 zNR!UOkzt}s_n3q?yjElW9Bu8{wqcpalk&`TmPpJ5%m{uw*8?j2VBaHHP* z-um5u_p1^>V7#sqo3n;K*WlY+)z{9e*z&-jkfM1#Eb&I*ne?@i!0JS16t-I=p?mZ9 zY4}H#NafzPAM+Wamir>V+(eg3_cU}Eq`l6+HXH&TkG423zg1$X;<)EJn&a4fVje*2 z=cj`LprTT6jDUV0kC_~AToT+^A1n((%YDS_KzJ4S8|#0(%pZQ`hU<~L84IqocEU`E z+!781Dni9)kcWPbvWqkAZw~o#a2s?7fw?_}mPFnHX6XKzVkg;K;C6j(DUTDd1zE;V`S^{Q z!Ik?Qsz~npN$d4_=L zigZzIsV&Rp3!pDH)-?>X-m?Ik)tZw@l=|jXzn&D4QW;#rS?yI8i}&j={H&Lj&iqnX z_cRBcDZ<6WoI!L;$YhvkprDHliG8_jDAIVH*>5AMtu9F=oQJJM zx?{EvDc**z?sqPSJu5^uj(qTUusxrY-%Ca@mx+$l^pa)TrdhsGaCzP#b$eE@^VwDn z^)K#*_p-jdwRr&KZ3~z9_~c4`1Utp80P?`}^b+uY1g;$sg zCmHD8XAf8`>*yH+Rt2enUzOBh%C=Xt0d!Bcy!;Ip(J(BD^saiAfgoGaUZO5UW1@zF zeP1#73?l?BeC~C|Wk;tlh~_8Pt0PL#0My#2>PW}qOjbsU%yvX{h#U zcdo)5C6)a#0ifR+u7IsdJi@Ru(pu%f_7X01GmQoQU+?$Ja^yZYLCU1wP!ceHJ&Sj` zu^fY6$8T^IWSNJbT)TY3Q=nivhA-YoR#iTej+nCV`^AW{HRmrl2(nJ&+{R}=_)?1% z)hm^cOrIQ1k6fp53LB=d~e3SPopA8w+bO2zm$K8APw>=sk^ep{D-uBLURvy3~PU|8#y2R z)M(uFV1mRl4WTpbMAt_2HzIPGNNuNZ;xf@%#WgAW67E`CB0y2AF#b{#o$p$6UP85R+Njm$3oK&nIj)fPae53BuhxONJ8?LAz1@( zsh)X}8SN=RFZUF=C5VioKf+m^Ak|T**{TT zXJsxCu}tUOPV7)~#gi8i%-a~@j$L2y`!=okcU)E?m8^!$51I1Sc_Jrxaj*^8S&^yC z41;-R1rpNGS`s!|nzWahmA#P~ z6!dED_0HNrSYzqO2xIe2quwmy{L}Pzaxrw6$ovg;vkuO5C+tssIrOM}BbT#@uuZ3A z7vcSobe&0><9buGUq?+M&&|&(V(Ks=s;=_MW+1-v`Zv}1NsVBNPwFJ=u+->NsG=^v z0lNEgeK#?|l8%2iaMmgexNH(fHG7dGxo&RN1Sc}K>2yRUNu<)|O4_)BTa?*Zg;VFz zOFa_uqOG=`(CXm5k`+^NdaU4l40HgF>FEPGu{hw|zpF}(Y}Kvk!rb7rN+-$(CmUkO z5@g?`d`(*lv}SBE8CLa_m`rw~Mgx%8KJ8R= zJUe*z4~AAo2ekEWg#LWr3TI1arGrX@49q5cUv{T9xUJ${#$GxfPv_b(x?LUnV(==f z{0CokR^@E0Nx#W2`JG%NDU5*O)kdE@?0Kh1Wa8CiQT|Yb`kU%%m1+9iCvk=oswCWX znYSHEFkU)tP>8Cuz^r~roJhSIx18>Jz9%JO{p5qd`w>P;&-kb_*rQ*!8BeXDj2pw* z!tGs)u%_uCTDNyZ5bxkRfH>oAksUC_rYbID&;X0yTK;|c;Ec$O(mwGgw{v&wHAKk* zQOdL^MGbT$?sfnhL#9$e9)He(E%Y_7*RXO}^Fm3lTuO(K@3fPUA?>vh%4}^#DbH2X zRvKG|?aiD$Pno*!`^hc(ZGjjKR9)0e>t}TD_wSz#!(xio(VI8% zIYedraYWq7)TEosrl-q`mtEF(R68JCxzzt+jT0n|!@}lyV#@rm@prv=yp2=sj|HAY z9WLTlMW42d21$%k0CV-pf5w?vVdhDH?YIf|4t;Y#dTwZ;{6uF$cebv?&=AHt71u6| zI%41_RZr_|XcO_INcl^n!9BlA_pv1SE%|7uA2NpAY~dpqOzG&%5|{u@M^n7DG) ztiEBt{gWd=u&9FT9R@?@p3air66H?x=nUrNo1QObSZDEnPH>bxL)`z|7d`<#Xj03z69MoMXdL@y z!h#VwDJLz67%4LmF%0mb$(#`z^(_-j1W$yY0D95b=1X2JL5w(X6vqNZK18ebt^wOsTvuM1oIR@up%B! z0I-}A)$x6f^dI{;GMEEpL5Nw-n-ED+%I{Gq{N@Th z0jbXhB7dkkWaFrA<9k-b+iGLc9y}a!?b!~UY%~Qc5sf)xbtPl*JtBb20!&UoW(xuM zencKOkY!q|02&S-12AC?QS56h^mTW9Om&j!*N~m(SdU6MqzLDiR*Q$z;MfRZ5j+K# zQ|sIea$6jvF9J@k?kRrHG2`8Q<29CUo7!TlDcm4SvKh-w0l*MnG698@{%Yu)E(JM1 z5H{QkA_d%}3qHsotUHHqolI>bH(>2arcSOR&J(&e~bM&cyMkXZ}MB;ZF?`f_P=(=4LiqC(ltiF6iN- zQ2VaOQ0!tdJXHz`zPMQkBALfZ+_p#Kxo5(-F|b zkL(gQwmaMt_!XNKi-36D1%oa=1r*^7l_P|a+KvlQ&4X!;;+0~|Q$_+L3Nq%|a~@k+ z;NRny&L%U7^PPI&?Niz#AL3>m1}^Gjqdb9zd~?RfExiqL3aARQ$HeQ-a%HvSntNgH z<#@;@G2U$5WgfFOF|}I`9JMtib;nHWm4PL(ocFAI|;>Iwu&^u z3p{3uvT_Z;;Kb@`!Lt*9M|Yvsy8KC&L+vxdngi)a_ywk63kKZDHOi=TUBk^0T@-3l zOf2pX`T8XzA&n&6-lU&YFpJ60W;6rlv^2Cw#*^b?V$VPTZt>Uly__C_B7>oS^LSXJH**x+ZGCXf>tS6-v7VYgGo>P(A6BDiSUy$Gk z@x9Z9!2j`gOkf)CsKK)$3H5B!mbkMnE>#GF!>WS+K`->ML&h?`z{_vvM+POca_e4N zg&Zp0L?6VV9?cjWn9M)5SEJyPzM5YBkP0S;Ki|P(pi)z*LTOu1H+;2!H1y86maZ{{ zvyc8}o31UHP7;K$%K3WKObt{_4dZiEdrbUB$dPs6nCTxv)T{DroUtMb8YL1GGf}`e zP}N#hCC2v}&#!6gl1*ZDcz& zBErQ~f%HRlP=d^bLfx_p<8A+pWBy2IP*$m}RHS5SXF8z!EV{^y*~tQhHA$}<_$oYI z1TkwZZ7=FvXj>cc##v*5m)TA= z7&OwO5fzt;0t;l0%Rz}5eeF{}>5FUYt*?)T2e>m<(8JKC-4j)tdCQjd_W+!d!V;SF z``g=gD6;zp>N0wB3pxvpLOP`aOdV8h zljRWKi;*4j0NWdpK@2WDz7+FfR6QX6K{NoF&RXR4j3&9909J}IWo z)Mm)M?~n}tT}^I}$5ebPWOWHY!;Nm=?e>|37M}bZ2l37$l=7zc8sG2U3V0UwcTE)y zAbBi~ZQ)M!R`02xg^zgMOvBvQoiVm6m@-=Z20KXRU;Pf&kMJ>6EhDSrej4h#RpR6h`2VGAmYnL7`jMP9vcDJFK2y0wLLvF19~ z(LM?Tl&c}Sz>^cRatOC{skI0ltoglWkvaOSN@kN5PC38JYI|*A?qpUFFkg~FuUyT!^wTFZ_$keu*`>l87 zB52+4Gd$R4v0Y&`+<^MiXDaj0QaTJ#Hms!HCd+Qu=`;mX+SdVoJoBJBd*B6S8rH&0 zEsMKvEk}dc)7tPiP}>sfeE!x(L+2)j#8-sttu(w%iNADiU2Mz@3!bcOQfTy?YZm+J zU1ZDA0#G@DsA9pN^LvuuTRXRZ6l}URxGmzZr0R$o(}^=-YL{S_#T=n2U(E<0!?do? zI_B+kBJNVRnyb4^I4W0jw5j6RIx+?Bj-lc*zh(Ix?NYcvCv@#)C~YHbXKw@pm?21C z?ykA|E{Y4~6tthKtmcGrea7drjqVqbRuVVl1@sZ~LdvhbP)~LW_6|A3JBxxC7&qNk z?3Bw{_O5tYpH~=Re4Do@c9;qeck>Tumy>k<9zKy4(+}?W^iFZB=95Fb$N;kEr?PE`a`zO-rpbWeMHkAr<2F? z4qe>q>SO;`=VABv84bt)5+&~3_h`{^M(T5odTlYyMW zO3atNSGvOMBG1gNlx13@L|}fK{C%(|@Yg@z&CjWtuQw3Xj*(i>)FeA5@Jls!FjWZ0 znq%1yl@Es6)MRLqMfX~KNX5RvCP` zv~%7Ntq|G{4@fW7;OoKeYuw6EeeF`+h)0XiYbruhkF#SWgD6Dz$6Z6XZ}_+{rE@Oj zzCB1a`)x{j$AlcsYxg>lz@n*PKUoPy!n}OLb*oB zERBjv|KdQ$;mht*Jmf^=R@yf<6K z^yL0b?#N^Mhq=-FF5H^c46j6FN)nZ#pnp+5yBb1&uSlwvKNXumjJnUg;<5b4?GgSx zcNGRlL&@MSAV@-qcghe6{GWK;WgQ>_`hUgi&VEnDhoOJ)cYV;!F{poI7wDFA6Qg05 z>U`(~6f@@QyOH+d6_O+=CFR-K>{O##{p=2})no=mmH2GoCOyhH`Q-KO^*0}@7-+jOMkaWW1)m*W>PA<$xknnEN3~A%R3AbaloI6; zU813L5Q~hVBT@dqdyrSWNIB|WrC_k8i^^KA%G6)lzm4Vd>cHur{X%b3uYokb>*PxN zstY!hhrWmnk}gS`WvW7zSo}nw8c7IOMyG-(&$K9jVvz7mksCd}@;uL#We<3x73Y868Ku)AR7C)r7*#f^LBSpo5y)jW?GgCdTmr3lLy`@Lm`rNIjgT) zb*Q8k1hA__M!R0A$QOEYY4b-1`aVEp1 z(__X1g%ZJS(L^-vqMKM1zBZ5-Dyz@xy^2n)zzL$IhMCgnGSXlwBbaz>3}H$*KS`yC zjvOMCtn^J==8@uEL*bEb{OEqxZhGYn*$U3Qm-YV3rGg3X*=%O0zITqFjvV{hDDERK zHxi9yqbGqbBT%12SO2d`x&&eD_g?C5ylvvk18>*6) z#01q#|KsnvwwMjs5;#`jCcyYdDSX?ma&~y zkIf>1{yz-=Ep`Ovr9HpD!z@>;H*|)XG!Ioc0YU}>e4xdSRoCosc+D;jIpMlhhk87* z1D(1zY6N_q|HMFHu&a^1-R+tD>5KUSQHOek{6K3lgRd!?)N?9-tf8QRK+Erg2$Uyt z0nV82c#$Z!wFpq?hVjIe%Je;6})Hjg|AOx2If%M@s=5~Lcu$>IgdOTWjD zt>{CG<1uMlrgFbL=L6~XfL6)Mwk^~tvZ_$laoX9Ng}7PJ6XMFqGF#TkYQX0sq_BpF>#Rwx{C(-42lT+*qn5yiL4oYN>5E@*un3WKTYB2Ts%%9I(jOkzZ1wn|)Q z3Z$)x0*o=;^D4aM3-e-!03_|iz#AXBG7g?Py6ReBDPu7CKClcy5XnC~3W-s=-iE0Y zPor)ixrHg%Ccy5*s|%>$)VfTYrqc{r2)SkUw*uJEq&6-JX^G>_ZC-WhizAP=f9mVC zN5C0n*r<0`nYr%M7(rwxk1OZENQLL?&eiQ{t7pe5KSgQssnnd=m6Qe&p8LMhHC$Oz z3Elqku)>pRN!`TS0*?_e3+rfqYPTONn7~qSnWE`NaZ9m|Hmsj?CtER?<%nR0l9_~C z09kgh>9(ZST&7kna^%=*JH`MAKv0Ho2oC_R0Q}0tKCG468XI_%{95oVYB~rrRHRaz zqFZKtUIg?W)}fnWdt(nlj!lJDB3Ebqf(y69wZT!fMUQ|uitD>A+PdBXOZo+$e{dSh z*1>r8X8BLi$2)xD!{Q@_(PYRoA_sYgxE767E3%9@>ljI5{a688^al5jI&kd6!Z2XZ z&7LZQ_4c@`=1(`k9Y}a|6NSe5emjBhHgMZOtjV*BlXOP8oY)-Xa@>2Sdw6MgQ2&E5 z?^E~7?4e$c@m<6f!{NdbOkvyRhGA^ih=XOzw|Y+$CukXBYXfA_gP32T{!c3ac?>EL z!0`qIAB1z8$}v(w=njP_oe$Vs7Kb6j2#34c0hnwIAjqmm@E~WL>UVa`&CnQ~<;z;D99SH=C=B0m@FG15ap{eWP)ZC?X@&e${PdLLk^y%*g1~x zDjfT$bAs6hIfySpMF!#xq@&`LHVg~|-E?$!FCAV(Z$nctog9zz0cxGp4oirmB6z6x z#gknlEfqi+6So(?siDuQpZ_sb(c5AgxyI=!6)_saJY&gcCiT znRTD!Of8DkC+&xuQ>Q|3FgmPYRCAct%v#MNF$pFd#|>RQC5^g`Hfpy#eJ2oJi%7QB7<%C9FlB(T(0yt=z8{`sY~ zW+hef3`_n%dm17s=gP=MnJ`;3#mi&7d|x7~6)q+*x2QmhQwhh*sL&WON1Nzfwc1ck zo&#Uu#CsO`7=MoR+kzQi$ejNso#bLkKOvOUD050cVIHFeSeZ3hOU6;#O7#&@ zJ;{;SAs<7Uh$RZABHci;9rX0B;EqE1(XQQE*MdI9(OIwaH||nThsUAwfpgGwQCIHe z(xUZ$tj|@9C7K|e5y!nRw2zj~z`4{mbT8jP=Jm|R6+N`8jIB5O!xYhgjAtXYe8qP} z5SfAeR40ycZMQC0z2)D^^;PNT2#auK9DzOURJ>B4rS#f-b(*_SrL>veJoVDhVbug~ zvd3@B?JtmO9K;z~HizJi-4iOuK3Fc3$y?mYnY#_v?}f7!wb~r(i;0}>=iL(P{GCe}R(^ETfKoQwIK3%L>Zr1=v7PMI(XG+uYIvI= z_=2S(108#kD>S(&8B#3K>G|jm7j1M{9lr@p!`7-D3T4@!oiws>O%D8pKPYn1V2;T3 z?TN$KC_c%foaN1!#?9V{h;7x(*T%vI&X@rA(-W^M{9)W4&W~5+7h4@$FuF*AO>CHS z91Jl&9Alc}fGR^g~)!_6GiY|dw7 z^y6cDR;liF7F>@Ci$Qzo@jjtYy5&abhaW@0rs}UKT*%C_%z22N{kE-Z&@+MiTw*F? zcB`cbEdD>39`c61Tua0|ES{T~$$|Hq*wJiBZ=@HUMY-X_1it1s-s>)`TDT;HJy)I* zt0J-KZav*a!p~yspbV6NKThKJmkU zrfV)r!f)N9-OyfrSG7RmrLpcp8y2g{3S4n*6_M$LWsyT%A$vt#ajE#j!Z2Z@8FY#c z2|afA6D27*ra5mID}_sNRTj1#h!HjuTD5y^&HlE*heUShb*|H$-Oeu&#uaxk(lqLk zja$nCy&5&^6YC`Q3(fTm69<}CyxMCu*?h^0^kQikEa#Q$VYaes_WWZ+Yzr=0@B2Q| zr@{#cyEzt>PZti{N;T)SYnj*ASk}3YR&P6?5BD8@1an-C(hJ(j6FKY(Vc3EP*B%YS z!zHs1kLtb%Tyo6DwcXN>TM1*i<`TkduTYa2?45xOy|s_n$(@Lu-nh$AW6|WzyiQK> zB~D?0q=n3Tb=Sy4c#a^PXGq(@yi@WHz22Xsd#|WdjdyH{VdC~4?&dmlk0n`l2;CcD zh4&E(V69poItEc^(*1Kw2>i!0&12wA`q5mA*+-KfRK zs8lP|1(QW|lHs|W|1Te#V>h!Fkg zBC~{^B)VLfOlw%^$0@tZv~FC#Z#>{9wYB7(3{Do(vre=ng<;S+i>S1gdbfDUGyjBK z1XW9v8;x+pCcv4%_Ku4dy~+qkXJGj(nXbp)%E_C17&V0%X>%Cob_U>sbelmUVq3pS zl_E0N*-MvaIhFg7Ha!P;w9Dhc@P2`2GFT%!v;I7Bs@|y~)-;Oy+!=3GY7m+m``Ma1 zKPvw3gV<~=bgx|^2tElqBXFhG)fa(E$=>lSN(*L&|BHqOlBUKrpJ}5<_<%lAt9+6< zMuN+xLCtgGzvD#mdoi4x0Os$>>*r$1@F|+SDy-Q_1R$1HNe)|2+oM`&w^h%jZq)%D zO5!s5oM-&Wb9fJ#)bO%^%Jej{Y6HGwzju28RbKoiKMZShgeeb|%Dt)tmq6=Tq)3#{ zO{aB&H!V|6SQJLW2T2Eo#Ls`|2YAY$r^|d0ke9g-14?E}C`2Nnr@$o)h1$rNI}a2njU`)6Ipoe3kIAOQ$fop>v(v{JoY3cs ziX75nYKRefJ*Fe(L*kf$kF(2m0B2Gi`sv~6RZ5yC_@|Sp=Zb!fjmxDoT5}z*mTcDy zr$~=s*swT@v=o}PJMxM;hBrse@uPl`ggwo6LlUju3P{O;@l+sxf=dPWCJvS34plfv z!t>U2Nd&j&1U#7sJaJWD!0A+_>8KYx{a{+R zXR(ZOlgcJNWX$(RB&dfc%s4F6jfRgq3x`7lO!!(l&Z?6`psW`1Vqv>V5X}Al#gVlO z0-ouJP`L}Kq&&MH0k4#@RvNm<{uHHzNMeMgs!%E0{zC7a#$qpV)AwZ*MCIr;W;YHz zlmX=ojyQb!^tOlvawkPuVD29i;U&kBm!mnOmE>uX&KG{6?9u_e2uV+|v{f%K5wr1l zHSvgCXFzKn*|-m&Ry$k;1j zCS}K@)vaoWIew2imsG->@>Q+Lr?5}6FoI96vAFnir=})Zg=&Ys`(CxN`L*$VwK4e; zc5{H}vwXtaEYjQ9{!`kJGnWNIummXI+LPmvKA0L(>#~jMV#^x?($r6{E9{q*=QQ_= zbkv@*0e4T86tz9-p#K)TkaUGvpbndzZj~qcBV86^Em7@Y^Ud2l1<+`Iq>{AM}m*20~jx zMe>Ht^zC}r`DF*w^%RHc9o%Bwi1_u26x}?u8uzA=eQ+I2_9$yja0$?X=atVy&Aj@p zc=M?)g0Ova41c5b)7l)S7(VAyuhMtLiV z*2YPxkU_A@%hiP)B5dFpmA*!*`E^OdN(@U5sY>J8sgqr8X@PIQYwr+;s!z*J=n1pM zbZUu;QqTq?snzS?y|M~3!>SNV@)`xD^>%sE*Jx+9JJeHm-tm@=<=GtTW3G34Q*x!2DRUn=PaG33ZkT4N;KKM)(0IYedYUm{d0X)e_EIRJvq1c(bBLn+Jl_W=Y1`oQRYnfq4eFXag z`F>59*qy51^Yvo2kp_&r$*r(w>=ZIVnC+eYBPN-9I8lbaybS(RYW%y?%W>#tt26?; z?e=TR=w9lx{~OQG4mXZjo(jdX?s_$4z7PH9h$8XGZ+$S?`zYzcaHahSdg`FgACGZc ze<-;@vF|dM5?&YD{bBAUspjld`{KKQuAgVDHUINBlhydv8$O(# zW*ph_W8IFCZXlovC=ohkx>r9FM43cgN6J=nkgc%~SLjiJEN3H)DB;$N zMLVaB31F439sgmoks+A|$XsKwz48rgcL-XgkzwuTPli$RiE%176;pfnNGLVxm ztM1FA#@w>V6z4S6G;)RBXk7TbK@7D47_xwR8uHDo%d~F^wYQfN8&yzWNE|pGVm=Mi zT#Ocj{1<7SMLt{cfbXp<;xUA}UjzniMhY7Tv$%cF$X)|txp z7Fm?PCxifMUAn+*eTf*dSbk}1cVtC~MQ9~fl@QC$Xh}O>J~1k2@=k8~<-9C}vmjDC zekK-@!V5_HoOmQJuTNX2uChQ4Ugy#o=gV!g*jAdtLJTRls-HsM)5@%$P}V20&(sU(C$02i?D5e64;&un9aY$4%oW zh2RDzai1+9rwIHMOlc|I`sK79g$-MDP+j6XzW?QTUpQ``uFvhx+~}OeA|`Fa?QuKp z3E7K)BGP={=N(A@VR=Rx-4qxK;Zz(on5G2r4Q zRkB~lpKH+n>AelRX0|Mm34Rxmc!tb=cM;M~B$hbKe&h|JCz*m=aasutEWYL}=H30cxrdH``JwdfWOTvkq_2 zC-;P-kkvSvsfGiZ`=0o}QNP-8E`LlGxQHFeE%@Y3e=0$RP>={%+6$s1wzQsYzQryWv6#h**;H_uQvbNX)L zQzP^31Cv~J0;Skws2F2|BGA#{5PVFU?Rap#NN%g5FK+$722VE4n>@n3Ty}g=RSl5I zvljZC(D*KdO0}*0ZWX+AM;&(e{U_wKy#sws0!cjmTN~#ox#&VsB;yY2i;}kI%ju#p zNOB+a>0r`49)yzes3Z7Ix>iwC)6wkPk6S^1+Sf;!TM(^oLm(q1w(B1l=qZ;2SGS!% z?Khy2gDlRJ=#AQwJ51;Ovmq5N4YAT0J=b!r;0APfM9w$ILcL}eA!ECj=kT18>aIU4 z6fe-E^xi7Yt%0_>?U{()%A7Q~Og}Z|vDR;a(&SeN+4*|Sb{#qP-!aQC?Y`Mme3in) zdRrH_@}Y~_F)Lv5r|Y*C2)?oMO=3HUk);(itkEv zwHf!{%iB!OkcNA}wbopmw8&NBSv>$cFqFp{Uy?zdx1z8#rvmtREEDvQ&LO>I1Z@H0r5Rd!#&@=KtdlJ z#~UL0!I}kt?^K3m)9kfMYJvwsvpE@c^wftW;^YSt$>EXJ*7^&iQ&MwMp_3ELCem>M zLn+z`WiZ*?7H4u_#A8#)e|JGIJJZUQ)0lMeLmVo@V=!nbRK7)W{0_@wsC(oYe;5SR z3qi0WbO-3HH(MfCFj%$O=``uESQc3;pQx%jr05t<)Sb8`uw%Fibt@W@ljLZ3FfMHjN5+fxJS8S_=bLqq+A}DKEOIS&!Ji|)%~M8mX+%OAIhE9z?9!n!_JG7^!Xnux>2u(F8q{7FC!?+M1|`iV$Bwnr%NFpp^@c=H!C z%xe^h`Ij*U>mrHEGYQ3n72OHfCq6=$VW7m}lMzM`>(Kxn)cG=Go-7{>ik>VMYITf-2`IN(`{t}a&{CHhX+?cLVWE9 z56nuf89#~>sPZaKH!rP(&2hS+6ir$w06YDtrjfSw=Zws0_96TneZyCI zlR7#XWL<;qi=AJX0GW4CVk*AMCLCl|KJ_0B)(E>!M6 z(w(B{-G_81^t>KT^l?GUclG}F=}ZFU8OEz_!# zYP2{WlB1sl)#AsR@1NNP&(axkF!wJ%7E_ODC( zS|n?jep*uU>7*3mBMPz~tUN+pq$5}tW`SD8aBorBp`lb6_F6)f3@g^gZKN$!XFVj- zNtxYW2L@wAea#VWtx(dcqb)gaRlz^SY6i0`VZou3xDr(i{fxTk6mK9Wg9_%AnJ5 z{~jI8fV^oB#f;0c6+?&`&e_bfzdtq!GPBvLjUt}PCToL64=jq0<#Tbge=}y1PCZ-7 z50o!zbfQVBg9Gv#m4LQ&>)y{@?T}<>RC=?hK%P=*eFD(M4!b2)MQ~N(u!q^Xd>^?W zxNrQ}9nKGehIHvuNjf*I>t*_;pJ#a7&x4F#X=L-v;o*(&REpI~Gb&Jd>aa0Q2^c3B z2k(S)A4u-)W(;lih4^A%OVfAH?o&{%qU`C}sL>yq7dPV>9fYHP;csV8cxB&v2;@dS zef@Fd#C3Tg>@}JC%nm!0Ga6Ih-VHQM4vK#|KrHY*DGn{}Qvmcy6GKK*_ON0*2Eya_ zL1Kw_Q1LqkqNWf-Vhx8Ok}?OQO-Vv+v*+%Q#hE_*Lde`3A#ga2^}peb`3t~eL9wf5 zDZ#^_ilOWyWR37IB+YV!Q^z9+5{m%HB|`s^1YT1pi^}2~K_qrGkn&PH(gvj?fSF*5 zwUnj&U1X=;#L8L8ln=FKlSmj>jt4od>w!lkSENe0vDm3wZBy3%`h_c3L9XXUU-yaYU+4P+vP{SKwmcZHsp_#Y`HoBPB_fSeA4;mbeTCm6R`( z@mZunM(@fc3V2;l`{Kf8TXdNT#zRdiF}kFU28sy%l~!^mxKDm~)(ag_1Gm-`)G7XX z#9FSKx`d-j^Sw1KwwWYuXV$=Xi zVHy8O(-7G!<1R8<&!p|9=y<4kCw0Ec)GPz&{D%)@+vKd?Un`| z(xPZZ>zt{fFgZ=*luwWjJWDgm>7l_r9Np6U*~!It`;@@xzlIHgSKKWlLTimb}iQ&BVsCZAUySBB!1A>KY3WTcBZbIp*pys%i-za^u6F6Ne4%D6VnVYE4q z-U&M(-_iM_?*ovffaDK^v;CHO$K4{TCotNV7PjQ?~Fsm(`4uvQ{{2aA(AveUzOqB<}vhB&n>6 z+lU;EbarQV+NEZ|$oT$lWrN~FmWq-940h3b1$(x$!*B@w_&w=@Iv3xW$#Kq)*T&F{ z@V=%Jvn?q7tE>fyiThHAT}uF;%-UUl)*KvGQMmS#Btwv{f;@leND45qz}+oHLEqqE zWZDP6!?gCM;N;3UJs;7ZvEFFcMz)?0IE+bO+!=FTmL%@zm?K>cLOW>mjtf2l4}NaX9?@=|`K>M6zN#X^;ICOzbFDN0OvU zeCUc4w-C-PTMiq4I=w&)T^T1sC%PT4vctP_y4L(X=V8EM`ZMzJAKGm{IMqM<$=@N0 zg}w-S_S78Fw|r8zNAD`U;*Bc$dO|+hXmJB$>t4JY?1f%O<~J2k-T{XL&K?s@>`b$m z+XIKTP9e@EEPuMqTdXwNME7DeMwCI6 zRGqp;hQYk=gh#)3;m`O@G;{kaboBm?@g3OE1uoc93pG_G&vO17iN5SAKJ+(o{JA#S;CIudJ^6Ph7{ z=ph8mA$CKyo9?El?(WX+E({>O5q8o;Cp{atpnwKLv?n>O@^4cRewN%p3n}>48F+Qj zGPa(c2rHt;5|G%Is#0X49s8u}5i~ofGT;>!Zdm(NM?-09;D&C)s|)qFt}!24r2u_bR(~l)`y)qAbjtiS$2RAHjD{!&kZwI3qkyRtq*}CR zhZY98Z<7|}LIv9ZS8M~E2A_-HUkPiKAjqm951&UG<0fnSR^Bu~tnV+Uy^0WsrC2PG zKWNdpqX(wG|V zehgSMobUu^fFSM80n!!N_ky;9q}5LHmV&xTbC4Lpw^~-+)R5>jwH#a^(6f{?h9D7V z^^eeshhPuP8@24UOqsrqXVQks1BVL`mZv0O$E=uug3ME&+l0^)X-<^QLhnezxdqL} z6lK@-PdNcxY4J>HUY4gxB@f1@ZAs25X>mbryv+)$$0lvTVPoOG++xfZDayMng3gsN zw(wfwG?0p!P&FKE%HtXGrx4+pP>|aGTpFUAD-QEXQOZyr;9C*)Q$R5sd?r^~N~V38 z7a&tJqj2BJw=>=;GcEGj*maz*q7!OZll8Zy!D(tH$DnQ<1ud?dT{uvsvN9s^6m&3{ z_0VWY3eUYNl}Xv@2Ygnu=7}pG$T>2K@6xsqFO!l8ub<98BT!`OQD3@+{@hnQfTSPA7DF@4dj*GTP0|`2{kh(GAJW(+4 z5Ow@xE7g`fG9XMXAqj6qaX?mxFc++B;w;adB<7u4a#t+Wkio@CQnX@PP{x9jnUxsK zd1R>&Mw!KJ3P)1KgQQkuh~RrIkufWlr0iLu8kuV;Q)ZEsYi3=B;H4pL;=xtvZoE$u z9pY{zW{FDbA8P1XfhripTM?pD@u9sVxk9D=$sz=WC3TkN!$Jl`*&=mT2s>sU^%rsdmla#NE8QJf5JI^T=na|bBrmk zdvH0T65AIM;`o-Tb>|WR1bSQRF#D{MrLG)N-1=G_XL*%EN2w5cYr4v?P@yKNn2pR% zS_YzF>y+y%<<`2-n)O1CwTQCyR~uz0KK0ixHKIz@Ic)Tjp;9PNWc-0zSBIfjAq65d zwW}m)q9|U|*0gB98Lc;(pvEC|LhBFpm_7G<~arOXyl=4RXKww|Q6fNGv^znlDITP1Fo7lJH= zyLCS1X^DmvB%@(G@zf8O+L}WFc_f#je{t;jr7#0yxB2E<=biLSq8G zf@AwS+00^nyNx68TJvAO6=rwOt9Ar(b+!LC-&(b9)G!d_=v2HY%hdiCa-A2C3V>RA(J&RZmyU+B;btBKc0X#L%m zrQ5Ozp6n$c?$+1P+4~KNP(}Cf+q{I*(m}!^Ih#=4ot$qR^X0KIF(KTF)8VfT7X(t@ zpI3^F?%qG#{aeYUsGwdQXtlG$60XHcAwyFJOV9{w@KxcD-IDD7O{ky0yVo}J=jg1E zPTQ{~tkIbV$4ThnkfKibII%lR3mbeW!|ORF8w7V7-dui6SeJB81}gf}UT!J?4u>*v z8Gqf@k43wz_YH_b#~xX9N{1jZ8`X2-d2HMr-$tDAM_u_x-StL2-$snBA;dgJ z{c}bG-bRCBMtx#@>nP?0>3()`a)Cabr+H}mwG?wgVStr!G zg4d#oqHDu@{N&8pc!Fu%qict_smN^*2uoa>_$OQBCe!c->G^&L7O4Nl$j;BP*F=Jj zkZSI!5ih5UNqDfM6-MJNCye)n&v1#plNRjvg}~nImFWUzcmvaDr#kRmZAdKOH0iN` zO@+9m$Jxj#o?a?7WY%)uFs4S=Yk+T+K&zf{OCM@6HwBlYTAKky?Z&v!!Ksael#3YI zZhEOZ>t34z^#vPYM_!YQ37);q=H*2@>jychws|94h1nj_KHs?)bTmZFYKm>)J6l(( zZ5x`Xa9mL;r(orsqiWOcc?0wr;Y{QL`frOlIV;c8SdP`UyE*sx^9k@vJy0sm;G)Lm z@LE0H9(`4&pGvb#HjR9JVVrW)wt##~N6lq=s+n;;Z`J~=W!xKAcZIHCUc05voP{CE z`lYdziOM<4hQ-QOD36C3(a^jvs6)qi5t_MrL&J?<F%MtZ4t9tP(^ed#@&}@`IfJ5w_)0+6DrUvcoF-?ubp2JAhfJM z6vZ3iBDYg8n7OsV+^2KJAO0D6zNc5xf+w)bkHELAAd`k!xha4-Q?G+U?RE{hOMYt5LeY~W1o08_Wg`(mw$ovU-9P`=lYT9{c0%-~`M zf9k1;HDYQo_BfczoN-*U`x{~`AAOVEIO2R|M*L~~7ZWs1Yg)e zSP!s!YS>|N{%U3phjAbD*e}~9fAIA5jJzoS-Nbk*^ftSns{LWq*74d zuCeicd|gxSJ~UClwXXYP{(C4iuGvu-hJ-bJf^Z4}CC9kbuZ_*2Um7Ve>9Z=cS4rcn zkg-4Oyq|)bIDPeu@L9Lx=W%z8)3`7g+@PN&uOUQDlG6Rrv<0PXXFSCwNtY66--w}$-f z*NqV!q;Cd_pF^z95pdt28MZT=<4|eA_-;x-fa~W%<`_5=<6&wn7W27|8)?aSHl#{` zMxhoAoU2rTRAD`#%vW5kg~02}Pvg1#9^6RlrU&E&SS{S(pDDXK&fBqd`?!XOqs?3WHM?@@VhmFA_DmVj`ICn+0meT>CK&VySYlexS&;pf)}Ii ztfEGDaqZ>mmJp5hfkZZu3VUCmjd)FvaKrV>l7<)?2R`bJMFI$(OcLU6q4I1~vrvk^ z{vgyZ->E2dC!XF=c$Ps_)D=2#&zs|nkqc3kS=7OIjQ;i`@U~w8!(J{2)YBiF00a_G zefr@kZm+MPEWr)vr=3(x`i1qhPLe*pb>K40-7`R*JY_5x5J2 zR(c}vg)o*}XPNuo_H>z^q3=eu(5ebn;E5Qu5daf^15B)x$s0oeFinjF$x+(lGHE*2 zp~mb6{*@5vwJ}m~B6aA2}RzIahqcp_fB_bgii!7-0*La8uvZtgf z!l4Z^hci4^&`&Vg1UKSjh=~UPg!d_cb(|z+ger`s`LH88l94oJ6)0wzp}_3Ws*I`{ zR*JsrhCEC2;#SHDQ#cLq3~fkt6vk^ z$o`TEa~wd}v{5RN^UFRff4@w)9+IK9b>f4w=s_C9|K?lYN*pieJWiP(b2~~}KIJ^g z7%sy+#56m#IKlo8$pyj;WpF|h` z_wnbqot|3(=FcAyJJ_AS&u8_sFO?ri?#CsG3eE?T%fBoU|8q49KAuS4`2j#ka44pQ z+yzGTL31MOh^Q7o5lMlZVr_zagFbdJKaiaDheUT?0Q-UDP(CC&a{7-Q%>O+kXa0Wx z$*up7vf%)*&ma4he*bO5?dJS18&33}4F|&h4|)Rt^!^LIJ$;}z>5u(N66 z_y_>HhO2ZlWo!f_&&Jlc3yeabz{h@NAQND)@V{-i#qu=39v?z0En%#xkTkMoYc*jA zNI)E^Afalt*+C7+Ugbs#YH{2bBL|=@jbu9AHA#sj$D2jmX&_SI93am36BOuu zjrMigs;jK(XPYjxPXLMa$4qvJ7(>`|4Q68Z8>R4k6H){oN!~bzwT-*SL$%`<7wLz9 zzQuVu5i9nM2-AE-3w*IiX+pq_Yq`iZnvW@guJagfx!mCBpfvxDPD`pUy^GX+IqMHd zG;EM3uzv{svPi19OecmexDR=;jwALK4t z+a%dgNGWKusa#b<@U5kw^VMnFO=KDPX1pem$N-rr#X7VdWYB)0QBN?W)4t_3eP{+v ze}~@+#k%^^CMZGFhu;V0i@|Un#3p;!N=JXA?sK@6_JPz`r=6SwJ;id^l!sy19!kXf z2%^s?e5UG~!G+)4Yeh5bOqlj^C)OUNV2|nF@pAreH)5uZ`ME__XfK z^HPyJ*lcih+Pzha531d-=semY=OG~Ca&zX+&EZk2zZi@Au*HbEDYTXkzoM!nZzfd4 z=R%e^;jB2c=-k%zMrIk>nv_9a+6ONK(U%UhtWbi$5C`vw8Z8VOV2@XWcQM6280LsOwVd;LB#B$bQ*fC5%z>m%`AVRs81b z$cV}leNstj0>P2E1Xp&`C=}_5w2RBAA6BJw@;p%d6ReSFyV^zHsjHeAoRW-a(^Gmd zQU8iLhkXVhGaOLMY6m%+G};~^Se-)d6eOjL6doZiP)(oF-@<{;%_n(Bro7e_wT;#> z!zl0D6$B83uBI@LvP#6X8{~38-sYRGk&1h!Xb8W~kGWe<(`{t#{1o9TK*0w&&X=e# zSg2o+_g%q61b$Ww_Hr}nPe8QRQl*U6j$;v+lG&*nmy-SaMQP=UxsW>a(t6VsS;;JU z`?lFoB4*4sT2y7|)M4e)tQZyDAY18w`={u z{8>of#KQNYs0Mb98l-mwEs{NSd)HrhnhPQMW2BQN!mV@KW{_$v^CQ0exlzjXBcduN z7!6Ue{pxs|to8(AEJ)#x{(L}#dZS5!M^RK|$fZ@<#+?Z-v zp>JX5&iKEw$4ylin)(jgRDMtZo4(h5n<^@OztH* zeR4ck!`n9>o!{19d+Ovd)>fz+fJ*j;I9_zqM%I0+)QYqn%D(_G2uXOCV{Bt{3DZ!4 zzw92e2J1o}F-o@18$C9S63Y{?ttKs?s5Db!JPb^5#C+5`9PN-aR-jH56~GJmqkFpA z?6lRU9IW+VR##$aO^C^iHrFF&eXFZI-c^&M2Uko15+g)9!NV3JpB3Cr*_m}yUlGMb zl~4(ofGd8B$wwbLTTLAOPxYQsE#F!4 zquc7SaKaj_(PnSM%1+P(*F5=$8ET3~?|2_A7@ZYaNTS@Y+uv$A^t%&yn6X z)(F0Cj12OL|B7J_vyd(JSFpqFFi24uw6W;pj@~NBEvF8y{-UL0!GHK^ugw^&Ao@)e zJ_nIgIg8}mjd1j3e_}ktajT7M$gb7}_WWqx-p(|0^*PTL5R%%Vdt%OZ!Oj&r9VHr@7_p z8L_mz$Y7;v4C9gH)z?iQ{y*DW0+~q=(!1iIrb9`w3ySu$Vf;HQr=kJrBU_ny;(5_S^MBnRis5z)LVN;MZ;z za83}FD%4kL4Q)#fz3LSS9}~HvGTI$;hdfevJvV=DKmc&}TYzz(FLc07IS1~Of2El1 zsiq`dUm*6FKkTxAsw!S1CpA=s9lo+Mv?wc|l@QqoPY+{AV1+}NNx=1?IRq!S#+s7ufDoiB+$V{^a1P1W^3Tuh z-^kWP%(z{j571O$C9SlCV2-qGECU70bc>ALD>Z1*)1)=i9X5bexD?bW1%{$eFzs#; zeMw%Tds<~F5svKNB)D1b$|Jt+M=%(M4?;-Fmr)odSzC*tr$9KagO71XD8dX-!UyJq zWkbxLu#YoDd)LP|xJ)C{H*>v_e1vNQsApE_;OnJF*cs0Y^ z`=Xnuf#nZTBV=N6V$mMxVoMpajnq(!S|8_;v0@ogR8;IDY-HKX&OefkN0Vd5i}2Un z4K(h2q5!e>ebIMEvD;GUYaLp`DXxd@X@Q-UiZ;H4tK&kk}#5y;fX;t6(2uMn4NK$PmQ(%k*6jiz_(`Wd^%T!}( zXA1hYpcSAZu2lqniwUiUZ**8Zr3aLVHWRT`3W6)U*gBgGI5P77$mr9Obr~dPP6U?5 zGc%;HJNBK%*9rWp^F((kS+D4M~8l7O<8$h?lFD#a1rkK3Zg@9Slh zcPw#V0oNZM#RN)e!}PU+r{;T1bIb%)(m*89gr9JwH$$3~Tg7f!pd%F0xZbIn426HS zQZG(de#T&i#mb84Q%`|cs;e}KgNH1C$SO}x>5Qj#VJ7${sxdm0g&&euG7ee14uu8>c~@?13r8Xe-j8}5&m{@=+V12MMo(Ila2Lk3 ztVt)zj?7D7i^nocbbZvA70<0*6I`ftx_~m2&s1OfKyMR;M`4DI@Fcqnh2%O#P7}pn|LzuhS&ythpq4 zC8cRgl-Hmlq|vR(*jcb`N+4A#Zl&?vnNeH6Cb;O~v%2|d7MXT&@Xe`7PZY)8C(0tE z+HRDsX>+4@nayVMdqvQR9~B%(JB(s~eJx}l5M^MGf>kIN4D7ufDRJvkpCCzA+lU#ifI@#Rr;#8%GQsq>g3H)&1L-6vEa75h6}8DENbuIK zoH_}1vcRKr;A`mhM`)Zn`*W`oW^>X1fuep`E1Rz3aOq+}Xe&~%t{qA&yP>ULP`5o# zF0=0_^HF8?g|o0c%&cW8dP?)=eaX{guGVU;Th5}cqOF{@CVt$gbLMS~R4IITX~0RS z&IMZYaTy7>GA)XevA7!Z4t<@BQa9DEui*Bwg^$LhGvL8!c2_BsUv7HS;jEk27!M`C zBGpVSl_-NHTAXO0JrEZqR;gdJmjrjkB4k%G+fZ>wx0K&8NtkG`3^G#{GwFB0%WZ0b z*8wuoQ6_k;>^A;{*DXDdO_DYW(%H=qsI*cdE&-=dKdW2{3))o0?P=lLg&dpBecC=w z>AYpFY!Mm0*ytK_kdIQtST>h4p-{<)lLm)1s3~4?OG z&ei4QlnU6@u_LP%aup@NOEHSWh0BjtS(Os67;6fo>q3#}>e&?Oex(%ybd0R=YTni| zc#xIwux%UTKC9p^il$xX-aToekzNyKklGt&52oBH`yOZ11Z9 z*|gB>QT2G|KFeOiK3R=i%EanO%Bq2SOj#o5bfVP~?%emH!Bn=A!DY2Kb<5b%@j<-* zjoy4my>mu=`A3_p`<=H&gL+0o_{YM|N2v#gFSF{qV3^3!zNYDlx(je>>|4I7hUiQkvPnQqCa&Q1HillQ+p4CPM!uph7Ntbw@c1m;EoRo|fS z`RHiq*(;_9&^h%bip8$rrqdmZq(WHrFor#ws`o!yMZ5XdyCX~_vpmb$e3BeLqJ~UX zbc0#ds>_JaeBtF!XTl=;OKpa!y=Px~#J+52VEIh(g!g5yI@7+PT5%K%AoS1&_^70&~PE=(d#Vfd%!$SZ!qTvnjmuX1j(Z za=>?Or#o;YRkf<3{q0nndMb4~LC+rYBY*R%OuE=#9eRO`%`Bka@`AnT($YQED5AG9 z1H`8DfSCEnwo?6`r*7Nh%z4+cao?h(-)boP>V_2&CwET27ORWiM7b6Svhn-&^|amQ zDp%hkmS;u`!vyK{bmE03Vl3quIUibD55mS;kz33uPtNvr)ly9~PeYoW@496{Ms@Bo zd%y;rBi3^>E)%z1gdf@{??8>}$76#$TQjTL>kHPahP!K^Txc<`Exqk!!NBkH=5dus znCEGI-V32Pr^w$0W;eK#3i%-^;TI?pk}R&b>DRX*R!RXrp)YN$1#48i6e7F1nj>$U zh+tPV;JTp`!j~l-VBGfNRoV{2wUnsp=9@Wfs~8Qr%K%8XeI2wx5K|HzYEID^Zy8{2 z^*3d}uCQtvavNd0Z{49oo`HNtS`(Fj_ysvCwjxS1&!Y_94C4h4?5;R2cjY8BPM5$RmBD#6noXBDYL(#rEK+1V zuDD&Qd3BbY>A>Q|8%RyI$J*&l{DpnpV)p*cVJ*beQb_U{@_Dq~>~7pZAq>Us)DaAq z9ZtDc7%BvmSLd#dF9U`+VOPQ;sCYKCR&UEqL39 zxY4sliPMjElC{u^2HDHJ=)H7oy9MzHo?vPEAhE4w|5Yah+Wi8L@K`Eq%%*1*qHQm7 zYG%=v5P8sj3DSnkIlZk=l=01NBJbSBADi-%qCy$+kzl4az8|)we2Ap1+-BfA+U3y& zWR}#mhVk_t;coArE2N!klA>S|30h{I%>X#L+@LC3vcv;tCcnff=szd@*B)i^`DE%| z4e-|`=#{Am_yXRVuL@h9kfEXNx16ne%*@rapQ-7EWE^<>e|oK%L2tj~v%7--lo~lP zcFMCZb7FdV{R%P^RzMSJ^L?Ofal=kI3|zfJ9CmFr647^)q(OW{Hxi+#Zu~2dNsRue zo8F|U`Dpj;Q8(NbG<8lEOpl!0L+R3&gEchbwHHL_{^>!3PI>cPH>;7C!$`v%py7b8bN3L4vjD!d7&z@@B48Up&3%yrM3g4=6Dz5U!*h#5th zM5bo}y@`VXI)LU-@9o%V1*LuZdEt>o%H3tU%el&DxYnP>%|y+MM1R-8-!{%DU$62j zC-L5W)51|A0OIJi%B0l0Yi#Ko5Nf(0bacbXd;PPC|ApTCU`J;D{0F^>?j#Idpp3iLt>U6XoR^m0VQ?+}H>!BH6pqgcAWc zN=gdDCaxu76;bp5p-UPge&9wVV7NfgoxYQUG4EwC<&{Tc?yEiei!4~DVa$jYC#dl~ zjxF((nM7~ZvK%%YAB%OCPAtzKZ*NTni>YwHt$xc0EZi|p!mEM!6@Wr@13whS$Y{Pa z)<`xIFUJ{{!lL*&JQbC&&#Gl~C)X#OnVp(_EWR(9-=~O_X2di*3^a&@vVj)RRwQit ztX7y(iBc|DECb_wPlKGn1IB(8rz!}Sh(X#wpeuwF5=9>|UPQoRoUay4$jX%UfbZ$> zl33WD?)Q-=Ky~i~X%zl<$vNuc^jj7>} zeKOzfR1K9Ix1EO%JH@VcqA#c%VTK#vpk$K(=6ifj$rw!gdYZiHj?@3`h$-<~J_qVH zHx!&DcEBf+41DEEwaMJ*7GuO2gMOmDb1PFwCKk8UNkiJJ$gha!fl+`Bl2~OZ; z!$0bVA3@~CssmMQ7rU%HWsaYd9%BYAuhFmNMa^1BM$EX504Pf&iH-86AOQtt*p8A% zscQtArO}melSOLNnjKQ;dq?h>)}^|s5(&RAXtB1}TrXr<{yYs!(LD5A#kdXhI>h8y zfUU?3+8fv6HZyjjEaE)1LeGz@IuK^2l6xBE=jd#UD9&^LwQX(8_(#l^AhDAg9nzKg zB%^}0%ep+jtdpXqc;-wvwNe4Yrn(uN1qzb?eQ~r=`u#o1Rx-h!4b%)dRF&{Sgm;CZ zx;Ud5+GbHR>04<8v+X)In>H9^cEac`s}9m8*VQD;}2YZ_q@2XOZ|8s zSd!|iX*$#B2jbx@G|3a#BioXa%lrbM0#*OhP5fL7_0%bdv0)H3>@J+JEm$#l)fekD~d8!Ex& zz3cK0vz^x#JW4|(t>*VGmLB}-XxsT9$A-WZ(sNi*&MwR$4K{w-d807KKhFkpm{E?uG z^IlB&L+tg>hI<_={f`Yd%lG;p8*VD|&j)%N_yCfhYd^>P-cE!+z5cV|{QRc>W5eYa z|9RMOnC*obzH;>avlsu(=kg#wUhsUOY}Ws^FP$7PEA!lUcUG-5aG-;FkPkjh{X$) zimDpiV@>cXVJy~|N!&(0i5aI8TEL8IC!3Be(LsA%SX$g(_qE$c((&S@-BG++5SfnB zl9lx5aKfKo*?66-%qf8kHVPKk2Sd{ZA73E+u9nXBOa~>7Y20P~NL0<$3hA!ai;vY| zY-VP|c847(!Fuefx$5KQ_GFKVzujIg5Dam!EzqS{_-6#Yei9ICE<}dkp*+vPjG=Bj0SO1?JMMp-hzXz|PC&*DTZ$CKS;L00J@{deYu;uI;vAziH;efFJB>{g>smwdU_xkr!`cv1(?sVx zC+tPl){PZK=ggQN*9_S!(fR0;k}Jc4ZyKwpoIb~CpSP%?Kc7@E&#xZYJiT?zrSB`# zU7~Rwp7rGiAjm+f9h!6Ni}=LR)uWov!yi`wp?`yNsKoh9V;X1Z8opSMuk|&)p4w1~ zMF@1BH9$%7i?u(JPUQ|Dg_YB!#2V4xj8Z|HH--|@5vNBp@Y<@6dj%rhj`hP75KJN< zrIDnh6N2BQ&8{&@UQ)KlnS0I3Xq}sB zLT!lVfxPuCI5OAVi4oEdK<~x2;;qr29qOBkd5e6A&!woWc*XH2{q#2*OZFMg}3yn-hz*4m2bl+X(;n zCG-dETdg_W9iFlCP>V7%Yyda@21XB-pcD^^F;=4X=f%T*O!vU>ce?q{+U+ppacAKY zwghbw2RPE=)#B@HIMLw8KL9%hMuW1~wEu^^vuKMWVB2idjWinE-5r8^aCi6M?(XjH z?ykX|;10pvf&?c72pS+gRM0uBiw{D?>U!GaYw_s5S9xle+MKpI<;%~Cpk9U&N=56U5To4Cg76j(woV$X70 z%6qMyAayA>-{?6SoZvAHljd|a`tpw-aYiZEowH{MEfB-N3g5k45V-589X+&W2%6BK zp+q;t72j?8XbGo2MlJ2Iu;u|PIqaZii|{18FuN&s`}! zn+PyS{1aXd8eb-#nt94|s0zR>kWOBATW9qqBIbiGB_ckxBBC7&0+CIXAilu@GJgWW z;Go5%n53MiKh)rvgVN_$u%i$DhXc|dXj$vmsd0fMWi5lltqpiD>noDr9~$HRQaScT<&L_r~AG)|G~f(g1!CA$3D9leHM~v zo+3rfVvV}AwGlkxoh$V!VTm6m=4N!Q%J9I;kqbO+1}!u#qk%^adlcn7gU7p|5i%xL z(GPJ(dlN|h$)F{1?Q{;oU{4)}S2PQX7ZR6(a4p-Fk_O6`F6QdrWqop@9(Od`%R{GoO$-Xm}}afMcsl7!|~;BVf{ZAatGVVYp!c}ex_!$pAIvG zuin-N=wAC~gTdz+-jFtZi^NQGfJGUz4{SUNJIa^5)8aFE{w*SXlXFWhO5X})BOn7p z;1Pz<#RC8%;#a%ZMvd~y70Hk83H&O|+eC2}5} zKEK00#155_g&FsCS1CuEm??B^x|Ymd!-Zk$i{j!BE*?R}V(i%BBIT}qrsfLZFL$6~ zW>pS1@aSm#+O%CF@78ON9p)vl#m^sC5!C|^y|R2xuV=gs7ea1_J$oI&|GGcA;@AVC z1%=V@t#1`Pd9W5}v0-cl-i&3>vihkxBG>9ur`7o#_SjgNY957#;dou1R6L`Fv?Vf! z`n!UK5LM?7lOP8?F+o=f*B`Ha#ru=zIgM_z{=A+{znU!-TDifZG?fv@Cg<&NlJJb5 zQK3vr<&7lJPIz~0-Bssek4C4AEo>`9K0V+g{{?knsFa@M%&aUu$(Z*oqz*3oF3NyG zJ-!&%q^mjm)vqC=uJAVo>V8s!l4|9GR%C(-y6dfAu9*{z%$FELJ~Dleh5h{bxU6o@ zv%U^FKGge@?i+$YoU^qhXMzqX!y4gwQ`zT-NhRzkStJX4=~-?BY=TDkZSycN|sQX z>`uHCl0C1#c=5u#+{Y3hfpD4~2kB;QK-v@063_7LbtdMIg>X0pm0-8;bor$r&Q;p) zFG>kHU&(hGxArb)ikuSq8XN(y;N;Tcde8ijL3%yP@V#=>n&YIsyL9t#9B*%Io7E!! z(`+AM-3BRGnj9AQNEU)W()g8<3R9#?Iljqig>p9KR?&0=-rgUuoGzCAxu2~wn-c(s zqKs}}nHb)njuJcBG8QLwl^mRK1AYr* z5xf|+8~8U4t>9x-5`OjjaGap0h=WfG5k9ouDO7rubKYW=l21|sq%xlQZKgOCWaFaGusb zOu0GoLT}VCKw?sSa+UjxpjwfZmkV^Mz!kZwRAQZ=m)6Lh zPWV-*E@PK_UWR7m^g#MUUhFB0{xr)DbHPqXN!J_Z7iW42H@(ifT&N8>J7@ep zeNCeaeuV{BUI;^TUpkv{NU0g0EW1~$Wj;4VQ#m#sgxf`K4`>W04)gs1p2hEws86c!)93OV(0$PKx4HVG4s^k4J<+p944 zhMC}5KAzyIg4-56adH-AGkw6FmCi5IUrB1Kxni5dW(X7*%0J5o8xp$ZFOuL)W2B@M zHDlH)>&gAnmTc=G3|Mpc(_DF9)?kj5AKpyn|KAzP5dDcTzX=D%k;kZsIJ=32?TIA9 z35{(DtlaU^lu-+t0!T3%DG$MEwsJkh0^zR7^B^|gV5Ty2I|dL7D;L{OmO93$GMQZK zeYnn>#n#Y3R?#0m7)&Z6^*B91I5Q+KTsAZOX}kYZV=Xah?gtUK-d9j?XWmp?hB&7n z`C4fwBhFrv@|T%ZEyhMD*$n->HbSQyJEIya)|x}Rkyi97^2`u!_hy5Iq1bX{rYSFO zUy7_5epjEF=pI;L%-6kFp0`&hJ8Jcp$Uu7yC7un8d9CEl`LyR=%1J^sJj)q#C-p5~ zRhW8^mwr-3W!+4MrBn~M5gPTxzV_BYFyWfcoSnJwV{LODtjy-O27#qW_|oYYx^MiF zN8$XT^bRHxiyW^VkMm6w+m*x+`!6zI2P^?@qk6ETe@x^RzIn0X*bI*Bv~j~oasSrr z-$I?osCPSnUGa=rvNW3Ip`A5YU--44hJ-=I*hXKKVZ5-4Ohcbtx8m=dJ}T3_pme>) zQNMh~HBS|m>baC&vO3N(*6TNH!6JxAw$&LSNKi{Sn_llan+IFxodx3)T_Y;U)fV~J za#`p_SrII@WxABx*p`)_&pVLe`MO~}pJn@PRqZ(95XDxCm1=t9B-*leQzC()uKGw`dD( zlvB>?b^+15w1k#6SmE9f28BCkO+xBC5@?hq{ax>zob0y}{OPGi|Cl#jXSgqdEmW59 zI}AtApk8Dfyqn4~+>O?~%^2UXA`UOg>^%!sFKps1;)EeWW}}Q-2G3I#rIy6==#KVU z@{%*;)Sq)Lv_@ZW**F~>$Yb^>ga|3R0|c34MFOIe!w+(A-CYF~qB#<5R~+@D*Sh1m zvM|RKT%xkhcZY-B(*9H(7|ik(9O?b7BK`r4uZq${k;U3(h$*%B%lQet)gx@A#PR^y zq<-6VnS-)@?&Q{g-k()IM??;>#0hs#bnryscYx0qhI4VesgyXdANO5&+(9}+&ktmo z?*8DdBQmSqk!-OX2r-9fbgh|ohJ$nstK|8wwUfjja{Za!S6Q0gxt^09(wF$@o*vtI z1B=9Tvbbs*2k&cG-r0j+1b=rdU{7?8I8-vN2mK;bu`m&JYx#y^+aECDwm7BdmC^AG zhk|Z@(%V-WpL0qITTX~0+bXD_JViIhaVc65wx?L0=@rzmbc*>!Ep|mZt-O&orEgVj zkYdf08{?qSX>LMjHA{SqPj&oq_v~_<@}fX&SUnp2of3g%2j$!+|MfaAU}u0*#_gDb z?ymu|g(jCg7dqN#U1)`sA*-fQ}xlK2xn}o$(MTQ9<;M7Hs z)n{;#2UcxF8bw6LD6d$*%4&2xjBGc%jviKEKB7apS5UgU%@NoXK91PQuQ3oLncZg$ zQAm#M^%7x!G^B%%YjwcRGmWYHggsp8bg33G2^FXBFlX?`cXxMcI(YUu4qiTuO49>e zR>sBeRBX&dhVy$h3G9zi!cJ{|fROdcyd}O3unKh81-JDQqP9E zU+J9MJV(gH-D>pmp!G!*dFeKZWsvIBTe|2u#@-g~t@I@v1C_P3QKbWa%G1HinDgRc zh7)m`AJNY0I|K;j%}6@HRuv%mU7@jF8_qD#B|9iN=X@7Q{2b>6v68$aR@}A=Hd9k@cYzJIVJS-zlhF$e7KPjOr?;lSOyqTO~W&*jpc3pqKYTP zYWmn)W^Ft|Eh1_FY&%o0iCIW-TZHGV5y@k<2`Q_w3|h$qY#VEgs93Hwv<&$W%4sfW zRx6cgfcTCklIZEYB4P++2r7z81)AOvaW!>wYGqM~%^u8!o1viyjw_k24;tb@o_p1$ zvYe#~MW-uO%BE0Ei^rm>=DeKCDa((lp@}(?ABZoP>4jP_jwR^Zpd{joHoiX6+0lbnpZk5{78d6+6jy& z^38xWgj)XtwoK_abTpU=6IM7;*nM15kim>=>V-?KYMf~I^T{Z7P>@^e zLs^#S2&KzTCMuo#bJ09a6<)MC8DOA7IKgpy0uIcjhzs`75h4R*PbGO$qj2q-SmY*@ z(aGh#AA1z=EZ}NkQsv<}Q~75XlmEz%umMmj8m2%GyYW)iNG63JJXmGZ$|K~3*+@=R z6sOa-oEAGNTkA@E;wj$H3qB62uKL2)eCC~h#by+o>AqrsgynKW52pbs!?PsHag@S;r znO_cAn}$r4FK@<4BmIUaC=26UrkJN1o2Hoikz8lk=IqKk|Kq%U6{>Tc)84#%2X7yk zbRxw`>~+Sr+v48A+joIHTy3)(w-sWjf8Y(Hejd}9G3@86NrPQTy=h^*$AmNo+Nt6^ zYre-et`U>xj)!Hg?3U**qPRtrtZ(nmo0`!A;y8Lvl3-oYCH zzu}+r20_0v68V>*gbcs_18@Gg8=mjOaR+nuf1ZvDS^Dm<2I2!=t}6e&{Tq(+t-t%8 z82Agcm=y^5TiQp3VRjM-%~OUOLWFVc@bnzNaxp*d*N5?46ioJ5Kkdl=dTK2y=T+HP6!D9K+t7qIP zqoAmF4p;1rx;z=C+!hmV%4wplfSR9RfJkE>oLRv7mw&qb3NJ@cWv^7vvSFv+uIl`o z6?Wr(jN*4iftjo#{rGqaM9e9zW^;oy7Tb(W+^gfc3pVl@#O}MUTHN=KXuIxv+FoEC zKBnEUwbojv1Qe>#z(5ex*U(4eBEE3_O}MF)*>3_%4*T=Ph*mf5 zM-?bF?UDv&Q@57XfPmMY$20n=slSiEgl$&Oe-j|={e1zvLWteCaKv5DEJ-O}?@x$= zh-kSnMWKV-_rhWUMMiFrawiS(79uwdC^WW-uqez7FVPSj1Su0(MXEa`Q2`0?L5$=? zcuF)+caTX;--4HjBx%U0i71JzcDR)!bCOPie8~G8oRFcgQJ6ZcP7#)u`G|1Fd$X1_ zanQVK$O<*YOIcLMsSA+e=zT^Ft5ktY1v9=6O46`spB%AEhi^O5K>tcdn{R}|eFE*6 z|6^a~gvnDpw&RUNLLcxLc&=?I_jU3mfoE9@jebbf6b`;FR|TGGj4N8;Ix(V+VsS1I^HUG{|G$ zvQ6Jq2AT_a+_NJRs7T6Zk(9G*-f8y*RS)QDS7nK)NZ3?C`B#A21kzg4COP9Pm0CDWYLlcv5^Pi!O>Tnm;tC_sggTtRmmR*!b(BZMN5ui4jP#mai z?YErPj#k?d>MjYKOdNHNy7hecZqjS5b+6(eVK}oH@ctslOnh=ek^%j}e{Y^qDgOG2FdqIc^c^BWu^DcxtPos`MhW-1kv;fB zF%@M}N{5j>p@z~%wmGC2h+p&4SJKMBKep@yKjfnZ412N1`O>4IexVECVe zg}$B1jCdz_UQvgP>nnW}2%grudTb3mQ~F4Ljuf9!o_mIM9eJhl9ewOEH<1(7)P(c^ zz~Uy3?;#Q`8TaiHHLHbu_9B!)Ro@9xllkcd+FH6;S4{!clcfKr98`d;V#zgJF|CX; z>LpYOp~k%=9@r_NFS!Kgif5c+)tR$LhaBqdX=H9cImwm1d4Mnt2 z0zN`R%NHMD8H^_2gYK!gcSsXi`k(fs)V3(86kbJx@qSvNd^xlqxEzD9Hr9|M19C+n zbN!R*bCn!no$4cifQcI0*^G)Iyz}EN9fp|VT?TvMWV01>am+HNB3)_GkR6JY?<6z^ zVm@Y#z}Fu>$JqdbMHh+}C_0jzVY0=fCj=&+-=Z^jBHX|5sBO`W3t#WzKgFWX1|eV~ z0FEpXIw+;(&qihKXU360qL6H`MFS7>9l5bpI*X19jB#LVm>}|>e7`HwVoIu6Xlt3p z(1?_B%J^?lMmF=9Ccpg-p`mW1Eotyn*nGwDGtT_VDZ`;xs7c5x@Z}_8liNA?sJ{i1 z72*?VQ5)B&uUJSc%}>_JTGmny)M%a1im1X{iw!X93|dJP(i5ra`gLnS>;3o&LS=OA zWeisvw+X6Rttd7ms%i%0YV_|G75TZJeS*(j_x^gLDM%sAY-%ywr(&mI30&!-KjXeu zabvN#{rqtfv?_F&-VmXIXWEjpM3lFhTYm(lfML5r+S}f=5dD1*!9$a!AiV`g4jJU9 zIr+`Oil(@na@2^XxePMf(&{M8=y3Bqx51@ZE-ZZJ*0eQq_64;Ycm9hfRyE(r!Vi-c zd?n{kw{*D9NU5+4mZReAMQ!+W4W_9K&~7~NHwid3Vo6tlFHXed3dF(V|E2NWq(iy9pK+4`f&IMxBcNKi8_V#pgqhD4}6Kbhh(4-2{G^ z2;FK=8$58nju{MHS%0`4CM(cLzoSZyK<2i<=PH#fT2*_z`k9gYM*i6vZk;h_zePd|!ldjPRw4G%^3pmP2I&}s`nm}Z`3gRjWCI(2INh~W zd2N4dn?12!_bKH(orJ~r@#3u&)ZVavAvz{b6wwMk-ZAw>9=MGpV1fG8fBdqa%3b%l zRlDG4xJ&+v#~t}8;})X;Gs8`Gby5&FQEBdzW3%n4k!;`e6wCZ?{{EU1p&z5M&jHC7 zVQ+}Y%8)l5eW2SI{Ukudc>RzeXvoP;HE74wY|lj9eu!Gt5>64uSF|y34~^q=JaC9c z>Uo?G(+Z$R~5urAAa`PEBg&c|><}A5vlAa}Z1eIB_`yVxKfSr51Ug zYr%41`zfY)rFJm5K!;V4hmqZfuBe5@!ir0tLRm#f>2sK2Kd=zohd6sWRPB4ywX3s1 z2PDipqh}dJKL+VF2UGp zCNmu;69ZZ`w$mX+5q)rxI}T5E2KhW`m&& zksgolT9R^y=1g^?fpkc|W$LG5&=FEtI*i7xH4)dJ!urA_eGU<#Jo`v}=32SJGrN{Z zHJ{R%mBJ}(f%eS)=E{iQF7x)N_=TG*t5lzD2=Es+MRFOo|1_Fw&yT`0jo1q$3*k-T zp$eYuV3(&$cgji_8M20zvYARxNcv&_d}Qx;$djfHZ-R>pjTxn8nZnE-JH_S)D)O`D z)jmB;dEv~AB=}c%o$CK&xjU^ z@kpzCj$+10#HVu7k&#(H1QKYPAka!ma|DL6W>@QgV6BC_R-FM|@f~>S8y!grI+=^J#LhV!1FYb=E>Wou^6Z(UL6`GwogD^l-(#VSNt`z|2K$XU(oD2@N+~<2) za6^fvs(l7U;*pY#hi!G0b!jt8orB^xa*KeR=xkIU4?L$rg1kx`10xC$!L&Eg%1%+% zv_2IbI3S9ZlI|xzsI#)&D0-)yBu8CZyYrG&Jj@j|f6U3qG!PF1oX%)EQL~2`yDs>$ zgXgHFDsHnX;ZK!8W%+G(v4~R!(R?&D957neuBpnq=?sc0GeH_+!6>pQ8IEU)G~xey z(0Zxlv)H+9RIAqsdquQZbtYfsIv#1RtX-r@wRBD;-;s+PR*4Pi&#G0R$uc-!cI4y4#sTPV6^Z-r+e0)R5i(` zHF4yUf8kYa?FM{g;36rfEfq`t^#l^RuoPM+<3%)K&*8~ zpysay8*N}g{z9vc_rk+%6^7402V2m{(^+*(pH88vLJ*|u5}IHBzr_@HB1 zy3LwvhV|53YjROLK4(UFzO*XVLRn0|Q<}~=t_~;FG!NfS939HjDSt?7DRG8yOKO|e zK&Mh$n7eIfaV=BxjTIp()oa$c+@{hABeqK6m6xhJNve%HNnxUKK*tp8lDZ@#M& zsINLcExu1aYAb%&hI}Qj&UM- z#@?V8|1pQZgM-*@tb-}7i(D@Q3Sx#DoN1Aum$DyIPjErs_>2nDEw*{>u@vY!)#aPG zx8xks!KoPTCKJ_Kd!K`w*5aN@+$f`a?QiOZqUsn0Yq;bwLPvMDP*8=)QE_^MqJHX8 z!1^#cA|W6CE~C<)wU6XY)uJ^< z$<0~;ifkGy00cvfDM6H`9Sm=TkmuOQ)yd8L{YAfHB8M!rQe1s*d>e&~snV{j4sYqh5>&F~x%TSrc zs&-34_STi6)_%zWHXT!Jh~O*%5$s|$EMPP5o{sq0oq!ol0Iy6*xZC9nT4!f(jtg;i zmM)*{P@NgMMUDy9f++t_Z_#CVx#KW;=Dps$$7T=U~hUm%K!0H0c zA{h(_hX}jb>;>%wh3-xek)tQvM7z_t8dA^q`(ryMCvU-I-FMV)#)2Cwn@Mjpdx7>_I8b{x9lLz{MMYdu z(Bu~EZv8~%cE6EOYU7vX@%Mf)0r#q4l{?n?=l4$$-OIzd^udyw`rm=m{VjG9|5YygCkkF{15BSje zMp3AKi1jU(Mmd_q%Ppz9s=vOwC(B5G_o#UUsH;enYbnJ+>m>MbS%ugzCq=jgmYuYG z@;hL)kw`AkO^;_*Iddb-L-#;YTS{P?z~4~bRy#zoiZN&A2lgcJR%O)6tVTyPXup0j z7x{P^^V18>4lU$a?DMR>(lao>AVS`{nakolU-5K0%J;IywdlwamvhoV%ml2U&y%gV z*SLsU@9V=S)l}UtczfZTV{{bR9***H>`SoXl7=v5)cQx=;8k`I&0x8Xi~zTQ=fV25 zo7|U&o&`~)DMWF;V;eBU=ip(5-|!#~bE2@jfmy9NC^F}Ex~(}L8!BQtC+y+4CTTB@LrFkr_NZ(5=v4Tq0J%KD zF00|Dcy!VKAYYR`Lnf5nCj$G`M@ji0(F*VFTceb$?{W2(E9vZPYg6}V@`DCHU_ZnJ} zPAy5g;__LArPOGW7j&|Ny-j^3ee&xM0@s|Z-s{_EIN!krWmDR}vMknWxj8n6*q?Oy zcDZdSAgMJgxpXzh_bg=FPg!=xiGa#~b8vaBo3UiL74LI!2htf8aAvAb?*d$*Sk0P59tjkJnunm>#V3}Xs-0pHZCeEtr!HU z^82>y3~X7d%JwnTboZ0$o@u?(uF33JXnFa?4T2lJI@f6V;@&v+Q@{5+0r~jiHr)!{ z${-8#@LY{_3(9gTgxoI=tMeI5pXLzl^C|o|yp^`)zoQ0$K3PBirEBC)3d0Kpz)(Z{ z_7nG^d5U+lYSyXp`IMbktGi&v6)~AF>iifc99|5O?Zf0@7dg2Na@OkY z>f{2#)~JA{t7%Z}X4X(hd1D%jl~uaT@Tk%*SLAqHUwsPu?1a*`D)n?v)pmiqGYM`2 z#uumW@UaAeL2D&ax&{fJGWKkkqbkiK8aJUnH@|NR+;vvf!LD&hP-67F(z2zMGp-YBcT3BXg~qv8Y=M{qL%@xdO65%Chi z##A7$39QIJJC@tVZ==R2#&BH^-)WVO%p)Y4wNG$jK3tuKdcS%_L??1Ep~ASbpH1LK zEhKs6ri{i#QEDk-4^sw8O+L&r*?R5AOHh|%C<&~}U}u}tBL=VFD-ZP|uMk64p3 zXetTg)}+b-vcyp#eb+SQ!8$RZv>FpsRrjW+wiAs80s7@Nd}+pS;St3bl*M!#mg#(p@@T&F&_#iTi=Ny$ql z!yP+;Lqer&3*&bI4yj3?j?ed_8=0wH=mcZOux7e{?KpWHX@1nfOFZMf~F zn0ghB$2VQXz{9hy-{T*t`Dd0<=-5f zz-qncp4ZJ3%iQbqAomCVyG7rZ*SpoviC;rkEdR~HHMsTaHUz%U!5wck{--@D^rxcZ zL*VP}`^?Mh!}retPm_mpfspyNU;o;ZUW54W0^Eea4ibDYlHK0VNh5tBQZMhsY4$^yj@~JKOr|oBA@nXc!;9=Y;rwER^Vr0jtVZw8#NP)}Z z4}stjQUvEHamEs~#HbNUdgo|)yAq6u|Hm8-eo8sUC9RCHoK7ivO1;J)(nlkXH^52SFYc+N5Q=aTS2ImQNE~HLzM;5MhNJ*Q*g~*oG zNW4DVsPA2oLm6o^VlT0mTSEe*eb(5^<+pTvM{^}L1Bgj1d&4il3iasDkDsD+h~$W+ zm#=?JcV3z7$|p9O&lZi#U=nn@b$56Ng1Nr&t$Z6r*V^jTX>GGtd6!UG8@GafeecD4 zWVF*T4*HKGhur&5kyDNN>fIqck~P(0ioVzT;!Z-XU)USS@?aQx0JLPu_kf+}%3wEo9VvhdjARuU0Oni!tn}fab$A8 zIc+tPbqM!a6`}g(Za9x|mq-cTLls?`6J1kPVcDwgc~QT?R7noLepg8>nCeGO8VS() zq6s%^>boceEVB%yIr#T!A!{fm=CVxz6F#_kH#m(p)$<;&)E&`Tnz8+KN|pvX1V#5$ zdB*VM4C?nn&ed0`I1lEpoqryzQ|NAJ?II7~XW`IWLdNUEA-Xb#g-oIwCn9iK^3X!z zf{l%?$fb1D=_mp6!sFPPNW)_TU-^NOKuM&d1d<%P+aVA%DZmppsZO{PMUv9F)*BnG zXvS`eOQh%L#w(g9UnyPF^Z-8Mh}@5mMy(}rxT6(sM8u%PHF|U$m=9pW?kC!>M%cnEvD&^x8QXlTcu!j#;TMJG+U&kNJ48dRUx3p=My6v^BAc}0=Om{Erm#IAuH%Tg06q-K z^;9$4^7UQ4snL)Igk9#zl^O0|ufONHKl79Qd^q8BEq`=al@e^wz6bHLy)?ElEXnlI zc)kzIoV~Rd-aapFk-ZNLa#yn3#9H7w*+ioUw%#CE5$)q&*E8MMV|p4FzF@ECKUxLT za`j|8P}2?yxTClZB%HAcb@ENJ1or3ggBwhI_j$JYKdFoQ@$f3@I=9 zXw4iXfNzw7bn;PBrO4&lRk%ztSP&N9`ICsc=%3X!78F%GBsq1`ki64Rtl~}4K=7sn z#BNMnUqwYEetHGo%9U>Kent?oM0M!FVy3i>90hEG&+7&Z(o&R-~a}qE?!{;%Bf@{d23@ ztH2FgK?U9<(!}xuRmwtgv>Qi?I0jo{#aL?4N|bW_q?QuBa^|H*v3Hw@=r6wMfhnWL zFu{^D#kG#4=XyId_B?08GPJ`xYiV3OogDc$S$*fn@MY@l;>PfcmCQ5s2}XMo{Ll4!#9b! zq<*04Brr@v+3$K=VHQ>M)q<)`9Wdg&oGrx!+QEDOnTQOR*q0ovAD!TP-p;aYJ3vPZp5b1w-lV#f5(n_FZ%KQ;V0$?+U@g{ZDmCv6?li^F;NnazX4fmI>hD~lSLC2dcOHZ4eYljtaikpcsuts@W$VKsGj{DQ{qEf81GQFLf?^DosO!_ z+pmg>Rq2|7Tf7o}l9)2lyp))SB4gYoCT zmiW^HmBlB5quN50NPOR??YwuTS+&W`RUP0)+JqNjHw4&S=?FZB;bi7E5*+ zZi)$KnZ-XCYzv`wcFbKneW1SC~pj$7F3g_0_V?GL)! zX##P_bpC|k(DQt3ck_2|*P9vP+QESbTZGz#I#A*Sa|2z7CP<7=gOnfr2XT1J*O{6^ zEeN8NDR|@*TDbhUG(V;4skJ-M!}&WdyJAbgLqCL?DC>niLD9FXNxDS|cSZ%L1`5!I zBv^&%c#625vJ5A4ZQ*}}fwJk)cC=dDhDMEKjEyFcg9L(UWv}41yqdyi!IGl#H zN=q+Ku+owS&hwBjN&|1lV`QXd`>R4A$AT2UDK}lY<_}m)k99Dy^z%f0=fsV6o?v>U zX=l}SA8}pQXdRJ8tTvtq)3B4o_Dz~`i90HRfKz^lbUq+B<_DYem?*)Y3UZ!S!Sw4m zhenM9p4gwilhO8);WTt9hXdZUfwX7wd>SA#Y#uFKt-}zXxe7(@aT`)>g5(u3#}0we zb=c>qV9tR6SnRYGi8LzKBsVY6TE}HNNrnZTva-v@T??8ET$(`T8pE4nRKIDW$F;+jsx?_>0?Y;?8d#*uCvO# zwVltj$h>J@t+JTB`C#!hta%f@Oy(_22IrakSgq(;JW}9<+3%UgIX&X1w5sf8W=z6^ z-m8>|VBj;io{1G5d1K7&nMo3)8ZeMqn06|JtY+zAjKL$~R9&g#c*fOPnv8&I{tepa zA{$0zvXCv@sNp%{r>m~WGr<~$AmL^)VT{ElXRgxGzcyt+WNwI9u@Gqqx-2hrHv{4g z{dXWw`&~4Ty2&jM*HN-MG^J{UvhEO^#NTI72p!LzrYsh|u#~P}JFcdG;kv#Elp`pD^1P1{r+*jc9Jw zCk7d89ggz?&M?gqDhefNR$pDPl$6{5YEx30RrGrni=bu@IYmqP(8z-wli>a8s-Y@) z313g>-P`3eA)3ZOOTwR6MUOu;bN|4MR4B(&f(AMYs5y1hWF2vRs;@05Q~s3M=w`E= z*uCO>9LJm^E%%;5K?|9FBUi>(mCbB;u-E0RK1gO&ycRhEFT6b2I!_3$6=5W;}n@;-B|tdQwVq zC0%zRXv9@c+p5^MmhjVB_4Hf;+xmUAGez}6YV&Q-nCZX_UJsoF?t~u?=yg?a%?`j8 z7wSem0LGp#F>>8~xprT-zG9JQGWu#$%gJ}V@SPp80d&g+v)dd8qZK@ueQ@DdVhmg% zvb-nn*{a%}Jpv07;T|Jw?H60W=_Bb^U7>FyMQi&_UXsuW8U=QvZL_g$@vMbkD~v#w z?a#J-Z?)#3TZ6;jNtS7>s?L_WJH&y#JC-d1=tIO_ z(rwe#jbWjg;XmB*y1Y>QmkK_hxZ>58;fIg>zW%`>@a-LCkG_DMKaJ&E48n{RDXL#% zutREr)wdqRs9PA5VTMa5Rm?g}e#30QSb`8K$3hcT4L>7x{sw1Wru*V?zuxhH?f*t| zy*{7v#zXTa!h0uTwkLw?#u_(RYIFQ)rl`=IDMn8*Jx^u+|b^``9KW zc3px(X=_c8VsbcQ)Ohp3 z(M6CN&uw1vlw~Vz4FAnMoWi6#+gP9F8IKyH#2^f5zSaVc=($vKif}sByIJMnj00Ad zJ_X;h%pJEjr#T+~CpvwYQ>(F7)qg0z#2qr3hCB?J z-CK+ztdq#354KE@0upAc!Dv08POlPc6ZmMeZ*n(Qf_>pDI4s4 z(V@jge#R@~+IxxzGNvS?UHDhZN)?o%N#A+PPi&jCS947QyRbv3KWmzFhX62@#cAJnWA4_O-x& zrkYmjQNgRx^I%VX*gA{m1JBu8aOOvZS#=7m%>e4{($$@fU?v$`7!~%MSz}WPqS0q3 zd*CzosU>C1jo+^%C?1cGx+WJRQUH0}c8;gZ#Yb^0-nHe4N zia1JECa||$s(n50xN&z=ZKZWwOSw5pr*5Npt0-p*&uaRX;C@~?{M_QsxmGi}7PTGE z`CW(z+pQ0cHw3fCK-K?FiadweO0o@i8`HLxBc%^deL;BX_32AlAnPh3;pBdslX82x zoe}_XjOcgCT;$2pHKfQKVU!qZ4Z$;2xQ_fB%1*|2BN~N>a9taOW+8ru z>#SlWgP78j7o;H*%CGwUKBc5Qszz)q>qF?$;QWkg;5?r+X}~Q?8uZ+6?ZT+g`&aRg zU9Qk_Q@NNh+r3hARHY5Q+xW^Jh*N5^rl&oS+s#DPSj%ouBIEaN=d-_1)3t1E;?F#%QZO`h2-)Kne~YpBL8N4x{` zlZlURTzCy_Qg=#n*GtTrB|ojT%4al?1Y7yithI)dYFj&jC4I4=E5BYddy6)J+{4{l zwIr54u4=c*F_w-p<7t#;N&dbid+;^Esx2@QJiX2^E`WKpO%-MTI z3NhrA*a$D7Mn)Hv9;&64wo_OH*=xZfJh%e`S?pIOLI?LBl+$FaDEVFS6ftc{n;rk> z8x(9yitS639Ea55bAMG#DXDF%K#cg}g{J$bJjpP}=};n>a9@)1K@!BGaNwg7D=0EX zk~y|&(5q5Evm_O_lvc$ablQ2pT4=@F+ps0~5!`z#hqS6yBu7eR!z3Q%d*u^q;h3>U z*$~r18K;xP?^P0dV{-y@DPoPk2!u1_beG*O;yIrH+8h+dylty(JDLfrK*bfEn`6%mE>!>4AK1O;|4 z;qk`LPq<@ogxk(RC|t@O{l?)0oQq6PuN=1g>;6J&TaZh@|!Uw?xBamB6KglUj{ne^CtQ2D$Z zd}DcxXag`BF?W|`+NPQCDr3m(n{0-byi+CvXy~c~SdnT8V13reARaR~J#D0bV2?aE za#MqQA=7l4`BPF4%M@}7LW>HngP)X+rYpWNWzXaAV)l||d6d63Fycdk_prVN72J{L zEm3Dk6$ZpS%4Hc$aZ!szYMGdqEGzt0PV})TOP6voiKxKbw+TM`u?j1JpOsQW0)i6L zpdpgh=%{*8UJjgbrzq_Hj7YB+#LWZba4m(%}ouU7i+W$v-p)KC(8=kE9Df4Bsc^ydd?X8kJPtoQic(N#5lCx7x3(Msmisaa zBLr6lp3pDrh0O2mX>>-+#&zQW;NSGsrX(;Aw^)pJn^!&gYE!CB9J%clMbUq?DZj^X zRs;blzuJ^B{MWzt#WagsyI@On}ZE9ZHTpZcZ9Rdo8i{ijVimrjf9 z_8&C2=Jg*mhqU?j56yY|^<({OQj)l#_9~d8kHarFuQdH z!%Ux_^j%~1KvK-`m!JRNI2;;fj?Vb~7l4EN2jC9K`@mS8&aFX-3_!AYzQ*B*nRe&? zt5Mlhz9=Kg!IwQjc}SVbRBk!_pj=3q2|;B`pnamhS_%6hNj{l^AkwT3H2DH>SMr6l zx7FESjmjN%HC1Ey&Ofz#{?tf>dQ-^z{Pj_!4;QrU_dmi@SQZ;$H5*S{_`PO6WY#w~ z=K0`K^>`;r07=x~D_tAu%{B^OjY@3BzApgR1N~bLrPE&v%*>AVCJC?2=>$xpOU8Yd zp{K?^)oQfpz1?kRP+A|MTG3GB_r@YW*xY;PpHr$D(kyr78nC$Y2l4;7aZAAOo2uXW z#)340ka=izd%pI$x%X4nNNelFj6G&LuTX0Kt)g| z$PI+h`0nzhD3(vb{HQ)l4B&uGX~>R{`=Y}RW&TA4(Gqe1qnI9ocEMNyN2+2&HDhNq z@WtV@!xVJ7^n;i?jI`z0ai2$Qg+J7f*s0cryCz>p-`fN|j;&xFR~c*^P~UH9rKXtx zC41t;&S6bZ9}v;xQ)eNHc#|v^C>m-AyMnY?>1ap&QXPDu-xx9>$M*Qqi7B{5`N4$x zYVJ6XA{1e|@#zbwzMsbD)dVUL27I}e7N7z@-pD9~7#p;PLi6`MD{FusSDd-E7{6cl z1$m_`sv1_0aTE-uo?DS~3DYQv>d;?b^;=H4=T)NunPE%Zox!BjN?S^-YEi>wSF63o zrQ#F?;2<+kOaEYc2epCl*44V*L?CO`6ZLS%TSI+qc=LtRL{)%(TvKBe41vK`43i<{ zuMgn3cAa<_$U+z=J>lj%j$0SdWr2V_va>({-(Hxb(0}O=P6MF2DMLWJC=>@pL}iXA zS26PEyopbnS>|OlB}pd0b{E+eN!zq`e=~w*-uj3g)G;*aPPniwOYu&zPXt3jw7@V( zQ5nmFl%6FcWj9n8O$H3grnD7_3AovFqy2Ggj{B$tXa)~57ES=|$ZcN?zt14x&s@F! zVNU_+h1+l4apbgW`$6Pod{SuVtFn$j_o^kZMejb)kt$b}b!Q}j_A_pfXjD{qmPD&E3pfkzce;72>`|rV06HxE5S`XA*?yvA7=u1#JbeX72 zTi7q8m9aXEg*TYv8Go@)9QYC)g zEpb(p2^AM_B`)Qnxac$)6!f>WaehQ<5RV};l-IOI8L-j-+aXX&(bo*vOJq5UU0wf2 zu*5z|NFCFvSjAIxw)HFvPL>KX>fh!QhM%{F#dODSN?+@7G*0PiVf!rkq~jEe%6>AX!hG?Rrm;G!zXZU-Ji;xdRr7^3pLkbJZ zoSELmd{^P*e%F@5TbbX?N+@#U;E_Dsa1KTn3V;;vil$NWI>9_oYq{>{M7j9WC2Wwm z3tR52Y-9))v=+%qG3&}1c!PQXk|E~gp$hfb{26b!-<0KJvX0MaMlPPtN=Zr1(W1?u zRIzW_HG7kJ;x07E9B(q^ga+j@^d)!~52Vxv=W)xPQ~JpJt>Nj-CPx`MFW3U~zd&!% zRi8-EJgSb<)k9sxsA+Q(RH;0kGV*(X%wun3IQrxP{!$(4u{ z8kSqKj+-7-FpZ8c^$sJq*R8{;(ZjAZSR%j& zVQOIAH)zA0NVN}>X)r|ySCReTNCwX7GCz8$l$#e()4R#@C8?ht71+ffu!FL&^m#{S z4>4j=kQ7p{i9E~hpdN#@C6)Ogq8y3g5e?rvKP92qh-nH_LI-^QNV2IGQegH7&Q`Xw zo;)Tky^CG_eg8{F7=6SYNt;Ns(t$guamyRL(Egu zzyihC0luJ17PbWiRxt=?H*biW(|Ennsh+Wn`j6brP-z!|HI&?K0N&r-!C>Y-=)X2O zblyDxF}C&-nm{c1pPVxWrXG9VgqY+sRftzxxii#a@~>%~CC94VPCqsG!kdw+hVM~7 zviP>$;{uS>6^1^NA1>~W{ZD|I$1{}rcbwb!CyPZc^A|5ph|gWe8dK^?fAcM~6kNH@ z`jZqb!>ZPoV1G2J*cplkI!VN_)Lw7{tk32*sJL#2eyUR0CQH z$HMWRGj@!kPWyRYuT9atC82S)OS7+(5Pjj(Pe|ibNYhpOs}YTTHZ&Lw!)IeOxWQf- zSkz3DfNlb_2A9^8V1E*~}riycdU)c^RgJn~ua|MkM<_m>Cp_MfL5 z+x|J($c-<x3xx_0^J-6ULQeywU6o}p*J4WZ z`XWed*wT)v4xLUKg7>~pE&jY}zK>!CqM&Se{#28taxsjCK=ofgRebM*X@n^~nJ9v{ z#DnHIM5c^`p_6}k1_hTq1~`&93Nm9yb7-Pq6ZPM7#@$i3J_eZ*=^KwhR;h+EjtSd3 zhZ2v3(%AdZg#kQ&%LcB3opZPip)lK)X}k)N--1b8JhMC$V5$Vd>V^3L>h0ajK$)OJ z&e6h#odl>)4GVx_=2ej9sqW@KkZsEcNI9TbaQiJNU?gl8m6K0wJs+q=DMBsdBDSBQ zikibgodp7o1@a`&p~#|8h`b74w8pV{8cL%)#>C2t!UQq(U?@~b1=zL!II2R^LV#(5 z4@8>nM)u4{VT0N)jD?R-eVx{Pv|;2Q7GqchwBTRD7gDV*UO-k~i0Suf?%deP6#~%f z{iMr+?h7!}NaCa^^iQdv9GYVZ!sWx8bFi@pYwng0Ls{IwYPi8s426|4ff3$xD=V1mALtN6@!8 z7&gjw@2HDOhQm8o@JcL&myMr^vX?cK)jK>Esr@)nl1~^3D zs4JH%QdWdW$Y8@#jX~+ZDza09m5awL#ix>j*n3N=F1V)_D1`~1MXzDg(V^m&Vlgb= z>76`EjLfHn=(~GU(@?smL+iVnjysvBr{FE7i`ul!*jDO5|LV5j9s z#UsJ(V=*QFllEGejtrY{l*U((jzwA$RrHkkFqT<*pU#G?KBURhGY&4Y7C~Icjt;85 z7i6m05OUy5A)yxeO)^th)n+0v)?7cGch`@oF2k7GOT93>>m_S|(_O+NOGxwQMly=Z zNvsi&Mbc8p{BI#611V-iv)#84vDwm?4owHrmaG6K!bn$YEtR6b&B6~5v*8Ks^brEZ>r8d6|^ z;z5LfWCHuJEp`?jcbgB?GQqeEm}Y+=c5KE8lOVK6)8fbokz__U8!2J%K)1Zd7A9|? zN!j{xUigI7hfoEli^JErOIbs4-)r?iVwGNb;UP_h z08P!ndhuL^-QWmy{94t9Bf*GTa^4$c5x4nI{~Dpbsx!};poU_@3Y*EZD)g0Fyu}LR z`yYnN)`@T6T?eu>u&H;$m2Tt&usjgHSXGU1b+Tl+gpnkZ?TUXUK=2|(A93-LRI^uc zz>U$&*76JD^y~DNtI=Q$g?Hs#IO`(LL0>&>G7{>AZp-iDv6~c)+RjnsGBi+tORztA zH15**WmOuGnVSXi8a59bHQve9FBnv4n|0cVn~OLG42cR=vzuYy_`fytls5j_NG(gC zlee-WXl!X1smC5~=Avz?A5y&~8w6q5~vajjAhvgX*(%OWlvd^Qw2p!Nx$flO0%=_t-k)fXJEXq^!E=ko^GpsDH=NLAxHiqsGKEFN6w`t(>Oi)`)r6h~?&p_1_U&{L#Er+5)OkSNKu)uW`7p5e@I}qL-+~Klv@RjBHo? z`@hlLK2t)lqIjB_yI&NGXW<%lRgGyvu}%g`vko)djT#7Z6{TRt1DiU#Xg!GNxXKv? z1yUy}x+bbN#{{KDQKw9@vOp=>hZF^p1|#d9D-9d}fKL zhBAqm>AZ9-xGNdh4?L)BI%N&7xDQ;v&0;}Q|I?uu8#Od*4FzU1hMhU1SyB^Pj$-GE ze3xqL)2P*Gl6}K5un3quo|-D}&+ECIx3V7>4Ts`hn+{0G^T}i!G;+Ceo!yEweG%h= z@xeHuYrpIOKR)Z@$cE}KhpN)bxzJ&w8`o1SnEjK%)my0n4*ZR9+dhxq4bHtb(5(YC z?+vA5vfzc96;?udTwsgkH2CRGA#i{|LLXICoUUThLxPY^Hl1wKy~q)_jOJ~Y&8(s@ z=m=fWKFmSn@`13jSp@VY^V`k$VR^^NMQc#MvfreqF5;9Jm7B=Jijc^ z#Lm0Q43eS_K4%58t~R~Kw7cfvZ#tNe*6wbp@XVBDfbmQ{Glo1E_czKxw?@^;Q1P3H ze#W>NoNZBd!teldLRp$_SH!kg<#>PHj=)Bpb=s3e27o5VVmJQsGE-hcOWSAA6m)8l zWFtd}9z~EeW}Z0}6%p@9v)y#{9o+u%BkR&ecA`VXA85n%lwDjqL6YD;XeZKZ5ZzCY zusxQy7Ca$#=d-Y&3pP~-^(}RkyKc9)!@en{#3oHagxuyuMRSMi$4yDKukM`fy{C4! zJ#^19(px2pmcv9=0rjWPpXuTs4A^xzb~rM%trgDgZ~=QJM%=EO%L>b^DU#BEhhS~N z0N94^L#6KP4M88(625#=pHBW>hxB!Zw`~ktjlaL?vrBxYH5EAuD7BdeuPx2}ChBz4 z^bGuf+?qK(takF!O)K29-0&+quCA8;cBidQLh$G{D+kxX`-EVHP-8WDxPKx(MP?q7 zMaW^8MJC2l&VW`MKgO;tH&?_fz_#?$J2 z_;9G~d3c3Tx*#Zfd0W`qtn872@_Bn>Kkbg2X$wb!L{s{$sA;jN;3O!;x%3XYa z1knTqRWbG^t_AD-okxDlpus#-6F-*}Ib&`(8z6DdCQS-1s&%7H(4nbGSn?-L3*GZ8; zZlKnBnlA7XT$`#*`(CkQGa)}H)HS!h{I~3x9=*6-qsQ{LRKlXqdr|& zR@Ek5*th9Hy6Q)rkN%1d7f43vkd=&cRZG0QVFi2S(ULi}35G5kzn%BU4`G|OUO(7e zNRXA!wNuJEFu_1RWC~!Ha@-z#C=yeWV(48Ij^=qwT?87^R+_yF;qIBlt}%_u6HSNr znP9F6CVKYNCTm`aG{}%`$teU2n0zjWRu8@uy68+E-dH@ia^(!3#&w7}3Ko>?1pc`~ zwXo_E)ndId(wK~vkXd}AxrsS#XVq0g1KR3mqwtEgNR!kvNJ~1UoQJM&F%BrK{*8k=Nft zp%SFgt2rBum&7=WM7rGDD)l2ygnzA5zf3J8wX?+I9&Uh}d;g`o9uL++0oG^k6KNqqqL*p}ax-#H<4Eg>e$T z9YExVuP;%8!FL$O{1xReg6ow|H;m`^H4aB?OY1m}=4$;9z-|5tr0c!J>MQev|8nC} z@eiuOKRumh6K$j#XN8cu?ZtjN0YpDY4rRzpo-lglNdTEg40xyi8i)JEzDaZ@0S~Q+Ros0 z)v`l~eo7h^^X0|?KU)s^z5v{v&z$WSfcvrYvN*+$#QV?@+2{4;#`SXFuiDLioQ}JG zH7bjNDMeq6N?=tDL zBoH9H+Kp;JH3zdlR2)a%R+MsL1MT#+}d zq4_tSEn8{M7Ayb&3J!m|-R%WX!<5C-ftY(@y*iMAyw&T`0r?hXvbFtThSvThGm&n! z^1&0l*9X%KcI?splN_YI)ygeq;9xMr`2mtmo?i*%X#*Pj1|;`A52qi_5f}5%_c6llLF*CO?|#k3>pdnEF~<(;v^DFk$@-@BI-h9?h3u&oMcELcj^5X%~V@v zK^@JE02*4Tf(mGA_gvGoiUcWF58}wLPnwH5+}{lbAu;LTEVKLe zOo0dgTV!4A@Yagdg^)>zR`)9ln-q#Rae|l^Z>Z9?Tbg;?wr|*0`W<#lP5BA8!xuLw zH~A`8?d^Q_a}hJl@3iSa_AcSh`t?bjenew68X@i)sro_uO8bnVu6!OL_ujXNf<6$p zs)iw|Ez`acMC8=EaRec05o^ZEsCBDwIVun-!tN|EDemh|8UV*H+)607qbeuGNM7?= zyB0_yz#_ciSymhmA^ElwDM&B@pkAd6mvJ!C>PcarGcOH;_i%RyBrdmYc~N+Ldy5Hr|#vDq9%16TcZnT+^<%$M-6aJ z-JieQ|MQE;OA8RS^tA;Cx)}n1fS0(QArgQfoCCnB5dBG+6M(=)4&YZN!lTjX0~bTK zme7*h$TKSp9G0bbW1dM%VH=EainLb247c%e6T%W;kW~fM<78qVAaJXP^!jxc zO&1LNi>HW!wF*fVQX2+enf6kbf&tkRq>ekeZV8N9L_a@_mizjMj%66h#ic+AHUEi; ze1!^Nd9w@GTm6OW0zS&QJ`(*=X(YbRDUSOgV<|thJ`4ewb6zjuyv!0+114PUc{NQv zbT@@djMBuX5xbddyR5aw->%ARag;E|pA7>R8E9DhB`1sZCkRV*NpLb~J{5GVGq+ z5Z1|j3E6l$gg6z>S^(X(%$joWZWR}?AzXgO6_3aJ@nF~tTkNB5i%R0UPG+5!r=ceIUV4Ibdb|adI|1!06 zh%%VIvD7csjjuE)R=QiZzj%1(3K1}cy@__I-!T?%3>l#COC)kbh?oS!&K1^Whg;_f z7cY)}ds(GtYRkZ-E#uJjru{d@IZtS%%AX#h%)4M+bcOb ztxP@hXL`*TTkXJVmE}5(4910vV9SpyG9~Gyc`ZOMC?7qdz~(QId%&RUuoYk>B!Ntf z13ZT~Nh6wFx~b=)l94y7m+07bBCN`bdbsUULv1P zlv-F7I;+|7;q!DBbg^0-uCjdKWoeu7SF%+cZmm_%8R7Oax)B3xW#|N^Fft}s53QJE zRFky|eqLJ{Nlkxlprv8Ptp|`-AaOpD7lV3CPti)->#De7l%d|Ilr3>-qQZ5*3i~E9 zb4NB)%gB^kgi3QV*mpDkT_;evkQ+LXp(00o_guBtTE3KhE8IGZ1}YXuP2eKA!W8#A zLhzb;0D+xMrzm&BuzQVbpObIq`!DTZYjewb=Lm+nzpTx8oaCOY;YheH)3d`=n|Uvb z$g|b5uD>zz`Ksy%O;<=@z|EYY69TA{`j=nccR-NZ`oQH(cCRx#%0DOjV|lDDd^35N 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

-Fp4ZUKg4x`9JxKk;{eiZESzbu{ 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

9KanA-zaK4qA#V?&DGSH#xKzBL< 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

g-cNV^sfk6o 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

75jmpWV>5*P6yZq7z8iuA~F9)#)%* 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

ez3^c+(C^G$ij=OKVHt7(N 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