mirror of
https://github.com/zaphar/kitchen.git
synced 2025-07-22 19:40:14 -04:00
Add session store middleware
This commit is contained in:
parent
81daf525b8
commit
ac336b03a4
203
Cargo.lock
generated
203
Cargo.lock
generated
@ -53,6 +53,17 @@ version = "1.0.62"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1485d4d2cc45e7b201ee3767015c96faa5904387c9d87c6efdd0fb511f12d305"
|
||||
|
||||
[[package]]
|
||||
name = "argon2"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "db4ce4441f99dbd377ca8a8f57b698c44d0d6e712d8329b5040da5a64aa1ce73"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
"blake2",
|
||||
"password-hash",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "arrayref"
|
||||
version = "0.3.6"
|
||||
@ -233,6 +244,7 @@ dependencies = [
|
||||
"bitflags",
|
||||
"bytes",
|
||||
"futures-util",
|
||||
"headers",
|
||||
"http",
|
||||
"http-body",
|
||||
"hyper",
|
||||
@ -253,6 +265,18 @@ dependencies = [
|
||||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "axum-auth"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f9770f9a9147b2324066609acb5495538cb25f973129663fba2658ba7ed69407"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"axum-core",
|
||||
"base64",
|
||||
"http",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "axum-core"
|
||||
version = "0.2.7"
|
||||
@ -273,6 +297,12 @@ version = "0.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
|
||||
|
||||
[[package]]
|
||||
name = "base64ct"
|
||||
version = "1.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ea2b2456fd614d856680dcd9fcc660a51a820fa09daef2e49772b56a193c8474"
|
||||
|
||||
[[package]]
|
||||
name = "bincode"
|
||||
version = "1.3.3"
|
||||
@ -307,6 +337,15 @@ version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "blake2"
|
||||
version = "0.10.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388"
|
||||
dependencies = [
|
||||
"digest 0.10.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "blake3"
|
||||
version = "0.3.8"
|
||||
@ -319,7 +358,7 @@ dependencies = [
|
||||
"cfg-if 0.1.10",
|
||||
"constant_time_eq",
|
||||
"crypto-mac 0.8.0",
|
||||
"digest",
|
||||
"digest 0.9.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -331,6 +370,15 @@ dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.10.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "blocking"
|
||||
version = "1.2.0"
|
||||
@ -537,6 +585,16 @@ dependencies = [
|
||||
"once_cell",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crypto-common"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"typenum",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crypto-mac"
|
||||
version = "0.8.0"
|
||||
@ -598,6 +656,17 @@ dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
|
||||
dependencies = [
|
||||
"block-buffer 0.10.2",
|
||||
"crypto-common",
|
||||
"subtle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "event-listener"
|
||||
version = "2.5.2"
|
||||
@ -759,6 +828,25 @@ dependencies = [
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "0.3.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ca32592cf21ac7ccab1825cd87f6c9b3d9022c44d086172ed0966bec8af30be"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"fnv",
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"futures-util",
|
||||
"http",
|
||||
"indexmap",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "half"
|
||||
version = "1.8.2"
|
||||
@ -771,6 +859,31 @@ version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||
|
||||
[[package]]
|
||||
name = "headers"
|
||||
version = "0.3.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4cff78e5788be1e0ab65b04d306b2ed5092c815ec97ec70f4ebd5aee158aa55d"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"bitflags",
|
||||
"bytes",
|
||||
"headers-core",
|
||||
"http",
|
||||
"httpdate",
|
||||
"mime",
|
||||
"sha-1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "headers-core"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
|
||||
dependencies = [
|
||||
"http",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.1.19"
|
||||
@ -787,7 +900,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
|
||||
dependencies = [
|
||||
"crypto-mac 0.11.1",
|
||||
"digest",
|
||||
"digest 0.9.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -840,6 +953,7 @@ dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"h2",
|
||||
"http",
|
||||
"http-body",
|
||||
"httparse",
|
||||
@ -906,10 +1020,12 @@ dependencies = [
|
||||
name = "kitchen"
|
||||
version = "0.2.10"
|
||||
dependencies = [
|
||||
"argon2",
|
||||
"async-session",
|
||||
"async-std",
|
||||
"async-trait",
|
||||
"axum",
|
||||
"axum-auth",
|
||||
"ciborium",
|
||||
"clap",
|
||||
"csv",
|
||||
@ -918,9 +1034,13 @@ dependencies = [
|
||||
"recipes",
|
||||
"rocksdb",
|
||||
"rust-embed",
|
||||
"secrecy",
|
||||
"serde",
|
||||
"tower",
|
||||
"tower-http",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1224,6 +1344,17 @@ version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
|
||||
|
||||
[[package]]
|
||||
name = "password-hash"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
"rand_core",
|
||||
"subtle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "paste"
|
||||
version = "1.0.7"
|
||||
@ -1468,19 +1599,29 @@ dependencies = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.143"
|
||||
name = "secrecy"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553"
|
||||
checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.144"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.143"
|
||||
version = "1.0.144"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391"
|
||||
checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -1510,16 +1651,27 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha-1"
|
||||
version = "0.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"cpufeatures",
|
||||
"digest 0.10.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha2"
|
||||
version = "0.9.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
|
||||
dependencies = [
|
||||
"block-buffer",
|
||||
"block-buffer 0.9.0",
|
||||
"cfg-if 1.0.0",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
"digest 0.9.0",
|
||||
"opaque-debug",
|
||||
]
|
||||
|
||||
@ -1705,7 +1857,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "57aec3cfa4c296db7255446efb4928a6be304b431a806216105542a67b6ca82e"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"bytes",
|
||||
"libc",
|
||||
"memchr",
|
||||
"mio",
|
||||
"num_cpus",
|
||||
"once_cell",
|
||||
@ -1714,6 +1868,20 @@ dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-util"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"pin-project-lite",
|
||||
"tokio",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower"
|
||||
version = "0.4.13"
|
||||
@ -1736,6 +1904,7 @@ version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c530c8675c1dbf98facee631536fa116b5fb6382d7dd6dc1b118d970eafe3ba"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"bitflags",
|
||||
"bytes",
|
||||
"futures-core",
|
||||
@ -1859,6 +2028,16 @@ version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "1.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "valuable"
|
||||
version = "0.1.0"
|
||||
@ -2087,6 +2266,12 @@ version = "0.36.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
|
||||
|
||||
[[package]]
|
||||
name = "zeroize"
|
||||
version = "1.5.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f"
|
||||
|
||||
[[package]]
|
||||
name = "zstd-sys"
|
||||
version = "2.0.1+zstd.1.5.2"
|
||||
|
0
kitchen/.session_store/000004.log
Normal file
0
kitchen/.session_store/000004.log
Normal file
0
kitchen/.session_store/000010.log
Normal file
0
kitchen/.session_store/000010.log
Normal file
1
kitchen/.session_store/CURRENT
Normal file
1
kitchen/.session_store/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000011
|
1
kitchen/.session_store/IDENTITY
Normal file
1
kitchen/.session_store/IDENTITY
Normal file
@ -0,0 +1 @@
|
||||
9c871892-ac73-4059-a256-9c7947b71bbf
|
0
kitchen/.session_store/LOCK
Normal file
0
kitchen/.session_store/LOCK
Normal file
1053
kitchen/.session_store/LOG
Normal file
1053
kitchen/.session_store/LOG
Normal file
File diff suppressed because it is too large
Load Diff
428
kitchen/.session_store/LOG.old.1661649246537931
Normal file
428
kitchen/.session_store/LOG.old.1661649246537931
Normal file
@ -0,0 +1,428 @@
|
||||
2022/08/27-21:10:54.681254 4457399680 RocksDB version: 7.4.4
|
||||
2022/08/27-21:10:54.682063 4457399680 Compile date 2022-07-19 08:49:59
|
||||
2022/08/27-21:10:54.682067 4457399680 DB SUMMARY
|
||||
2022/08/27-21:10:54.682069 4457399680 DB Session ID: RUVKYSTSBZ86V00N7S07
|
||||
2022/08/27-21:10:54.682158 4457399680 SST files in /Users/zaphar/projects/kitchen/kitchen/.session_store dir, Total Num: 0, files:
|
||||
2022/08/27-21:10:54.682161 4457399680 Write Ahead Log file in /Users/zaphar/projects/kitchen/kitchen/.session_store:
|
||||
2022/08/27-21:10:54.682163 4457399680 Options.error_if_exists: 0
|
||||
2022/08/27-21:10:54.682165 4457399680 Options.create_if_missing: 1
|
||||
2022/08/27-21:10:54.682166 4457399680 Options.paranoid_checks: 1
|
||||
2022/08/27-21:10:54.682167 4457399680 Options.flush_verify_memtable_count: 1
|
||||
2022/08/27-21:10:54.682168 4457399680 Options.track_and_verify_wals_in_manifest: 0
|
||||
2022/08/27-21:10:54.682169 4457399680 Options.verify_sst_unique_id_in_manifest: 0
|
||||
2022/08/27-21:10:54.682170 4457399680 Options.env: 0x105b15108
|
||||
2022/08/27-21:10:54.682172 4457399680 Options.fs: PosixFileSystem
|
||||
2022/08/27-21:10:54.682173 4457399680 Options.info_log: 0x13590b180
|
||||
2022/08/27-21:10:54.682174 4457399680 Options.max_file_opening_threads: 16
|
||||
2022/08/27-21:10:54.682175 4457399680 Options.statistics: 0x0
|
||||
2022/08/27-21:10:54.682176 4457399680 Options.use_fsync: 0
|
||||
2022/08/27-21:10:54.682178 4457399680 Options.max_log_file_size: 0
|
||||
2022/08/27-21:10:54.682179 4457399680 Options.max_manifest_file_size: 1073741824
|
||||
2022/08/27-21:10:54.682180 4457399680 Options.log_file_time_to_roll: 0
|
||||
2022/08/27-21:10:54.682181 4457399680 Options.keep_log_file_num: 1000
|
||||
2022/08/27-21:10:54.682182 4457399680 Options.recycle_log_file_num: 0
|
||||
2022/08/27-21:10:54.682183 4457399680 Options.allow_fallocate: 1
|
||||
2022/08/27-21:10:54.682184 4457399680 Options.allow_mmap_reads: 0
|
||||
2022/08/27-21:10:54.682185 4457399680 Options.allow_mmap_writes: 0
|
||||
2022/08/27-21:10:54.682186 4457399680 Options.use_direct_reads: 0
|
||||
2022/08/27-21:10:54.682187 4457399680 Options.use_direct_io_for_flush_and_compaction: 0
|
||||
2022/08/27-21:10:54.682188 4457399680 Options.create_missing_column_families: 1
|
||||
2022/08/27-21:10:54.682189 4457399680 Options.db_log_dir:
|
||||
2022/08/27-21:10:54.682191 4457399680 Options.wal_dir:
|
||||
2022/08/27-21:10:54.682192 4457399680 Options.table_cache_numshardbits: 6
|
||||
2022/08/27-21:10:54.682193 4457399680 Options.WAL_ttl_seconds: 0
|
||||
2022/08/27-21:10:54.682194 4457399680 Options.WAL_size_limit_MB: 0
|
||||
2022/08/27-21:10:54.682195 4457399680 Options.max_write_batch_group_size_bytes: 1048576
|
||||
2022/08/27-21:10:54.682196 4457399680 Options.manifest_preallocation_size: 4194304
|
||||
2022/08/27-21:10:54.682197 4457399680 Options.is_fd_close_on_exec: 1
|
||||
2022/08/27-21:10:54.682198 4457399680 Options.advise_random_on_open: 1
|
||||
2022/08/27-21:10:54.682199 4457399680 Options.experimental_mempurge_threshold: 0.000000
|
||||
2022/08/27-21:10:54.682203 4457399680 Options.db_write_buffer_size: 0
|
||||
2022/08/27-21:10:54.682204 4457399680 Options.write_buffer_manager: 0x13590b280
|
||||
2022/08/27-21:10:54.682205 4457399680 Options.access_hint_on_compaction_start: 1
|
||||
2022/08/27-21:10:54.682206 4457399680 Options.random_access_max_buffer_size: 1048576
|
||||
2022/08/27-21:10:54.682207 4457399680 Options.use_adaptive_mutex: 0
|
||||
2022/08/27-21:10:54.682208 4457399680 Options.rate_limiter: 0x0
|
||||
2022/08/27-21:10:54.682210 4457399680 Options.sst_file_manager.rate_bytes_per_sec: 0
|
||||
2022/08/27-21:10:54.682234 4457399680 Options.wal_recovery_mode: 2
|
||||
2022/08/27-21:10:54.682235 4457399680 Options.enable_thread_tracking: 0
|
||||
2022/08/27-21:10:54.682236 4457399680 Options.enable_pipelined_write: 0
|
||||
2022/08/27-21:10:54.682237 4457399680 Options.unordered_write: 0
|
||||
2022/08/27-21:10:54.682238 4457399680 Options.allow_concurrent_memtable_write: 1
|
||||
2022/08/27-21:10:54.682239 4457399680 Options.enable_write_thread_adaptive_yield: 1
|
||||
2022/08/27-21:10:54.682240 4457399680 Options.write_thread_max_yield_usec: 100
|
||||
2022/08/27-21:10:54.682241 4457399680 Options.write_thread_slow_yield_usec: 3
|
||||
2022/08/27-21:10:54.682242 4457399680 Options.row_cache: None
|
||||
2022/08/27-21:10:54.682244 4457399680 Options.wal_filter: None
|
||||
2022/08/27-21:10:54.682245 4457399680 Options.avoid_flush_during_recovery: 0
|
||||
2022/08/27-21:10:54.682246 4457399680 Options.allow_ingest_behind: 0
|
||||
2022/08/27-21:10:54.682247 4457399680 Options.two_write_queues: 0
|
||||
2022/08/27-21:10:54.682248 4457399680 Options.manual_wal_flush: 0
|
||||
2022/08/27-21:10:54.682249 4457399680 Options.wal_compression: 0
|
||||
2022/08/27-21:10:54.682250 4457399680 Options.atomic_flush: 0
|
||||
2022/08/27-21:10:54.682251 4457399680 Options.avoid_unnecessary_blocking_io: 0
|
||||
2022/08/27-21:10:54.682252 4457399680 Options.persist_stats_to_disk: 0
|
||||
2022/08/27-21:10:54.682253 4457399680 Options.write_dbid_to_manifest: 0
|
||||
2022/08/27-21:10:54.682254 4457399680 Options.log_readahead_size: 0
|
||||
2022/08/27-21:10:54.682256 4457399680 Options.file_checksum_gen_factory: Unknown
|
||||
2022/08/27-21:10:54.682257 4457399680 Options.best_efforts_recovery: 0
|
||||
2022/08/27-21:10:54.682258 4457399680 Options.max_bgerror_resume_count: 2147483647
|
||||
2022/08/27-21:10:54.682259 4457399680 Options.bgerror_resume_retry_interval: 1000000
|
||||
2022/08/27-21:10:54.682260 4457399680 Options.allow_data_in_errors: 0
|
||||
2022/08/27-21:10:54.682261 4457399680 Options.db_host_id: __hostname__
|
||||
2022/08/27-21:10:54.682262 4457399680 Options.enforce_single_del_contracts: true
|
||||
2022/08/27-21:10:54.682264 4457399680 Options.max_background_jobs: 2
|
||||
2022/08/27-21:10:54.682265 4457399680 Options.max_background_compactions: -1
|
||||
2022/08/27-21:10:54.682266 4457399680 Options.max_subcompactions: 1
|
||||
2022/08/27-21:10:54.682267 4457399680 Options.avoid_flush_during_shutdown: 0
|
||||
2022/08/27-21:10:54.682268 4457399680 Options.writable_file_max_buffer_size: 1048576
|
||||
2022/08/27-21:10:54.682269 4457399680 Options.delayed_write_rate : 16777216
|
||||
2022/08/27-21:10:54.682270 4457399680 Options.max_total_wal_size: 0
|
||||
2022/08/27-21:10:54.682271 4457399680 Options.delete_obsolete_files_period_micros: 21600000000
|
||||
2022/08/27-21:10:54.682272 4457399680 Options.stats_dump_period_sec: 600
|
||||
2022/08/27-21:10:54.682273 4457399680 Options.stats_persist_period_sec: 600
|
||||
2022/08/27-21:10:54.682275 4457399680 Options.stats_history_buffer_size: 1048576
|
||||
2022/08/27-21:10:54.682276 4457399680 Options.max_open_files: -1
|
||||
2022/08/27-21:10:54.682277 4457399680 Options.bytes_per_sync: 0
|
||||
2022/08/27-21:10:54.682278 4457399680 Options.wal_bytes_per_sync: 0
|
||||
2022/08/27-21:10:54.682279 4457399680 Options.strict_bytes_per_sync: 0
|
||||
2022/08/27-21:10:54.682280 4457399680 Options.compaction_readahead_size: 0
|
||||
2022/08/27-21:10:54.682281 4457399680 Options.max_background_flushes: -1
|
||||
2022/08/27-21:10:54.682282 4457399680 Compression algorithms supported:
|
||||
2022/08/27-21:10:54.682303 4457399680 kZSTD supported: 1
|
||||
2022/08/27-21:10:54.682304 4457399680 kZlibCompression supported: 1
|
||||
2022/08/27-21:10:54.682319 4457399680 kXpressCompression supported: 0
|
||||
2022/08/27-21:10:54.682321 4457399680 kSnappyCompression supported: 1
|
||||
2022/08/27-21:10:54.682322 4457399680 kZSTDNotFinalCompression supported: 1
|
||||
2022/08/27-21:10:54.682324 4457399680 kLZ4HCCompression supported: 1
|
||||
2022/08/27-21:10:54.682325 4457399680 kLZ4Compression supported: 1
|
||||
2022/08/27-21:10:54.682326 4457399680 kBZip2Compression supported: 1
|
||||
2022/08/27-21:10:54.682335 4457399680 Fast CRC32 supported: Supported on Arm64
|
||||
2022/08/27-21:10:54.682336 4457399680 DMutex implementation: pthread_mutex_t
|
||||
2022/08/27-21:10:54.682831 4457399680 [db/db_impl/db_impl_open.cc:313] Creating manifest 1
|
||||
2022/08/27-21:10:54.683334 4457399680 [db/version_set.cc:4948] Recovering from manifest file: /Users/zaphar/projects/kitchen/kitchen/.session_store/MANIFEST-000001
|
||||
2022/08/27-21:10:54.683641 4457399680 [db/column_family.cc:614] --------------- Options for column family [default]:
|
||||
2022/08/27-21:10:54.683644 4457399680 Options.comparator: leveldb.BytewiseComparator
|
||||
2022/08/27-21:10:54.683646 4457399680 Options.merge_operator: None
|
||||
2022/08/27-21:10:54.683647 4457399680 Options.compaction_filter: None
|
||||
2022/08/27-21:10:54.683648 4457399680 Options.compaction_filter_factory: None
|
||||
2022/08/27-21:10:54.683649 4457399680 Options.sst_partitioner_factory: None
|
||||
2022/08/27-21:10:54.683650 4457399680 Options.memtable_factory: SkipListFactory
|
||||
2022/08/27-21:10:54.683652 4457399680 Options.table_factory: BlockBasedTable
|
||||
2022/08/27-21:10:54.683671 4457399680 table_factory options: flush_block_policy_factory: FlushBlockBySizePolicyFactory (0x13590a370)
|
||||
cache_index_and_filter_blocks: 0
|
||||
cache_index_and_filter_blocks_with_high_priority: 1
|
||||
pin_l0_filter_and_index_blocks_in_cache: 0
|
||||
pin_top_level_index_and_filter: 1
|
||||
index_type: 0
|
||||
data_block_index_type: 0
|
||||
index_shortening: 1
|
||||
data_block_hash_table_util_ratio: 0.750000
|
||||
checksum: 1
|
||||
no_block_cache: 0
|
||||
block_cache: 0x13590a3c8
|
||||
block_cache_name: LRUCache
|
||||
block_cache_options:
|
||||
capacity : 8388608
|
||||
num_shard_bits : 4
|
||||
strict_capacity_limit : 0
|
||||
memory_allocator : None
|
||||
high_pri_pool_ratio: 0.000
|
||||
block_cache_compressed: 0x0
|
||||
persistent_cache: 0x0
|
||||
block_size: 4096
|
||||
block_size_deviation: 10
|
||||
block_restart_interval: 16
|
||||
index_block_restart_interval: 1
|
||||
metadata_block_size: 4096
|
||||
partition_filters: 0
|
||||
use_delta_encoding: 1
|
||||
filter_policy: nullptr
|
||||
whole_key_filtering: 1
|
||||
verify_compression: 0
|
||||
read_amp_bytes_per_bit: 0
|
||||
format_version: 5
|
||||
enable_index_compression: 1
|
||||
block_align: 0
|
||||
max_auto_readahead_size: 262144
|
||||
prepopulate_block_cache: 0
|
||||
initial_auto_readahead_size: 8192
|
||||
2022/08/27-21:10:54.683674 4457399680 Options.write_buffer_size: 67108864
|
||||
2022/08/27-21:10:54.683676 4457399680 Options.max_write_buffer_number: 2
|
||||
2022/08/27-21:10:54.683677 4457399680 Options.compression: Snappy
|
||||
2022/08/27-21:10:54.683678 4457399680 Options.bottommost_compression: Disabled
|
||||
2022/08/27-21:10:54.683680 4457399680 Options.prefix_extractor: nullptr
|
||||
2022/08/27-21:10:54.683681 4457399680 Options.memtable_insert_with_hint_prefix_extractor: nullptr
|
||||
2022/08/27-21:10:54.683682 4457399680 Options.num_levels: 7
|
||||
2022/08/27-21:10:54.683683 4457399680 Options.min_write_buffer_number_to_merge: 1
|
||||
2022/08/27-21:10:54.683684 4457399680 Options.max_write_buffer_number_to_maintain: 0
|
||||
2022/08/27-21:10:54.683685 4457399680 Options.max_write_buffer_size_to_maintain: 0
|
||||
2022/08/27-21:10:54.683686 4457399680 Options.bottommost_compression_opts.window_bits: -14
|
||||
2022/08/27-21:10:54.683687 4457399680 Options.bottommost_compression_opts.level: 32767
|
||||
2022/08/27-21:10:54.683689 4457399680 Options.bottommost_compression_opts.strategy: 0
|
||||
2022/08/27-21:10:54.683690 4457399680 Options.bottommost_compression_opts.max_dict_bytes: 0
|
||||
2022/08/27-21:10:54.683691 4457399680 Options.bottommost_compression_opts.zstd_max_train_bytes: 0
|
||||
2022/08/27-21:10:54.683711 4457399680 Options.bottommost_compression_opts.parallel_threads: 1
|
||||
2022/08/27-21:10:54.683713 4457399680 Options.bottommost_compression_opts.enabled: false
|
||||
2022/08/27-21:10:54.683714 4457399680 Options.bottommost_compression_opts.max_dict_buffer_bytes: 0
|
||||
2022/08/27-21:10:54.683715 4457399680 Options.bottommost_compression_opts.use_zstd_dict_trainer: true
|
||||
2022/08/27-21:10:54.683716 4457399680 Options.compression_opts.window_bits: -14
|
||||
2022/08/27-21:10:54.683717 4457399680 Options.compression_opts.level: 32767
|
||||
2022/08/27-21:10:54.683718 4457399680 Options.compression_opts.strategy: 0
|
||||
2022/08/27-21:10:54.683719 4457399680 Options.compression_opts.max_dict_bytes: 0
|
||||
2022/08/27-21:10:54.683720 4457399680 Options.compression_opts.zstd_max_train_bytes: 0
|
||||
2022/08/27-21:10:54.683721 4457399680 Options.compression_opts.use_zstd_dict_trainer: true
|
||||
2022/08/27-21:10:54.683723 4457399680 Options.compression_opts.parallel_threads: 1
|
||||
2022/08/27-21:10:54.683724 4457399680 Options.compression_opts.enabled: false
|
||||
2022/08/27-21:10:54.683725 4457399680 Options.compression_opts.max_dict_buffer_bytes: 0
|
||||
2022/08/27-21:10:54.683726 4457399680 Options.level0_file_num_compaction_trigger: 4
|
||||
2022/08/27-21:10:54.683727 4457399680 Options.level0_slowdown_writes_trigger: 20
|
||||
2022/08/27-21:10:54.683728 4457399680 Options.level0_stop_writes_trigger: 36
|
||||
2022/08/27-21:10:54.683729 4457399680 Options.target_file_size_base: 67108864
|
||||
2022/08/27-21:10:54.683730 4457399680 Options.target_file_size_multiplier: 1
|
||||
2022/08/27-21:10:54.683731 4457399680 Options.max_bytes_for_level_base: 268435456
|
||||
2022/08/27-21:10:54.683732 4457399680 Options.level_compaction_dynamic_level_bytes: 0
|
||||
2022/08/27-21:10:54.683733 4457399680 Options.max_bytes_for_level_multiplier: 10.000000
|
||||
2022/08/27-21:10:54.683735 4457399680 Options.max_bytes_for_level_multiplier_addtl[0]: 1
|
||||
2022/08/27-21:10:54.683736 4457399680 Options.max_bytes_for_level_multiplier_addtl[1]: 1
|
||||
2022/08/27-21:10:54.683737 4457399680 Options.max_bytes_for_level_multiplier_addtl[2]: 1
|
||||
2022/08/27-21:10:54.683738 4457399680 Options.max_bytes_for_level_multiplier_addtl[3]: 1
|
||||
2022/08/27-21:10:54.683739 4457399680 Options.max_bytes_for_level_multiplier_addtl[4]: 1
|
||||
2022/08/27-21:10:54.683741 4457399680 Options.max_bytes_for_level_multiplier_addtl[5]: 1
|
||||
2022/08/27-21:10:54.683742 4457399680 Options.max_bytes_for_level_multiplier_addtl[6]: 1
|
||||
2022/08/27-21:10:54.683743 4457399680 Options.max_sequential_skip_in_iterations: 8
|
||||
2022/08/27-21:10:54.683744 4457399680 Options.max_compaction_bytes: 1677721600
|
||||
2022/08/27-21:10:54.683745 4457399680 Options.arena_block_size: 1048576
|
||||
2022/08/27-21:10:54.683746 4457399680 Options.soft_pending_compaction_bytes_limit: 68719476736
|
||||
2022/08/27-21:10:54.683747 4457399680 Options.hard_pending_compaction_bytes_limit: 274877906944
|
||||
2022/08/27-21:10:54.683748 4457399680 Options.disable_auto_compactions: 0
|
||||
2022/08/27-21:10:54.683750 4457399680 Options.compaction_style: kCompactionStyleLevel
|
||||
2022/08/27-21:10:54.683753 4457399680 Options.compaction_pri: kMinOverlappingRatio
|
||||
2022/08/27-21:10:54.683754 4457399680 Options.compaction_options_universal.size_ratio: 1
|
||||
2022/08/27-21:10:54.683755 4457399680 Options.compaction_options_universal.min_merge_width: 2
|
||||
2022/08/27-21:10:54.683756 4457399680 Options.compaction_options_universal.max_merge_width: 4294967295
|
||||
2022/08/27-21:10:54.683757 4457399680 Options.compaction_options_universal.max_size_amplification_percent: 200
|
||||
2022/08/27-21:10:54.683758 4457399680 Options.compaction_options_universal.compression_size_percent: -1
|
||||
2022/08/27-21:10:54.683760 4457399680 Options.compaction_options_universal.stop_style: kCompactionStopStyleTotalSize
|
||||
2022/08/27-21:10:54.683762 4457399680 Options.compaction_options_fifo.max_table_files_size: 1073741824
|
||||
2022/08/27-21:10:54.683776 4457399680 Options.compaction_options_fifo.allow_compaction: 0
|
||||
2022/08/27-21:10:54.683779 4457399680 Options.table_properties_collectors:
|
||||
2022/08/27-21:10:54.683780 4457399680 Options.inplace_update_support: 0
|
||||
2022/08/27-21:10:54.683781 4457399680 Options.inplace_update_num_locks: 10000
|
||||
2022/08/27-21:10:54.683782 4457399680 Options.memtable_prefix_bloom_size_ratio: 0.000000
|
||||
2022/08/27-21:10:54.683783 4457399680 Options.memtable_whole_key_filtering: 0
|
||||
2022/08/27-21:10:54.683784 4457399680 Options.memtable_huge_page_size: 0
|
||||
2022/08/27-21:10:54.683785 4457399680 Options.bloom_locality: 0
|
||||
2022/08/27-21:10:54.683787 4457399680 Options.max_successive_merges: 0
|
||||
2022/08/27-21:10:54.683788 4457399680 Options.optimize_filters_for_hits: 0
|
||||
2022/08/27-21:10:54.683789 4457399680 Options.paranoid_file_checks: 0
|
||||
2022/08/27-21:10:54.683790 4457399680 Options.force_consistency_checks: 1
|
||||
2022/08/27-21:10:54.683791 4457399680 Options.report_bg_io_stats: 0
|
||||
2022/08/27-21:10:54.683792 4457399680 Options.ttl: 2592000
|
||||
2022/08/27-21:10:54.683793 4457399680 Options.periodic_compaction_seconds: 0
|
||||
2022/08/27-21:10:54.683794 4457399680 Options.enable_blob_files: false
|
||||
2022/08/27-21:10:54.683795 4457399680 Options.min_blob_size: 0
|
||||
2022/08/27-21:10:54.683796 4457399680 Options.blob_file_size: 268435456
|
||||
2022/08/27-21:10:54.683797 4457399680 Options.blob_compression_type: NoCompression
|
||||
2022/08/27-21:10:54.683798 4457399680 Options.enable_blob_garbage_collection: false
|
||||
2022/08/27-21:10:54.683799 4457399680 Options.blob_garbage_collection_age_cutoff: 0.250000
|
||||
2022/08/27-21:10:54.683801 4457399680 Options.blob_garbage_collection_force_threshold: 1.000000
|
||||
2022/08/27-21:10:54.683802 4457399680 Options.blob_compaction_readahead_size: 0
|
||||
2022/08/27-21:10:54.683803 4457399680 Options.blob_file_starting_level: 0
|
||||
2022/08/27-21:10:54.684406 4457399680 [db/version_set.cc:4996] Recovered from manifest file:/Users/zaphar/projects/kitchen/kitchen/.session_store/MANIFEST-000001 succeeded,manifest_file_number is 1, next_file_number is 3, last_sequence is 0, log_number is 0,prev_log_number is 0,max_column_family is 0,min_log_number_to_keep is 0
|
||||
2022/08/27-21:10:54.684408 4457399680 [db/version_set.cc:5005] Column family [default] (ID 0), log number is 0
|
||||
2022/08/27-21:10:54.684454 4457399680 [db/db_impl/db_impl_open.cc:532] DB ID: 9c871892-ac73-4059-a256-9c7947b71bbf
|
||||
2022/08/27-21:10:54.684772 4457399680 [db/version_set.cc:4467] Creating manifest 5
|
||||
2022/08/27-21:10:54.685313 4457399680 [db/column_family.cc:614] --------------- Options for column family [kitchen_session]:
|
||||
2022/08/27-21:10:54.685317 4457399680 Options.comparator: leveldb.BytewiseComparator
|
||||
2022/08/27-21:10:54.685318 4457399680 Options.merge_operator: None
|
||||
2022/08/27-21:10:54.685319 4457399680 Options.compaction_filter: None
|
||||
2022/08/27-21:10:54.685320 4457399680 Options.compaction_filter_factory: None
|
||||
2022/08/27-21:10:54.685321 4457399680 Options.sst_partitioner_factory: None
|
||||
2022/08/27-21:10:54.685321 4457399680 Options.memtable_factory: SkipListFactory
|
||||
2022/08/27-21:10:54.685322 4457399680 Options.table_factory: BlockBasedTable
|
||||
2022/08/27-21:10:54.685345 4457399680 table_factory options: flush_block_policy_factory: FlushBlockBySizePolicyFactory (0x135908520)
|
||||
cache_index_and_filter_blocks: 0
|
||||
cache_index_and_filter_blocks_with_high_priority: 1
|
||||
pin_l0_filter_and_index_blocks_in_cache: 0
|
||||
pin_top_level_index_and_filter: 1
|
||||
index_type: 0
|
||||
data_block_index_type: 0
|
||||
index_shortening: 1
|
||||
data_block_hash_table_util_ratio: 0.750000
|
||||
checksum: 1
|
||||
no_block_cache: 0
|
||||
block_cache: 0x135908578
|
||||
block_cache_name: LRUCache
|
||||
block_cache_options:
|
||||
capacity : 8388608
|
||||
num_shard_bits : 4
|
||||
strict_capacity_limit : 0
|
||||
memory_allocator : None
|
||||
high_pri_pool_ratio: 0.000
|
||||
block_cache_compressed: 0x0
|
||||
persistent_cache: 0x0
|
||||
block_size: 4096
|
||||
block_size_deviation: 10
|
||||
block_restart_interval: 16
|
||||
index_block_restart_interval: 1
|
||||
metadata_block_size: 4096
|
||||
partition_filters: 0
|
||||
use_delta_encoding: 1
|
||||
filter_policy: nullptr
|
||||
whole_key_filtering: 1
|
||||
verify_compression: 0
|
||||
read_amp_bytes_per_bit: 0
|
||||
format_version: 5
|
||||
enable_index_compression: 1
|
||||
block_align: 0
|
||||
max_auto_readahead_size: 262144
|
||||
prepopulate_block_cache: 0
|
||||
initial_auto_readahead_size: 8192
|
||||
2022/08/27-21:10:54.685348 4457399680 Options.write_buffer_size: 67108864
|
||||
2022/08/27-21:10:54.685348 4457399680 Options.max_write_buffer_number: 2
|
||||
2022/08/27-21:10:54.685350 4457399680 Options.compression: Snappy
|
||||
2022/08/27-21:10:54.685350 4457399680 Options.bottommost_compression: Disabled
|
||||
2022/08/27-21:10:54.685351 4457399680 Options.prefix_extractor: nullptr
|
||||
2022/08/27-21:10:54.685352 4457399680 Options.memtable_insert_with_hint_prefix_extractor: nullptr
|
||||
2022/08/27-21:10:54.685353 4457399680 Options.num_levels: 7
|
||||
2022/08/27-21:10:54.685354 4457399680 Options.min_write_buffer_number_to_merge: 1
|
||||
2022/08/27-21:10:54.685354 4457399680 Options.max_write_buffer_number_to_maintain: 0
|
||||
2022/08/27-21:10:54.685355 4457399680 Options.max_write_buffer_size_to_maintain: 0
|
||||
2022/08/27-21:10:54.685356 4457399680 Options.bottommost_compression_opts.window_bits: -14
|
||||
2022/08/27-21:10:54.685357 4457399680 Options.bottommost_compression_opts.level: 32767
|
||||
2022/08/27-21:10:54.685358 4457399680 Options.bottommost_compression_opts.strategy: 0
|
||||
2022/08/27-21:10:54.685358 4457399680 Options.bottommost_compression_opts.max_dict_bytes: 0
|
||||
2022/08/27-21:10:54.685359 4457399680 Options.bottommost_compression_opts.zstd_max_train_bytes: 0
|
||||
2022/08/27-21:10:54.685360 4457399680 Options.bottommost_compression_opts.parallel_threads: 1
|
||||
2022/08/27-21:10:54.685361 4457399680 Options.bottommost_compression_opts.enabled: false
|
||||
2022/08/27-21:10:54.685362 4457399680 Options.bottommost_compression_opts.max_dict_buffer_bytes: 0
|
||||
2022/08/27-21:10:54.685362 4457399680 Options.bottommost_compression_opts.use_zstd_dict_trainer: true
|
||||
2022/08/27-21:10:54.685363 4457399680 Options.compression_opts.window_bits: -14
|
||||
2022/08/27-21:10:54.685364 4457399680 Options.compression_opts.level: 32767
|
||||
2022/08/27-21:10:54.685365 4457399680 Options.compression_opts.strategy: 0
|
||||
2022/08/27-21:10:54.685366 4457399680 Options.compression_opts.max_dict_bytes: 0
|
||||
2022/08/27-21:10:54.685366 4457399680 Options.compression_opts.zstd_max_train_bytes: 0
|
||||
2022/08/27-21:10:54.685380 4457399680 Options.compression_opts.use_zstd_dict_trainer: true
|
||||
2022/08/27-21:10:54.685381 4457399680 Options.compression_opts.parallel_threads: 1
|
||||
2022/08/27-21:10:54.685382 4457399680 Options.compression_opts.enabled: false
|
||||
2022/08/27-21:10:54.685383 4457399680 Options.compression_opts.max_dict_buffer_bytes: 0
|
||||
2022/08/27-21:10:54.685383 4457399680 Options.level0_file_num_compaction_trigger: 4
|
||||
2022/08/27-21:10:54.685384 4457399680 Options.level0_slowdown_writes_trigger: 20
|
||||
2022/08/27-21:10:54.685385 4457399680 Options.level0_stop_writes_trigger: 36
|
||||
2022/08/27-21:10:54.685386 4457399680 Options.target_file_size_base: 67108864
|
||||
2022/08/27-21:10:54.685387 4457399680 Options.target_file_size_multiplier: 1
|
||||
2022/08/27-21:10:54.685387 4457399680 Options.max_bytes_for_level_base: 268435456
|
||||
2022/08/27-21:10:54.685388 4457399680 Options.level_compaction_dynamic_level_bytes: 0
|
||||
2022/08/27-21:10:54.685389 4457399680 Options.max_bytes_for_level_multiplier: 10.000000
|
||||
2022/08/27-21:10:54.685390 4457399680 Options.max_bytes_for_level_multiplier_addtl[0]: 1
|
||||
2022/08/27-21:10:54.685391 4457399680 Options.max_bytes_for_level_multiplier_addtl[1]: 1
|
||||
2022/08/27-21:10:54.685392 4457399680 Options.max_bytes_for_level_multiplier_addtl[2]: 1
|
||||
2022/08/27-21:10:54.685393 4457399680 Options.max_bytes_for_level_multiplier_addtl[3]: 1
|
||||
2022/08/27-21:10:54.685394 4457399680 Options.max_bytes_for_level_multiplier_addtl[4]: 1
|
||||
2022/08/27-21:10:54.685394 4457399680 Options.max_bytes_for_level_multiplier_addtl[5]: 1
|
||||
2022/08/27-21:10:54.685395 4457399680 Options.max_bytes_for_level_multiplier_addtl[6]: 1
|
||||
2022/08/27-21:10:54.685396 4457399680 Options.max_sequential_skip_in_iterations: 8
|
||||
2022/08/27-21:10:54.685397 4457399680 Options.max_compaction_bytes: 1677721600
|
||||
2022/08/27-21:10:54.685397 4457399680 Options.arena_block_size: 1048576
|
||||
2022/08/27-21:10:54.685398 4457399680 Options.soft_pending_compaction_bytes_limit: 68719476736
|
||||
2022/08/27-21:10:54.685399 4457399680 Options.hard_pending_compaction_bytes_limit: 274877906944
|
||||
2022/08/27-21:10:54.685400 4457399680 Options.disable_auto_compactions: 0
|
||||
2022/08/27-21:10:54.685401 4457399680 Options.compaction_style: kCompactionStyleLevel
|
||||
2022/08/27-21:10:54.685403 4457399680 Options.compaction_pri: kMinOverlappingRatio
|
||||
2022/08/27-21:10:54.685404 4457399680 Options.compaction_options_universal.size_ratio: 1
|
||||
2022/08/27-21:10:54.685404 4457399680 Options.compaction_options_universal.min_merge_width: 2
|
||||
2022/08/27-21:10:54.685405 4457399680 Options.compaction_options_universal.max_merge_width: 4294967295
|
||||
2022/08/27-21:10:54.685406 4457399680 Options.compaction_options_universal.max_size_amplification_percent: 200
|
||||
2022/08/27-21:10:54.685407 4457399680 Options.compaction_options_universal.compression_size_percent: -1
|
||||
2022/08/27-21:10:54.685408 4457399680 Options.compaction_options_universal.stop_style: kCompactionStopStyleTotalSize
|
||||
2022/08/27-21:10:54.685409 4457399680 Options.compaction_options_fifo.max_table_files_size: 1073741824
|
||||
2022/08/27-21:10:54.685410 4457399680 Options.compaction_options_fifo.allow_compaction: 0
|
||||
2022/08/27-21:10:54.685412 4457399680 Options.table_properties_collectors:
|
||||
2022/08/27-21:10:54.685413 4457399680 Options.inplace_update_support: 0
|
||||
2022/08/27-21:10:54.685413 4457399680 Options.inplace_update_num_locks: 10000
|
||||
2022/08/27-21:10:54.685414 4457399680 Options.memtable_prefix_bloom_size_ratio: 0.000000
|
||||
2022/08/27-21:10:54.685415 4457399680 Options.memtable_whole_key_filtering: 0
|
||||
2022/08/27-21:10:54.685416 4457399680 Options.memtable_huge_page_size: 0
|
||||
2022/08/27-21:10:54.685417 4457399680 Options.bloom_locality: 0
|
||||
2022/08/27-21:10:54.685417 4457399680 Options.max_successive_merges: 0
|
||||
2022/08/27-21:10:54.685418 4457399680 Options.optimize_filters_for_hits: 0
|
||||
2022/08/27-21:10:54.685428 4457399680 Options.paranoid_file_checks: 0
|
||||
2022/08/27-21:10:54.685428 4457399680 Options.force_consistency_checks: 1
|
||||
2022/08/27-21:10:54.685429 4457399680 Options.report_bg_io_stats: 0
|
||||
2022/08/27-21:10:54.685430 4457399680 Options.ttl: 2592000
|
||||
2022/08/27-21:10:54.685431 4457399680 Options.periodic_compaction_seconds: 0
|
||||
2022/08/27-21:10:54.685432 4457399680 Options.enable_blob_files: false
|
||||
2022/08/27-21:10:54.685432 4457399680 Options.min_blob_size: 0
|
||||
2022/08/27-21:10:54.685433 4457399680 Options.blob_file_size: 268435456
|
||||
2022/08/27-21:10:54.685434 4457399680 Options.blob_compression_type: NoCompression
|
||||
2022/08/27-21:10:54.685435 4457399680 Options.enable_blob_garbage_collection: false
|
||||
2022/08/27-21:10:54.685436 4457399680 Options.blob_garbage_collection_age_cutoff: 0.250000
|
||||
2022/08/27-21:10:54.685437 4457399680 Options.blob_garbage_collection_force_threshold: 1.000000
|
||||
2022/08/27-21:10:54.685437 4457399680 Options.blob_compaction_readahead_size: 0
|
||||
2022/08/27-21:10:54.685438 4457399680 Options.blob_file_starting_level: 0
|
||||
2022/08/27-21:10:54.685530 4457399680 [db/db_impl/db_impl.cc:2834] Created column family [kitchen_session] (ID 1)
|
||||
2022/08/27-21:10:54.693201 4457399680 [db/db_impl/db_impl_open.cc:1965] SstFileManager instance 0x13590b510
|
||||
2022/08/27-21:10:54.693261 4457399680 DB pointer 0x136016000
|
||||
2022/08/27-21:10:54.693776 6139899904 [db/db_impl/db_impl.cc:1043] ------- DUMPING STATS -------
|
||||
2022/08/27-21:10:54.693779 6139899904 [db/db_impl/db_impl.cc:1044]
|
||||
** DB Stats **
|
||||
Uptime(secs): 0.0 total, 0.0 interval
|
||||
Cumulative writes: 0 writes, 0 keys, 0 commit groups, 0.0 writes per commit group, ingest: 0.00 GB, 0.00 MB/s
|
||||
Cumulative WAL: 0 writes, 0 syncs, 0.00 writes per sync, written: 0.00 GB, 0.00 MB/s
|
||||
Cumulative stall: 00:00:0.000 H:M:S, 0.0 percent
|
||||
Interval writes: 0 writes, 0 keys, 0 commit groups, 0.0 writes per commit group, ingest: 0.00 MB, 0.00 MB/s
|
||||
Interval WAL: 0 writes, 0 syncs, 0.00 writes per sync, written: 0.00 GB, 0.00 MB/s
|
||||
Interval stall: 00:00:0.000 H:M:S, 0.0 percent
|
||||
|
||||
** Compaction Stats [default] **
|
||||
Level Files Size Score Read(GB) Rn(GB) Rnp1(GB) Write(GB) Wnew(GB) Moved(GB) W-Amp Rd(MB/s) Wr(MB/s) Comp(sec) CompMergeCPU(sec) Comp(cnt) Avg(sec) KeyIn KeyDrop Rblob(GB) Wblob(GB)
|
||||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
Sum 0/0 0.00 KB 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00 0.00 0 0.000 0 0 0.0 0.0
|
||||
Int 0/0 0.00 KB 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00 0.00 0 0.000 0 0 0.0 0.0
|
||||
|
||||
** Compaction Stats [default] **
|
||||
Priority Files Size Score Read(GB) Rn(GB) Rnp1(GB) Write(GB) Wnew(GB) Moved(GB) W-Amp Rd(MB/s) Wr(MB/s) Comp(sec) CompMergeCPU(sec) Comp(cnt) Avg(sec) KeyIn KeyDrop Rblob(GB) Wblob(GB)
|
||||
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Blob file count: 0, total size: 0.0 GB, garbage size: 0.0 GB, space amp: 0.0
|
||||
|
||||
Uptime(secs): 0.0 total, 0.0 interval
|
||||
Flush(GB): cumulative 0.000, interval 0.000
|
||||
AddFile(GB): cumulative 0.000, interval 0.000
|
||||
AddFile(Total Files): cumulative 0, interval 0
|
||||
AddFile(L0 Files): cumulative 0, interval 0
|
||||
AddFile(Keys): cumulative 0, interval 0
|
||||
Cumulative compaction: 0.00 GB write, 0.00 MB/s write, 0.00 GB read, 0.00 MB/s read, 0.0 seconds
|
||||
Interval compaction: 0.00 GB write, 0.00 MB/s write, 0.00 GB read, 0.00 MB/s read, 0.0 seconds
|
||||
Stalls(count): 0 level0_slowdown, 0 level0_slowdown_with_compaction, 0 level0_numfiles, 0 level0_numfiles_with_compaction, 0 stop for pending_compaction_bytes, 0 slowdown for pending_compaction_bytes, 0 memtable_compaction, 0 memtable_slowdown, interval 0 total count
|
||||
Block cache LRUCache@0x13590a3c8#55013 capacity: 8.00 MB collections: 1 last_copies: 0 last_secs: 5.4e-05 secs_since: 0
|
||||
Block cache entry stats(count,size,portion): Misc(1,0.00 KB,0%)
|
||||
|
||||
** Compaction Stats [kitchen_session] **
|
||||
Level Files Size Score Read(GB) Rn(GB) Rnp1(GB) Write(GB) Wnew(GB) Moved(GB) W-Amp Rd(MB/s) Wr(MB/s) Comp(sec) CompMergeCPU(sec) Comp(cnt) Avg(sec) KeyIn KeyDrop Rblob(GB) Wblob(GB)
|
||||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
Sum 0/0 0.00 KB 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00 0.00 0 0.000 0 0 0.0 0.0
|
||||
Int 0/0 0.00 KB 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00 0.00 0 0.000 0 0 0.0 0.0
|
||||
|
||||
** Compaction Stats [kitchen_session] **
|
||||
Priority Files Size Score Read(GB) Rn(GB) Rnp1(GB) Write(GB) Wnew(GB) Moved(GB) W-Amp Rd(MB/s) Wr(MB/s) Comp(sec) CompMergeCPU(sec) Comp(cnt) Avg(sec) KeyIn KeyDrop Rblob(GB) Wblob(GB)
|
||||
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Blob file count: 0, total size: 0.0 GB, garbage size: 0.0 GB, space amp: 0.0
|
||||
|
||||
Uptime(secs): 0.0 total, 0.0 interval
|
||||
Flush(GB): cumulative 0.000, interval 0.000
|
||||
AddFile(GB): cumulative 0.000, interval 0.000
|
||||
AddFile(Total Files): cumulative 0, interval 0
|
||||
AddFile(L0 Files): cumulative 0, interval 0
|
||||
AddFile(Keys): cumulative 0, interval 0
|
||||
Cumulative compaction: 0.00 GB write, 0.00 MB/s write, 0.00 GB read, 0.00 MB/s read, 0.0 seconds
|
||||
Interval compaction: 0.00 GB write, 0.00 MB/s write, 0.00 GB read, 0.00 MB/s read, 0.0 seconds
|
||||
Stalls(count): 0 level0_slowdown, 0 level0_slowdown_with_compaction, 0 level0_numfiles, 0 level0_numfiles_with_compaction, 0 stop for pending_compaction_bytes, 0 slowdown for pending_compaction_bytes, 0 memtable_compaction, 0 memtable_slowdown, interval 0 total count
|
||||
Block cache LRUCache@0x135908578#55013 capacity: 8.00 MB collections: 1 last_copies: 0 last_secs: 3.7e-05 secs_since: 0
|
||||
Block cache entry stats(count,size,portion): Misc(1,0.00 KB,0%)
|
||||
|
||||
** File Read Latency Histogram By Level [default] **
|
||||
|
||||
** File Read Latency Histogram By Level [kitchen_session] **
|
BIN
kitchen/.session_store/MANIFEST-000011
Normal file
BIN
kitchen/.session_store/MANIFEST-000011
Normal file
Binary file not shown.
289
kitchen/.session_store/OPTIONS-000009
Normal file
289
kitchen/.session_store/OPTIONS-000009
Normal file
@ -0,0 +1,289 @@
|
||||
# This is a RocksDB option file.
|
||||
#
|
||||
# For detailed file format spec, please refer to the example file
|
||||
# in examples/rocksdb_option_file_example.ini
|
||||
#
|
||||
|
||||
[Version]
|
||||
rocksdb_version=7.4.4
|
||||
options_file_version=1.1
|
||||
|
||||
[DBOptions]
|
||||
max_background_flushes=-1
|
||||
compaction_readahead_size=0
|
||||
strict_bytes_per_sync=false
|
||||
wal_bytes_per_sync=0
|
||||
max_open_files=-1
|
||||
stats_history_buffer_size=1048576
|
||||
max_total_wal_size=0
|
||||
stats_persist_period_sec=600
|
||||
stats_dump_period_sec=600
|
||||
avoid_flush_during_shutdown=false
|
||||
max_subcompactions=1
|
||||
bytes_per_sync=0
|
||||
delayed_write_rate=16777216
|
||||
max_background_compactions=-1
|
||||
max_background_jobs=2
|
||||
delete_obsolete_files_period_micros=21600000000
|
||||
writable_file_max_buffer_size=1048576
|
||||
file_checksum_gen_factory=nullptr
|
||||
allow_data_in_errors=false
|
||||
max_bgerror_resume_count=2147483647
|
||||
best_efforts_recovery=false
|
||||
write_dbid_to_manifest=false
|
||||
atomic_flush=false
|
||||
wal_compression=kNoCompression
|
||||
manual_wal_flush=false
|
||||
two_write_queues=false
|
||||
avoid_flush_during_recovery=false
|
||||
dump_malloc_stats=false
|
||||
info_log_level=INFO_LEVEL
|
||||
write_thread_slow_yield_usec=3
|
||||
allow_ingest_behind=false
|
||||
fail_if_options_file_error=false
|
||||
persist_stats_to_disk=false
|
||||
WAL_ttl_seconds=0
|
||||
bgerror_resume_retry_interval=1000000
|
||||
allow_concurrent_memtable_write=true
|
||||
paranoid_checks=true
|
||||
WAL_size_limit_MB=0
|
||||
lowest_used_cache_tier=kNonVolatileBlockTier
|
||||
keep_log_file_num=1000
|
||||
table_cache_numshardbits=6
|
||||
max_file_opening_threads=16
|
||||
use_fsync=false
|
||||
unordered_write=false
|
||||
random_access_max_buffer_size=1048576
|
||||
log_readahead_size=0
|
||||
enable_pipelined_write=false
|
||||
wal_recovery_mode=kPointInTimeRecovery
|
||||
db_write_buffer_size=0
|
||||
allow_2pc=false
|
||||
skip_checking_sst_file_sizes_on_db_open=false
|
||||
skip_stats_update_on_db_open=false
|
||||
recycle_log_file_num=0
|
||||
db_host_id=__hostname__
|
||||
access_hint_on_compaction_start=NORMAL
|
||||
verify_sst_unique_id_in_manifest=false
|
||||
track_and_verify_wals_in_manifest=false
|
||||
error_if_exists=false
|
||||
manifest_preallocation_size=4194304
|
||||
is_fd_close_on_exec=true
|
||||
enable_write_thread_adaptive_yield=true
|
||||
experimental_mempurge_threshold=0.000000
|
||||
enable_thread_tracking=false
|
||||
avoid_unnecessary_blocking_io=false
|
||||
allow_fallocate=true
|
||||
max_log_file_size=0
|
||||
advise_random_on_open=true
|
||||
create_missing_column_families=true
|
||||
max_write_batch_group_size_bytes=1048576
|
||||
use_adaptive_mutex=false
|
||||
wal_filter=nullptr
|
||||
create_if_missing=true
|
||||
enforce_single_del_contracts=true
|
||||
allow_mmap_writes=false
|
||||
log_file_time_to_roll=0
|
||||
use_direct_io_for_flush_and_compaction=false
|
||||
flush_verify_memtable_count=true
|
||||
max_manifest_file_size=1073741824
|
||||
write_thread_max_yield_usec=100
|
||||
use_direct_reads=false
|
||||
allow_mmap_reads=false
|
||||
|
||||
|
||||
[CFOptions "default"]
|
||||
bottommost_compression=kDisableCompressionOption
|
||||
sample_for_compression=0
|
||||
blob_garbage_collection_age_cutoff=0.250000
|
||||
blob_compaction_readahead_size=0
|
||||
level0_stop_writes_trigger=36
|
||||
min_blob_size=0
|
||||
compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
|
||||
target_file_size_base=67108864
|
||||
max_bytes_for_level_base=268435456
|
||||
memtable_whole_key_filtering=false
|
||||
blob_file_starting_level=0
|
||||
soft_pending_compaction_bytes_limit=68719476736
|
||||
blob_compression_type=kNoCompression
|
||||
max_write_buffer_number=2
|
||||
ttl=2592000
|
||||
compaction_options_fifo={allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
|
||||
check_flush_compaction_key_order=true
|
||||
max_successive_merges=0
|
||||
inplace_update_num_locks=10000
|
||||
enable_blob_garbage_collection=false
|
||||
arena_block_size=1048576
|
||||
bottommost_temperature=kUnknown
|
||||
bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;parallel_threads=1;zstd_max_train_bytes=0;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
|
||||
target_file_size_multiplier=1
|
||||
max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
|
||||
blob_garbage_collection_force_threshold=1.000000
|
||||
enable_blob_files=false
|
||||
level0_slowdown_writes_trigger=20
|
||||
compression=kSnappyCompression
|
||||
level0_file_num_compaction_trigger=4
|
||||
blob_file_size=268435456
|
||||
prefix_extractor=nullptr
|
||||
max_bytes_for_level_multiplier=10.000000
|
||||
write_buffer_size=67108864
|
||||
disable_auto_compactions=false
|
||||
max_compaction_bytes=1677721600
|
||||
memtable_huge_page_size=0
|
||||
compression_opts={use_zstd_dict_trainer=true;enabled=false;parallel_threads=1;zstd_max_train_bytes=0;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
|
||||
hard_pending_compaction_bytes_limit=274877906944
|
||||
periodic_compaction_seconds=0
|
||||
paranoid_file_checks=false
|
||||
memtable_prefix_bloom_size_ratio=0.000000
|
||||
max_sequential_skip_in_iterations=8
|
||||
report_bg_io_stats=false
|
||||
sst_partitioner_factory=nullptr
|
||||
compaction_pri=kMinOverlappingRatio
|
||||
compaction_style=kCompactionStyleLevel
|
||||
memtable_factory=SkipListFactory
|
||||
comparator=leveldb.BytewiseComparator
|
||||
bloom_locality=0
|
||||
compaction_filter_factory=nullptr
|
||||
min_write_buffer_number_to_merge=1
|
||||
max_write_buffer_number_to_maintain=0
|
||||
compaction_filter=nullptr
|
||||
merge_operator=nullptr
|
||||
num_levels=7
|
||||
force_consistency_checks=true
|
||||
optimize_filters_for_hits=false
|
||||
table_factory=BlockBasedTable
|
||||
max_write_buffer_size_to_maintain=0
|
||||
memtable_insert_with_hint_prefix_extractor=nullptr
|
||||
level_compaction_dynamic_level_bytes=false
|
||||
inplace_update_support=false
|
||||
|
||||
[TableOptions/BlockBasedTable "default"]
|
||||
metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
|
||||
read_amp_bytes_per_bit=0
|
||||
verify_compression=false
|
||||
format_version=5
|
||||
optimize_filters_for_memory=false
|
||||
partition_filters=false
|
||||
detect_filter_construct_corruption=false
|
||||
initial_auto_readahead_size=8192
|
||||
max_auto_readahead_size=262144
|
||||
enable_index_compression=true
|
||||
checksum=kCRC32c
|
||||
index_block_restart_interval=1
|
||||
pin_top_level_index_and_filter=true
|
||||
block_align=false
|
||||
block_size=4096
|
||||
index_type=kBinarySearch
|
||||
filter_policy=nullptr
|
||||
metadata_block_size=4096
|
||||
no_block_cache=false
|
||||
index_shortening=kShortenSeparators
|
||||
whole_key_filtering=true
|
||||
block_size_deviation=10
|
||||
data_block_index_type=kDataBlockBinarySearch
|
||||
data_block_hash_table_util_ratio=0.750000
|
||||
cache_index_and_filter_blocks=false
|
||||
prepopulate_block_cache=kDisable
|
||||
block_restart_interval=16
|
||||
pin_l0_filter_and_index_blocks_in_cache=false
|
||||
cache_index_and_filter_blocks_with_high_priority=true
|
||||
flush_block_policy_factory=FlushBlockBySizePolicyFactory
|
||||
|
||||
|
||||
[CFOptions "kitchen_session"]
|
||||
bottommost_compression=kDisableCompressionOption
|
||||
sample_for_compression=0
|
||||
blob_garbage_collection_age_cutoff=0.250000
|
||||
blob_compaction_readahead_size=0
|
||||
level0_stop_writes_trigger=36
|
||||
min_blob_size=0
|
||||
compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
|
||||
target_file_size_base=67108864
|
||||
max_bytes_for_level_base=268435456
|
||||
memtable_whole_key_filtering=false
|
||||
blob_file_starting_level=0
|
||||
soft_pending_compaction_bytes_limit=68719476736
|
||||
blob_compression_type=kNoCompression
|
||||
max_write_buffer_number=2
|
||||
ttl=2592000
|
||||
compaction_options_fifo={allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
|
||||
check_flush_compaction_key_order=true
|
||||
max_successive_merges=0
|
||||
inplace_update_num_locks=10000
|
||||
enable_blob_garbage_collection=false
|
||||
arena_block_size=1048576
|
||||
bottommost_temperature=kUnknown
|
||||
bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;parallel_threads=1;zstd_max_train_bytes=0;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
|
||||
target_file_size_multiplier=1
|
||||
max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
|
||||
blob_garbage_collection_force_threshold=1.000000
|
||||
enable_blob_files=false
|
||||
level0_slowdown_writes_trigger=20
|
||||
compression=kSnappyCompression
|
||||
level0_file_num_compaction_trigger=4
|
||||
blob_file_size=268435456
|
||||
prefix_extractor=nullptr
|
||||
max_bytes_for_level_multiplier=10.000000
|
||||
write_buffer_size=67108864
|
||||
disable_auto_compactions=false
|
||||
max_compaction_bytes=1677721600
|
||||
memtable_huge_page_size=0
|
||||
compression_opts={use_zstd_dict_trainer=true;enabled=false;parallel_threads=1;zstd_max_train_bytes=0;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
|
||||
hard_pending_compaction_bytes_limit=274877906944
|
||||
periodic_compaction_seconds=0
|
||||
paranoid_file_checks=false
|
||||
memtable_prefix_bloom_size_ratio=0.000000
|
||||
max_sequential_skip_in_iterations=8
|
||||
report_bg_io_stats=false
|
||||
sst_partitioner_factory=nullptr
|
||||
compaction_pri=kMinOverlappingRatio
|
||||
compaction_style=kCompactionStyleLevel
|
||||
memtable_factory=SkipListFactory
|
||||
comparator=leveldb.BytewiseComparator
|
||||
bloom_locality=0
|
||||
compaction_filter_factory=nullptr
|
||||
min_write_buffer_number_to_merge=1
|
||||
max_write_buffer_number_to_maintain=0
|
||||
compaction_filter=nullptr
|
||||
merge_operator=nullptr
|
||||
num_levels=7
|
||||
force_consistency_checks=true
|
||||
optimize_filters_for_hits=false
|
||||
table_factory=BlockBasedTable
|
||||
max_write_buffer_size_to_maintain=0
|
||||
memtable_insert_with_hint_prefix_extractor=nullptr
|
||||
level_compaction_dynamic_level_bytes=false
|
||||
inplace_update_support=false
|
||||
|
||||
[TableOptions/BlockBasedTable "kitchen_session"]
|
||||
metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
|
||||
read_amp_bytes_per_bit=0
|
||||
verify_compression=false
|
||||
format_version=5
|
||||
optimize_filters_for_memory=false
|
||||
partition_filters=false
|
||||
detect_filter_construct_corruption=false
|
||||
initial_auto_readahead_size=8192
|
||||
max_auto_readahead_size=262144
|
||||
enable_index_compression=true
|
||||
checksum=kCRC32c
|
||||
index_block_restart_interval=1
|
||||
pin_top_level_index_and_filter=true
|
||||
block_align=false
|
||||
block_size=4096
|
||||
index_type=kBinarySearch
|
||||
filter_policy=nullptr
|
||||
metadata_block_size=4096
|
||||
no_block_cache=false
|
||||
index_shortening=kShortenSeparators
|
||||
whole_key_filtering=true
|
||||
block_size_deviation=10
|
||||
data_block_index_type=kDataBlockBinarySearch
|
||||
data_block_hash_table_util_ratio=0.750000
|
||||
cache_index_and_filter_blocks=false
|
||||
prepopulate_block_cache=kDisable
|
||||
block_restart_interval=16
|
||||
pin_l0_filter_and_index_blocks_in_cache=false
|
||||
cache_index_and_filter_blocks_with_high_priority=true
|
||||
flush_block_policy_factory=FlushBlockBySizePolicyFactory
|
||||
|
289
kitchen/.session_store/OPTIONS-000013
Normal file
289
kitchen/.session_store/OPTIONS-000013
Normal file
@ -0,0 +1,289 @@
|
||||
# This is a RocksDB option file.
|
||||
#
|
||||
# For detailed file format spec, please refer to the example file
|
||||
# in examples/rocksdb_option_file_example.ini
|
||||
#
|
||||
|
||||
[Version]
|
||||
rocksdb_version=7.4.4
|
||||
options_file_version=1.1
|
||||
|
||||
[DBOptions]
|
||||
max_background_flushes=-1
|
||||
compaction_readahead_size=0
|
||||
strict_bytes_per_sync=false
|
||||
wal_bytes_per_sync=0
|
||||
max_open_files=-1
|
||||
stats_history_buffer_size=1048576
|
||||
max_total_wal_size=0
|
||||
stats_persist_period_sec=600
|
||||
stats_dump_period_sec=600
|
||||
avoid_flush_during_shutdown=false
|
||||
max_subcompactions=1
|
||||
bytes_per_sync=0
|
||||
delayed_write_rate=16777216
|
||||
max_background_compactions=-1
|
||||
max_background_jobs=2
|
||||
delete_obsolete_files_period_micros=21600000000
|
||||
writable_file_max_buffer_size=1048576
|
||||
file_checksum_gen_factory=nullptr
|
||||
allow_data_in_errors=false
|
||||
max_bgerror_resume_count=2147483647
|
||||
best_efforts_recovery=false
|
||||
write_dbid_to_manifest=false
|
||||
atomic_flush=false
|
||||
wal_compression=kNoCompression
|
||||
manual_wal_flush=false
|
||||
two_write_queues=false
|
||||
avoid_flush_during_recovery=false
|
||||
dump_malloc_stats=false
|
||||
info_log_level=INFO_LEVEL
|
||||
write_thread_slow_yield_usec=3
|
||||
allow_ingest_behind=false
|
||||
fail_if_options_file_error=false
|
||||
persist_stats_to_disk=false
|
||||
WAL_ttl_seconds=0
|
||||
bgerror_resume_retry_interval=1000000
|
||||
allow_concurrent_memtable_write=true
|
||||
paranoid_checks=true
|
||||
WAL_size_limit_MB=0
|
||||
lowest_used_cache_tier=kNonVolatileBlockTier
|
||||
keep_log_file_num=1000
|
||||
table_cache_numshardbits=6
|
||||
max_file_opening_threads=16
|
||||
use_fsync=false
|
||||
unordered_write=false
|
||||
random_access_max_buffer_size=1048576
|
||||
log_readahead_size=0
|
||||
enable_pipelined_write=false
|
||||
wal_recovery_mode=kPointInTimeRecovery
|
||||
db_write_buffer_size=0
|
||||
allow_2pc=false
|
||||
skip_checking_sst_file_sizes_on_db_open=false
|
||||
skip_stats_update_on_db_open=false
|
||||
recycle_log_file_num=0
|
||||
db_host_id=__hostname__
|
||||
access_hint_on_compaction_start=NORMAL
|
||||
verify_sst_unique_id_in_manifest=false
|
||||
track_and_verify_wals_in_manifest=false
|
||||
error_if_exists=false
|
||||
manifest_preallocation_size=4194304
|
||||
is_fd_close_on_exec=true
|
||||
enable_write_thread_adaptive_yield=true
|
||||
experimental_mempurge_threshold=0.000000
|
||||
enable_thread_tracking=false
|
||||
avoid_unnecessary_blocking_io=false
|
||||
allow_fallocate=true
|
||||
max_log_file_size=0
|
||||
advise_random_on_open=true
|
||||
create_missing_column_families=true
|
||||
max_write_batch_group_size_bytes=1048576
|
||||
use_adaptive_mutex=false
|
||||
wal_filter=nullptr
|
||||
create_if_missing=true
|
||||
enforce_single_del_contracts=true
|
||||
allow_mmap_writes=false
|
||||
log_file_time_to_roll=0
|
||||
use_direct_io_for_flush_and_compaction=false
|
||||
flush_verify_memtable_count=true
|
||||
max_manifest_file_size=1073741824
|
||||
write_thread_max_yield_usec=100
|
||||
use_direct_reads=false
|
||||
allow_mmap_reads=false
|
||||
|
||||
|
||||
[CFOptions "default"]
|
||||
bottommost_compression=kDisableCompressionOption
|
||||
sample_for_compression=0
|
||||
blob_garbage_collection_age_cutoff=0.250000
|
||||
blob_compaction_readahead_size=0
|
||||
level0_stop_writes_trigger=36
|
||||
min_blob_size=0
|
||||
compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
|
||||
target_file_size_base=67108864
|
||||
max_bytes_for_level_base=268435456
|
||||
memtable_whole_key_filtering=false
|
||||
blob_file_starting_level=0
|
||||
soft_pending_compaction_bytes_limit=68719476736
|
||||
blob_compression_type=kNoCompression
|
||||
max_write_buffer_number=2
|
||||
ttl=2592000
|
||||
compaction_options_fifo={allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
|
||||
check_flush_compaction_key_order=true
|
||||
max_successive_merges=0
|
||||
inplace_update_num_locks=10000
|
||||
enable_blob_garbage_collection=false
|
||||
arena_block_size=1048576
|
||||
bottommost_temperature=kUnknown
|
||||
bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;parallel_threads=1;zstd_max_train_bytes=0;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
|
||||
target_file_size_multiplier=1
|
||||
max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
|
||||
blob_garbage_collection_force_threshold=1.000000
|
||||
enable_blob_files=false
|
||||
level0_slowdown_writes_trigger=20
|
||||
compression=kSnappyCompression
|
||||
level0_file_num_compaction_trigger=4
|
||||
blob_file_size=268435456
|
||||
prefix_extractor=nullptr
|
||||
max_bytes_for_level_multiplier=10.000000
|
||||
write_buffer_size=67108864
|
||||
disable_auto_compactions=false
|
||||
max_compaction_bytes=1677721600
|
||||
memtable_huge_page_size=0
|
||||
compression_opts={use_zstd_dict_trainer=true;enabled=false;parallel_threads=1;zstd_max_train_bytes=0;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
|
||||
hard_pending_compaction_bytes_limit=274877906944
|
||||
periodic_compaction_seconds=0
|
||||
paranoid_file_checks=false
|
||||
memtable_prefix_bloom_size_ratio=0.000000
|
||||
max_sequential_skip_in_iterations=8
|
||||
report_bg_io_stats=false
|
||||
sst_partitioner_factory=nullptr
|
||||
compaction_pri=kMinOverlappingRatio
|
||||
compaction_style=kCompactionStyleLevel
|
||||
memtable_factory=SkipListFactory
|
||||
comparator=leveldb.BytewiseComparator
|
||||
bloom_locality=0
|
||||
compaction_filter_factory=nullptr
|
||||
min_write_buffer_number_to_merge=1
|
||||
max_write_buffer_number_to_maintain=0
|
||||
compaction_filter=nullptr
|
||||
merge_operator=nullptr
|
||||
num_levels=7
|
||||
force_consistency_checks=true
|
||||
optimize_filters_for_hits=false
|
||||
table_factory=BlockBasedTable
|
||||
max_write_buffer_size_to_maintain=0
|
||||
memtable_insert_with_hint_prefix_extractor=nullptr
|
||||
level_compaction_dynamic_level_bytes=false
|
||||
inplace_update_support=false
|
||||
|
||||
[TableOptions/BlockBasedTable "default"]
|
||||
metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
|
||||
read_amp_bytes_per_bit=0
|
||||
verify_compression=false
|
||||
format_version=5
|
||||
optimize_filters_for_memory=false
|
||||
partition_filters=false
|
||||
detect_filter_construct_corruption=false
|
||||
initial_auto_readahead_size=8192
|
||||
max_auto_readahead_size=262144
|
||||
enable_index_compression=true
|
||||
checksum=kCRC32c
|
||||
index_block_restart_interval=1
|
||||
pin_top_level_index_and_filter=true
|
||||
block_align=false
|
||||
block_size=4096
|
||||
index_type=kBinarySearch
|
||||
filter_policy=nullptr
|
||||
metadata_block_size=4096
|
||||
no_block_cache=false
|
||||
index_shortening=kShortenSeparators
|
||||
whole_key_filtering=true
|
||||
block_size_deviation=10
|
||||
data_block_index_type=kDataBlockBinarySearch
|
||||
data_block_hash_table_util_ratio=0.750000
|
||||
cache_index_and_filter_blocks=false
|
||||
prepopulate_block_cache=kDisable
|
||||
block_restart_interval=16
|
||||
pin_l0_filter_and_index_blocks_in_cache=false
|
||||
cache_index_and_filter_blocks_with_high_priority=true
|
||||
flush_block_policy_factory=FlushBlockBySizePolicyFactory
|
||||
|
||||
|
||||
[CFOptions "kitchen_session"]
|
||||
bottommost_compression=kDisableCompressionOption
|
||||
sample_for_compression=0
|
||||
blob_garbage_collection_age_cutoff=0.250000
|
||||
blob_compaction_readahead_size=0
|
||||
level0_stop_writes_trigger=36
|
||||
min_blob_size=0
|
||||
compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
|
||||
target_file_size_base=67108864
|
||||
max_bytes_for_level_base=268435456
|
||||
memtable_whole_key_filtering=false
|
||||
blob_file_starting_level=0
|
||||
soft_pending_compaction_bytes_limit=68719476736
|
||||
blob_compression_type=kNoCompression
|
||||
max_write_buffer_number=2
|
||||
ttl=2592000
|
||||
compaction_options_fifo={allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
|
||||
check_flush_compaction_key_order=true
|
||||
max_successive_merges=0
|
||||
inplace_update_num_locks=10000
|
||||
enable_blob_garbage_collection=false
|
||||
arena_block_size=1048576
|
||||
bottommost_temperature=kUnknown
|
||||
bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;parallel_threads=1;zstd_max_train_bytes=0;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
|
||||
target_file_size_multiplier=1
|
||||
max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
|
||||
blob_garbage_collection_force_threshold=1.000000
|
||||
enable_blob_files=false
|
||||
level0_slowdown_writes_trigger=20
|
||||
compression=kSnappyCompression
|
||||
level0_file_num_compaction_trigger=4
|
||||
blob_file_size=268435456
|
||||
prefix_extractor=nullptr
|
||||
max_bytes_for_level_multiplier=10.000000
|
||||
write_buffer_size=67108864
|
||||
disable_auto_compactions=false
|
||||
max_compaction_bytes=1677721600
|
||||
memtable_huge_page_size=0
|
||||
compression_opts={use_zstd_dict_trainer=true;enabled=false;parallel_threads=1;zstd_max_train_bytes=0;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
|
||||
hard_pending_compaction_bytes_limit=274877906944
|
||||
periodic_compaction_seconds=0
|
||||
paranoid_file_checks=false
|
||||
memtable_prefix_bloom_size_ratio=0.000000
|
||||
max_sequential_skip_in_iterations=8
|
||||
report_bg_io_stats=false
|
||||
sst_partitioner_factory=nullptr
|
||||
compaction_pri=kMinOverlappingRatio
|
||||
compaction_style=kCompactionStyleLevel
|
||||
memtable_factory=SkipListFactory
|
||||
comparator=leveldb.BytewiseComparator
|
||||
bloom_locality=0
|
||||
compaction_filter_factory=nullptr
|
||||
min_write_buffer_number_to_merge=1
|
||||
max_write_buffer_number_to_maintain=0
|
||||
compaction_filter=nullptr
|
||||
merge_operator=nullptr
|
||||
num_levels=7
|
||||
force_consistency_checks=true
|
||||
optimize_filters_for_hits=false
|
||||
table_factory=BlockBasedTable
|
||||
max_write_buffer_size_to_maintain=0
|
||||
memtable_insert_with_hint_prefix_extractor=nullptr
|
||||
level_compaction_dynamic_level_bytes=false
|
||||
inplace_update_support=false
|
||||
|
||||
[TableOptions/BlockBasedTable "kitchen_session"]
|
||||
metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
|
||||
read_amp_bytes_per_bit=0
|
||||
verify_compression=false
|
||||
format_version=5
|
||||
optimize_filters_for_memory=false
|
||||
partition_filters=false
|
||||
detect_filter_construct_corruption=false
|
||||
initial_auto_readahead_size=8192
|
||||
max_auto_readahead_size=262144
|
||||
enable_index_compression=true
|
||||
checksum=kCRC32c
|
||||
index_block_restart_interval=1
|
||||
pin_top_level_index_and_filter=true
|
||||
block_align=false
|
||||
block_size=4096
|
||||
index_type=kBinarySearch
|
||||
filter_policy=nullptr
|
||||
metadata_block_size=4096
|
||||
no_block_cache=false
|
||||
index_shortening=kShortenSeparators
|
||||
whole_key_filtering=true
|
||||
block_size_deviation=10
|
||||
data_block_index_type=kDataBlockBinarySearch
|
||||
data_block_hash_table_util_ratio=0.750000
|
||||
cache_index_and_filter_blocks=false
|
||||
prepopulate_block_cache=kDisable
|
||||
block_restart_interval=16
|
||||
pin_l0_filter_and_index_blocks_in_cache=false
|
||||
cache_index_and_filter_blocks_with_high_priority=true
|
||||
flush_block_policy_factory=FlushBlockBySizePolicyFactory
|
||||
|
@ -12,14 +12,37 @@ tracing-subscriber = "0.3.14"
|
||||
recipes = { path = "../recipes" }
|
||||
recipe-store = {path = "../recipe-store" }
|
||||
csv = "1.1.1"
|
||||
axum = "0.5.13"
|
||||
rust-embed="6.4.0"
|
||||
mime_guess = "2.0.4"
|
||||
async-trait = "0.1.57"
|
||||
tower-http = { version = "0.3.0", features = ["trace"] }
|
||||
async-session = "3.0.0"
|
||||
ciborium = "0.2.0"
|
||||
rocksdb = "0.19.0"
|
||||
tower = "0.4.13"
|
||||
serde = "1.0.144"
|
||||
|
||||
[dependencies.argon2]
|
||||
version = "0.4.1"
|
||||
|
||||
[dependencies.secrecy]
|
||||
version = "0.8.0"
|
||||
features = ["serde"]
|
||||
|
||||
[dependencies.axum-auth]
|
||||
version = "0.3.0"
|
||||
features = ["auth-basic"]
|
||||
|
||||
[dependencies.tower-http]
|
||||
version = "0.3.0"
|
||||
features = ["trace", "auth", "sensitive-headers"]
|
||||
|
||||
[dependencies.uuid]
|
||||
version = "1.0.144"
|
||||
features = ["serde", "v4"]
|
||||
|
||||
[dependencies.axum]
|
||||
version = "0.5.15"
|
||||
features = ["headers", "http2"]
|
||||
|
||||
[dependencies.clap]
|
||||
version = "3.2.16"
|
||||
|
@ -44,6 +44,7 @@ fn create_app<'a>() -> clap::App<'a> {
|
||||
(@subcommand serve =>
|
||||
(about: "Serve the interface via the web")
|
||||
(@arg recipe_dir: -d --dir +takes_value "Directory containing recipe files to use")
|
||||
(@arg session_dir: --sesion_dir + takes_value "Session store directory to use")
|
||||
(@arg listen: --listen +takes_value "address and port to listen on 0.0.0.0:3030")
|
||||
)
|
||||
)
|
||||
@ -105,6 +106,14 @@ fn main() {
|
||||
} else {
|
||||
std::env::current_dir().expect("Unable to get current directory. Bailing out.")
|
||||
};
|
||||
let session_store_path: PathBuf = if let Some(dir) = matches.value_of("session_dir") {
|
||||
PathBuf::from(dir)
|
||||
} else {
|
||||
let mut dir =
|
||||
std::env::current_dir().expect("Unable to get current directory. Bailing out.");
|
||||
dir.push(".session_store");
|
||||
dir
|
||||
};
|
||||
let listen_socket: SocketAddr = if let Some(listen_socket) = matches.value_of("listen") {
|
||||
listen_socket.parse().expect(&format!(
|
||||
"--listen must be of the form <addr>:<port> but got {}",
|
||||
@ -114,6 +123,8 @@ fn main() {
|
||||
"127.0.0.1:3030".parse().unwrap()
|
||||
};
|
||||
info!(listen=%listen_socket, "Launching web interface...");
|
||||
async_std::task::block_on(async { web::ui_main(recipe_dir_path, listen_socket).await });
|
||||
async_std::task::block_on(async {
|
||||
web::ui_main(recipe_dir_path, session_store_path, listen_socket).await
|
||||
});
|
||||
}
|
||||
}
|
||||
|
43
kitchen/src/web/auth.rs
Normal file
43
kitchen/src/web/auth.rs
Normal file
@ -0,0 +1,43 @@
|
||||
// Copyright 2022 Jeremy Wall (Jeremy@marzhilsltudios.com)
|
||||
//
|
||||
// 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.
|
||||
use std::str::FromStr;
|
||||
|
||||
use async_session::SessionStore;
|
||||
use axum::{extract::Extension, http::StatusCode, response::IntoResponse};
|
||||
use axum_auth::AuthBasic;
|
||||
use secrecy::Secret;
|
||||
|
||||
use super::session;
|
||||
|
||||
pub async fn handler(
|
||||
auth: AuthBasic,
|
||||
Extension(session_store): Extension<session::RocksdbInnerStore>,
|
||||
) -> impl IntoResponse {
|
||||
if let Ok(true) = session_store.check_user_creds(session::UserCreds::from(auth)) {
|
||||
// TODO(jwall): set up session for them
|
||||
// and redirect to the UI.
|
||||
todo!()
|
||||
} else {
|
||||
(StatusCode::UNAUTHORIZED, "Invalid user id or password")
|
||||
}
|
||||
}
|
||||
|
||||
impl From<AuthBasic> for session::UserCreds {
|
||||
fn from(AuthBasic((id, pass)): AuthBasic) -> Self {
|
||||
Self {
|
||||
id: session::UserId(id),
|
||||
pass: Secret::from_str(pass.unwrap().as_str()).unwrap(),
|
||||
}
|
||||
}
|
||||
}
|
@ -11,6 +11,7 @@
|
||||
// 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.
|
||||
use std::iter::once;
|
||||
use std::net::SocketAddr;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
@ -20,14 +21,17 @@ use axum::{
|
||||
extract::{Extension, Path},
|
||||
http::{header, StatusCode},
|
||||
response::{IntoResponse, Redirect, Response},
|
||||
routing::{get, Router},
|
||||
routing::{get, post, Router},
|
||||
};
|
||||
use mime_guess;
|
||||
use recipe_store::{self, RecipeEntry, RecipeStore};
|
||||
use rust_embed::RustEmbed;
|
||||
use tower::ServiceBuilder;
|
||||
use tower_http::sensitive_headers::SetSensitiveRequestHeadersLayer;
|
||||
use tower_http::trace::TraceLayer;
|
||||
use tracing::{debug, info, instrument};
|
||||
|
||||
mod auth;
|
||||
mod session;
|
||||
|
||||
#[derive(RustEmbed)]
|
||||
@ -71,7 +75,12 @@ async fn ui_static_assets(Path(path): Path<String>) -> impl IntoResponse {
|
||||
}
|
||||
|
||||
#[instrument]
|
||||
async fn api_recipes(Extension(store): Extension<Arc<recipe_store::AsyncFileStore>>) -> Response {
|
||||
async fn api_recipes(
|
||||
Extension(store): Extension<Arc<recipe_store::AsyncFileStore>>,
|
||||
session: session::UserIdFromSession,
|
||||
) -> impl IntoResponse {
|
||||
// TODO(jwall): Select recipes based on the user-id if it exists.
|
||||
// Or serve the default if it does not.
|
||||
let result: Result<axum::Json<Vec<RecipeEntry>>, String> = match store
|
||||
.get_recipes()
|
||||
.await
|
||||
@ -81,13 +90,16 @@ async fn api_recipes(Extension(store): Extension<Arc<recipe_store::AsyncFileStor
|
||||
Ok(None) => Ok(axum::Json::from(Vec::<RecipeEntry>::new())),
|
||||
Err(e) => Err(e),
|
||||
};
|
||||
result.into_response()
|
||||
result
|
||||
}
|
||||
|
||||
#[instrument]
|
||||
async fn api_categories(
|
||||
Extension(store): Extension<Arc<recipe_store::AsyncFileStore>>,
|
||||
) -> Response {
|
||||
session: session::UserIdFromSession,
|
||||
) -> impl IntoResponse {
|
||||
// TODO(jwall): Select recipes based on the user-id if it exists.
|
||||
// Or serve the default if it does not.
|
||||
let recipe_result = store
|
||||
.get_categories()
|
||||
.await
|
||||
@ -97,13 +109,19 @@ async fn api_categories(
|
||||
Ok(None) => Ok(axum::Json::from(String::new())),
|
||||
Err(e) => Err(e),
|
||||
};
|
||||
result.into_response()
|
||||
result
|
||||
}
|
||||
|
||||
#[instrument(fields(recipe_dir=?recipe_dir_path,listen=?listen_socket), skip_all)]
|
||||
pub async fn ui_main(recipe_dir_path: PathBuf, listen_socket: SocketAddr) {
|
||||
pub async fn ui_main(
|
||||
recipe_dir_path: PathBuf,
|
||||
session_store_path: PathBuf,
|
||||
listen_socket: SocketAddr,
|
||||
) {
|
||||
let store = Arc::new(recipe_store::AsyncFileStore::new(recipe_dir_path.clone()));
|
||||
//let dir_path = (&dir_path).clone();
|
||||
let session_store = session::RocksdbInnerStore::new(session_store_path)
|
||||
.expect("Unable to create session_store");
|
||||
let router = Router::new()
|
||||
.route("/", get(|| async { Redirect::temporary("/ui/plan") }))
|
||||
.route("/ui/*path", get(ui_static_assets))
|
||||
@ -111,10 +129,21 @@ pub async fn ui_main(recipe_dir_path: PathBuf, listen_socket: SocketAddr) {
|
||||
.route("/api/v1/recipes", get(api_recipes))
|
||||
// categories api path route
|
||||
.route("/api/v1/categories", get(api_categories))
|
||||
// All the routes above require a UserId.
|
||||
.route("/api/v1/auth", post(auth::handler))
|
||||
// NOTE(jwall): Note that the layers are applied to the preceding routes not
|
||||
// the following routes.
|
||||
.layer(TraceLayer::new_for_http())
|
||||
.layer(Extension(store));
|
||||
.layer(
|
||||
// NOTE(jwall): However service builder will apply the layers from top
|
||||
// to bottom.
|
||||
ServiceBuilder::new()
|
||||
.layer(TraceLayer::new_for_http())
|
||||
.layer(Extension(store))
|
||||
.layer(Extension(session_store))
|
||||
.layer(SetSensitiveRequestHeadersLayer::new(once(
|
||||
axum::http::header::AUTHORIZATION,
|
||||
))),
|
||||
);
|
||||
info!(
|
||||
http = format!("http://{}", listen_socket),
|
||||
"Starting server"
|
||||
|
@ -14,13 +14,42 @@
|
||||
use async_std::sync::Arc;
|
||||
use std::path::Path;
|
||||
|
||||
use argon2::{
|
||||
password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString},
|
||||
Argon2,
|
||||
};
|
||||
use async_session::{async_trait, Session, SessionStore};
|
||||
use axum::{
|
||||
extract::{Extension, FromRequest, RequestParts, TypedHeader},
|
||||
headers::Cookie,
|
||||
http::StatusCode,
|
||||
};
|
||||
use ciborium;
|
||||
use rocksdb::{
|
||||
BoundColumnFamily, ColumnFamilyDescriptor, DBWithThreadMode, MultiThreaded, Options,
|
||||
};
|
||||
use secrecy::{ExposeSecret, Secret};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tracing::{debug, error, instrument};
|
||||
|
||||
const SESSION_CF: &'static str = "kitchen_session";
|
||||
const USER_CF: &'static str = "kitchen_users";
|
||||
|
||||
const AXUM_SESSION_COOKIE_NAME: &'static str = "kitchen-session-cookie";
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct UserId(pub String);
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum UserIdFromSession {
|
||||
FoundUserId(UserId),
|
||||
NoUserId,
|
||||
}
|
||||
|
||||
pub struct UserCreds {
|
||||
pub id: UserId,
|
||||
pub pass: Secret<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct RocksdbInnerStore {
|
||||
@ -29,8 +58,10 @@ pub struct RocksdbInnerStore {
|
||||
|
||||
impl RocksdbInnerStore {
|
||||
pub fn new<P: AsRef<Path>>(name: P) -> Result<Self, rocksdb::Error> {
|
||||
let cf_opts = Options::default();
|
||||
let cf = ColumnFamilyDescriptor::new(SESSION_CF, cf_opts);
|
||||
let session_cf_opts = Options::default();
|
||||
let session_cf = ColumnFamilyDescriptor::new(SESSION_CF, session_cf_opts);
|
||||
let user_cf_opts = Options::default();
|
||||
let user_cf = ColumnFamilyDescriptor::new(USER_CF, user_cf_opts);
|
||||
let mut opts = Options::default();
|
||||
opts.create_missing_column_families(true);
|
||||
opts.create_if_missing(true);
|
||||
@ -38,26 +69,61 @@ impl RocksdbInnerStore {
|
||||
db: Arc::new(DBWithThreadMode::open_cf_descriptors(
|
||||
&opts,
|
||||
name,
|
||||
vec![cf],
|
||||
vec![session_cf, user_cf],
|
||||
)?),
|
||||
})
|
||||
}
|
||||
|
||||
fn get_column_family_handle(&self) -> Option<Arc<BoundColumnFamily>> {
|
||||
fn get_session_column_family_handle(&self) -> Option<Arc<BoundColumnFamily>> {
|
||||
self.db.cf_handle(SESSION_CF)
|
||||
}
|
||||
|
||||
fn get_users_column_family_handle(&self) -> Option<Arc<BoundColumnFamily>> {
|
||||
self.db.cf_handle(USER_CF)
|
||||
}
|
||||
|
||||
fn make_id_key(cookie_value: &str) -> async_session::Result<String> {
|
||||
Ok(Session::id_from_cookie_value(cookie_value)?)
|
||||
}
|
||||
|
||||
pub fn check_user_creds(&self, user_creds: UserCreds) -> async_session::Result<bool> {
|
||||
let cf_handle = self
|
||||
.get_users_column_family_handle()
|
||||
.expect(&format!("column family {} is missing", USER_CF));
|
||||
if let Some(payload) = self.db.get_cf(&cf_handle, user_creds.id.0.as_bytes())? {
|
||||
let payload = String::from_utf8_lossy(payload.as_slice()).to_string();
|
||||
let parsed_hash = PasswordHash::new(&payload).expect("Invalid Password Hash");
|
||||
return Ok(Argon2::default()
|
||||
.verify_password(user_creds.pass.expose_secret().as_bytes(), &parsed_hash)
|
||||
.is_ok());
|
||||
}
|
||||
Ok(false)
|
||||
}
|
||||
|
||||
pub fn store_user_creds(&self, user_creds: UserCreds) -> async_session::Result<()> {
|
||||
let cf_handle = self
|
||||
.get_users_column_family_handle()
|
||||
.expect(&format!("column family {} is missing", USER_CF));
|
||||
let salt = SaltString::generate(&mut OsRng);
|
||||
let password_hash = Argon2::default()
|
||||
.hash_password(user_creds.pass.expose_secret().as_bytes(), &salt)
|
||||
.expect("failed to hash password");
|
||||
self.db.put_cf(
|
||||
&cf_handle,
|
||||
user_creds.id.0.as_bytes(),
|
||||
password_hash.to_string().as_bytes(),
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl SessionStore for RocksdbInnerStore {
|
||||
#[instrument]
|
||||
async fn load_session(&self, cookie_value: String) -> async_session::Result<Option<Session>> {
|
||||
let id = Self::make_id_key(&cookie_value)?;
|
||||
let cf_handle = self
|
||||
.get_column_family_handle()
|
||||
.get_session_column_family_handle()
|
||||
.expect(&format!("column family {} is missing", SESSION_CF));
|
||||
if let Some(payload) = self.db.get_cf(&cf_handle, id.as_bytes())? {
|
||||
let session: Session = ciborium::de::from_reader(payload.as_slice())?;
|
||||
@ -66,11 +132,12 @@ impl SessionStore for RocksdbInnerStore {
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
#[instrument]
|
||||
async fn store_session(&self, session: Session) -> async_session::Result<Option<String>> {
|
||||
let id = session.id();
|
||||
let mut payload: Vec<u8> = Vec::new();
|
||||
let cf_handle = self
|
||||
.get_column_family_handle()
|
||||
.get_session_column_family_handle()
|
||||
.expect(&format!("column family {} is missing", SESSION_CF));
|
||||
ciborium::ser::into_writer(&session, &mut payload)?;
|
||||
self.db
|
||||
@ -78,17 +145,60 @@ impl SessionStore for RocksdbInnerStore {
|
||||
Ok(session.into_cookie_value())
|
||||
}
|
||||
|
||||
#[instrument]
|
||||
async fn destroy_session(&self, session: Session) -> async_session::Result {
|
||||
let id = session.id();
|
||||
let cf_handle = self
|
||||
.get_column_family_handle()
|
||||
.get_session_column_family_handle()
|
||||
.expect(&format!("column family {} is missing", SESSION_CF));
|
||||
self.db.delete_cf(&cf_handle, id.as_bytes())?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[instrument]
|
||||
async fn clear_store(&self) -> async_session::Result {
|
||||
self.db.drop_cf(SESSION_CF)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl<B> FromRequest<B> for UserIdFromSession
|
||||
where
|
||||
B: Send,
|
||||
{
|
||||
type Rejection = (StatusCode, &'static str);
|
||||
|
||||
#[instrument(skip_all)]
|
||||
async fn from_request(req: &mut RequestParts<B>) -> Result<Self, Self::Rejection> {
|
||||
let Extension(session_store) = Extension::<RocksdbInnerStore>::from_request(req)
|
||||
.await
|
||||
.expect("No Session store configured!");
|
||||
let cookies = Option::<TypedHeader<Cookie>>::from_request(req)
|
||||
.await
|
||||
.unwrap();
|
||||
if let Some(session_cookie) = cookies
|
||||
.as_ref()
|
||||
.and_then(|c| c.get(AXUM_SESSION_COOKIE_NAME))
|
||||
{
|
||||
if let Some(session) = session_store
|
||||
.load_session(session_cookie.to_owned())
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
if let Some(user_id) = session.get::<UserId>("user_id") {
|
||||
return Ok(Self::FoundUserId(user_id));
|
||||
} else {
|
||||
error!("No user id found in session");
|
||||
return Ok(Self::NoUserId);
|
||||
}
|
||||
} else {
|
||||
debug!("no session defined in headers.");
|
||||
return Ok(Self::NoUserId);
|
||||
}
|
||||
} else {
|
||||
debug!("no cookies defined in headers.");
|
||||
return Err((StatusCode::UNAUTHORIZED, "Authentication Required"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user