Commit Graph

558 Commits

Author SHA1 Message Date
Xiaoge Su cb99a8f56f fixup! Reformat source 2023-08-28 14:56:39 -07:00
Xiaoge Su 5a12d12774 fixup! Enable sharded RocksDB storage engine for PhysicalShardMove 2023-08-28 14:56:39 -07:00
Xiaoge Su 47efd890ad Better error report when specified storage engine is not supported 2023-08-22 15:52:08 -07:00
Jingyu Zhou a4e4ab6411 Fix a crash error 2023-08-09 13:44:52 -07:00
Yi Wu fff6b745d2 EaR: turn down the probability of enabling encryption in simulation 2023-08-02 10:11:18 -07:00
Xiaoge Su d75b167bf1 fixup! Reformat source 2023-07-27 14:14:31 -07:00
Xiaoge Su 0036bab8a4 Rename SSD_ROCKSDB_EXPERIMENTAL to WITH_ROCKSDB 2023-07-27 14:04:10 -07:00
Xiaoge Su c5a8642706 fixup! fix the compile error 2023-07-27 10:56:33 -07:00
Xiaoge Su e655feb07a Remove WITH_ROCKSDB_EXPERIMENTAL, enforce using enum for StorageEngine type in simulation 2023-07-27 10:31:48 -07:00
Xiaoge Su fac2f09641 fixup! Reformat source 2023-07-26 16:00:25 -07:00
Xiaoge Su 874642a15b fixup! Add message when a storage engine is randomly chosen 2023-07-26 15:46:53 -07:00
Xiaoge Su b40ba09303 Add a flag for enabling/disabling RocksDB storage engine in simulations
Previously we have to modify SimulatedCluster source code to
enable/disable RocksDB storage engine in simulations. Now it is doable
by using cmake flags/ccmake gui by setting the OPTION

    ENABLE_ROCKSDB_IN_SIMULATION

