| 854 | } |
| 855 | |
| 856 | void put(KeyRef key, ValueRef value) { |
| 857 | auto it = dataShardMap.rangeContaining(key); |
| 858 | if (!it.value()) { |
| 859 | TraceEvent(SevError, "ShardedRocksDB").detail("Error", "write to non-exist shard").detail("WriteKey", key); |
| 860 | return; |
| 861 | } |
| 862 | TraceEvent(SevVerbose, "ShardedRocksShardManagerPut", this->logId) |
| 863 | .detail("WriteKey", key) |
| 864 | .detail("Value", value) |
| 865 | .detail("MapRange", it.range()) |
| 866 | .detail("ShardRange", it.value()->range); |
| 867 | ASSERT(it.value()->range == (KeyRangeRef)it.range()); |
| 868 | ASSERT(writeBatch != nullptr); |
| 869 | ASSERT(dirtyShards != nullptr); |
| 870 | writeBatch->Put(it.value()->physicalShard->cf, toSlice(key), toSlice(value)); |
| 871 | dirtyShards->insert(it.value()->physicalShard); |
| 872 | TraceEvent(SevVerbose, "ShardedRocksShardManagerPutEnd", this->logId) |
| 873 | .detail("WriteKey", key) |
| 874 | .detail("Value", value); |
| 875 | } |
| 876 | |
| 877 | void clear(KeyRef key) { |
| 878 | auto it = dataShardMap.rangeContaining(key); |