at protocol indexer with flexible filtering, xrpc queries, and a cursor-backed event stream, built on fjall
at-protocol atproto indexer rust fjall

[db] increase memtable size for filter and crawler keyspaces

ptr.pet 99d1ffac beaf30a4

verified
+6 -3
+1 -1
src/config.rs
··· 103 s.split(',') 104 .map(|s| Url::parse(s.trim())) 105 .collect::<Result<Vec<_>, _>>() 106 - .map_err(|e| miette::miette!("invalid PLC URL: {}", e)) 107 }) 108 .unwrap_or_else(|| Ok(vec![Url::parse("https://plc.wtf").unwrap()]))?; 109
··· 103 s.split(',') 104 .map(|s| Url::parse(s.trim())) 105 .collect::<Result<Vec<_>, _>>() 106 + .map_err(|e| miette::miette!("invalid PLC URL: {e}")) 107 }) 108 .unwrap_or_else(|| Ok(vec![Url::parse("https://plc.wtf").unwrap()]))?; 109
+5 -2
src/db/mod.rs
··· 183 .data_block_size_policy(BlockSizePolicy::all(kb(1))), 184 )?; 185 186 - // filter handles high-volume point reads (checking explicit DID includes and excludes from firehose) 187 // so it needs the bloom filter 188 let filter = open_ks( 189 "filter", 190 // this can be pretty small since the DIDs wont be compressed that well anyhow 191 - opts().data_block_size_policy(BlockSizePolicy::all(kb(1))), 192 )?; 193 194 let crawler = open_ks( 195 "crawler", 196 opts() 197 .expect_point_read_hits(true) 198 .data_block_size_policy(BlockSizePolicy::all(kb(1))), 199 )?; 200
··· 183 .data_block_size_policy(BlockSizePolicy::all(kb(1))), 184 )?; 185 186 + // filter handles high-volume point reads (checking excludes from firehose) 187 // so it needs the bloom filter 188 let filter = open_ks( 189 "filter", 190 // this can be pretty small since the DIDs wont be compressed that well anyhow 191 + opts() 192 + .max_memtable_size((kb(1024) * 16) as u64) 193 + .data_block_size_policy(BlockSizePolicy::all(kb(1))), 194 )?; 195 196 let crawler = open_ks( 197 "crawler", 198 opts() 199 .expect_point_read_hits(true) 200 + .max_memtable_size((kb(1024) * 16) as u64) 201 .data_block_size_policy(BlockSizePolicy::all(kb(1))), 202 )?; 203