ON/OFF.
2023-07-26 15:42:59 -07:00
Josh Slocum 8ce1796a7a
Stable http ports (#10604)
* Ensuring HTTP ports are stable for the same servers, and adding a test http server that ensures no other users accidentally talk to it

* fixing warning with werror

* more werror fixes
2023-07-13 14:06:52 -04:00
Yi Wu b16c7518b4 fix worker server reporting IoTimeoutError as injected fault 2023-07-05 13:30:56 -07:00
Xiaoxi Wang 6afd585a3c Address review: mock assertion and shard number condition 2023-06-07 22:01:33 -07:00
Xiaoxi Wang e3c9a1a7f5 Disable same address detection in mock DD and implement MockStorageServer::getStorageMetrics 2023-06-07 22:01:33 -07:00
Xiaoxi Wang e139f5bf90 Correctly handle buggify errors in MGSWaitStorageMetrics 2023-06-07 22:01:33 -07:00
Xiaoxi Wang b444eb1f22 Make DataDistributor use the configuration object in DDSharedContext; Change Mock test config 2023-06-07 22:01:33 -07:00
He Liu 8ad7ec6fdf
Psm ss (#9817)
* Update NativeAPI getCheckpointForRange().

* Implemented checkpoint in SS.

* clean up.

* Disabled StorageServerCheckpointTest.

* Serialized checkpoint creation and deletion.

Simplified checkpoint GC, via deleting CheckpointMetaData::dir.

* Fixed PhysicalShardMove test. Where fetchCheckpoint target range is misset.

* Minor improvements on CheckpointMetaData and DataMoveMetaData.

* fmt.

* Optimized PhysicalShardMove test

cleanup.

* Refactored ShardedRocks checkpoint/restore for psm.

* Complete ShardedRocks::restore.

* dismiss operation_obsolete, and throw actor_cancelled.

* Validate checkpoint when !asKeyValues.

* fmt.

* Don't read from uninitialized physical shard.

* Resolved commments.

* cleanup.

* Added verify_checksum_before_restore for ShardedRocks.

* Added ShardedRocksDB checkpoint/restore unit test.

* Populate CheckpointMetaData::dir in RocksDB.

* Rename MovingIn as Adding.

* Added StorageServerUtils.

* Added physical shard move in SS.

* Fix on ApplyMetaData, doFetchFile error handling etc.

* Debugging incorrect shard size.

* Create/delete checkpoints only when Physical shard move is enabled.

* Added back SHARD_ENCODE_LOCATION_METADATA.

* Fixed bytesSample incorrect issue.

Essentially dedicated CheckpointRocksDBCF as key-value based checkpoint, will need to add a new format for the file-based checkpoint.

* Cleanup.

* Cleanup & compile rocksdb with 8.1 branch.

* clean up.

* clean up.

* Allowed request_maybe_delivered error type in FetchShard.

* Added FDBRocksDBVersion.h.

* Fixed stuck fetchShard.

* Don't create checkpoint on TSS.

* Upgrade to RocksDB 8.1.1

* Cleanup.

* Fixed accidently deleted db_path and name fields.

* Improved trace event.

* Removed redundants from previuos ShardedrocksDB.

* Cleanup.

* cleanup.

* cleanup.

* reanme `state`.

* Cleanup.

* Removed excessive TraceEvent.

* * Fixed shardMap race condition on different threads
* Added *Stats, logging data move rates.
* Added `DD_PHYSICAL_SHARD_MOVE_PROBABILITY` to support hybrid data move.

* Resolved comments.

* fmt.

* Use physical shard move in PhysicalShardMoveTest.

* Enforce physical-shard-move for PhysicalShardMoveTest.

* fmt
2023-05-23 11:18:35 -07:00
A.J. Beamon 712fefd59f
Merge pull request #10213 from sfc-gh-ajbeamon/tenant-code-probes
Add code probes for tenant and metacluster code
2023-05-15 12:13:00 -07:00
Josh Slocum 9c081f8a08
Sim http server improvements (#10217)
* Passes existing tests

* adding http unit test for wrong md5 sum

* Added new HTTPKeyValueStore workload to test long-running http clients

* fixing warnings
2023-05-12 16:33:32 -05:00
A.J. Beamon d8141c049d Add code probes for tenant code 2023-05-10 20:44:39 -07:00
Chaoguang Lin 77cd187c21
Fix a corner case failure where rebooting flag is forgot to set to true when the process is executing RebootProcessAndSwitch (#10195) 2023-05-09 16:18:48 -07:00
Chaoguang Lin 50df914c80
Add snapshot restarting tests back to correctness on main (#10164)
* Enable fault injection;
Ignore MAX_COORDINATOR_SNAPSHOT_FAULT_TOLERANCE in simulation
Fix the issue when there's not fdb.cluster file and disable randomMoveKeys in SnapTest workload

* Move snap tests to from_7.3.0

* Add comments for the change

* Change SevError to SevWarn when Tlog process is not found in the worker map
2023-05-09 11:02:27 -07:00
Josh Slocum a4dffa087a
Adding Simulated HTTP Server and refactoring HTTP code (#10112)
* Adding Simulated HTTP Server and refactoring HTTP code

* fixing formatting

* fixing merge conflicts

* fixing more merge conflicts

* code review feedback

* changing reference counted interface

* more fixes

* fixing ide build i guess
2023-05-05 12:19:17 -05:00
Xiaoxi Wang a182ce423f add cluster layout to MGS 2023-04-26 14:23:09 -07:00
Zhe Wu 7ab0ae8189
Merge pull request #9041 from halfprice/zhewu/gc-earlier-generations
Track TLog generation recovery and remove no longer needed TLog generations before recovery reaches to `fully_recovered`
2023-04-03 10:16:19 -07:00
Josh Slocum ad28295732
fixing healthy zone issue with restarting tests (#9840)
* fixing healthy zone issue with restarting tests

* formatting
2023-03-30 11:16:43 -05:00
Zhe Wu 40dc54223c Add GC generation test, and make all simulation test passing 2023-03-27 11:46:13 -07:00
Markus Pilman 6937524594
Merge pull request #9599
Allow code to act on test timeouts
2023-03-08 09:26:55 -07:00
Steve Atherton 3faff52266 Fix comment. 2023-03-06 18:44:58 -08:00
Markus Pilman 0838bfcfa2 Allow workloads to log errors when test times out 2023-03-06 17:36:26 -07:00
Steve Atherton 50d567b5a5 Refactored some parts of database configuration to support log_engine=<name> and storage_engine=<name> and generate these when converting a DatabaseConfig JSON object to a `configure` command. Refactored `fileconfigure` and simulation setup to use the same JSON -> configure function as the same code was copy/pasted to both places but only one has been kept up to date with new features. Renamed Redwood to `ssd-redwood-1` canonically but the experimental name is still supported for backward compatibility. 2023-03-04 20:52:31 -08:00
Yi Wu eac757d186
EaR: cleanup encryption knobs (#9386)
Changes:
* Cleanup all encryption knobs 
* Update simulated cluster to randomly enable encryption with higher probability
2023-02-18 13:18:20 -08:00
Ata E Husain Bohra 99b23ac04d
EaR: Configurable encryption support for Tlog mutations (#9394)
* EaR: Configurable encryption support for TLog mutations

Description

  diff-1 : Address review comments

Major changes includes:
1. Update the code involved in ensuring Tlog mutation encryption to be
compliant with "configurable encryption" feature.
2. Update ENABLE_CONFIGURABLE_ENCRYPTION flag to be 'true' by default
and BUGGIFY it.

Testing

devRunCorrectness - 100K
2023-02-16 19:01:59 -08:00
Jingyu Zhou b97ee87eba
Merge pull request #9367 from jzhou77/fix
Enable RocksDB restarting tests
2023-02-14 20:47:31 -08:00
Jingyu Zhou a4d3035f64 Enable RocksDB restarting tests
Disable sharded rocks storage for downgrade tests where we
Need to keep knob "shard_encode_location_metadata" so that downgrade tests
can pass the second phase.
2023-02-13 20:12:19 -08:00
A.J. Beamon 13eee09ce8 Merge branch 'main' into metacluster-mgmt-restore 2023-02-10 10:58:01 -08:00
Yi Wu d3bc2afc8e
EaR: storage server uses encryption DB config (#9115)
The PR is updating storage server and Redwood to enable encryption based on the encryption mode in DB config, which was previously controlled by a knob. High level changes are
1. Passing encryption mode in DB config to storage server
    1.1 If it is a new storage server, pass the encryption mode through `InitializeStorageRequest`. the encryption mode is pass to Redwood for initialization
    1.2 If it is an existing storage server, on restart the storage server will send `GetStorageServerRejoinInfoRequest` to commit proxy, and commit proxy will return the current encryption mode, which it get from DB config on its own initialization. Storage server will compare the DB config encryption mode to the local storage encryption mode, and fail if they don't match
2. Adding a new `encryptionMode()` method to `IKeyValueStore`, which return a future of local encryption mode of the KV store instance. A KV store supporting encryption would need to persist its own encryption mode, and return the mode via the API.
3. Redwood accepts encryption mode from its constructor. For a new Redwood instance, caller has to specific the encryption mode, which will be stored in Redwood per-instance file header. For existing instance, caller is supposed to not passing the encryption mode, and let Redwood find it out from its own header.
4. Refactoring in Redwood to accommodate the above changes.
2023-02-06 14:02:31 -08:00
A.J. Beamon 3a9b2d0721 Fix merge error 2023-01-30 13:34:45 -08:00
A.J. Beamon 73b4cae1ae Fix formatting issues 2023-01-30 13:34:45 -08:00
A.J. Beamon 7179655b44 Fix merge issue 2023-01-30 13:34:45 -08:00
A.J. Beamon 54eb847dcb Fix a bug in the tenant configuration function where the tenant configuration wouldn't get applied if it retried after a successful commit. Fix some formatting and and merge issues. 2023-01-30 13:34:45 -08:00
A.J. Beamon af55feb493 Fix some test issues 2023-01-30 13:34:18 -08:00
A.J. Beamon 91f5347551 Add some simulated testing to the metacluster restore process; fix various issues found by the testing. 2023-01-30 13:34:18 -08:00
Jingyu Zhou 27e1b76b68
Merge pull request #9226 from xis19/main-bench
Extract boost/asio.hpp out from flow/network.h
2023-01-25 09:14:52 -08:00
Xiaoge Su 0a60142160 Extract ProcessInfo, MachineInfo, KillType out from ISimulator 2023-01-24 14:48:42 -08:00
Xiaoge Su 50de69c897 Extract IConnection and NetworkAddress out from network.h 2023-01-24 14:48:31 -08:00
Andrew Noyes 218cda3cf6
Lower ASAN memory usage (#9216)
* Print an asan heap profile on OOM

* Use 32KiB stacks for boost coro

* Print 100%, 10 max contexts for asan OOM

* Lower machineCount to 30 in DataLossRecovery test

* Add asanMachineCount override to control ASAN memory usage
2023-01-24 13:04:47 -08:00
Yi Wu 845cc62a39
Redwood: fix tree height overgrowth with per-tenant encryption (#9020)
* Fix Redwood tree height overgrowth when EaR and tenant page split are enabled, by removing the buildNewSubtree() logic.
* Fixing incorrect page upper bound for the last page created by writePages() without the buildNewSubtree() logic.
* Enable tenant page split if encryption mode is domain-aware encryption.
* Related test fixes:
  - In simulation, pass encryption mode to storage/Redwood via knobs. This is a workaround to enable testing with Redwood encryption before we correctly pass the encryption mode via db config. Also temporarily disable tenant page split for restart tests.
  - Disable raw access in FuzzApiCorrectness test if domain-aware encryption is enabled, to avoid test timeout
  - Disable encryption for DrUpgradeRestart test, which is likely to fail due to a rare EKP deadlock issue blocking recovery. Will re-enable after the deadlock issue is fixed.
2023-01-06 15:56:37 -08:00