Fast and robust atproto CAR file processing in rust
14
fork

Configure Feed

Select the types of activity you want to include in your feed.

we walk again

phil 4cb25a90 d062193e

+13 -18
+5 -1
src/drive.rs
··· 240 240 MaybeProcessedBlock::Processed(_) => Err(WalkError::BadCommitFingerprint)?, 241 241 MaybeProcessedBlock::Raw(bytes) => serde_ipld_dagcbor::from_slice(bytes)?, 242 242 }; 243 - let walker = Walker::new(root_node); 243 + let mut walker = Walker::new(root_node); 244 + 245 + eprintln!("setpping to edge??"); 246 + let edge = walker.step_to_edge(&mem_blocks)?; 247 + eprintln!("got edge: {edge:?}"); 244 248 245 249 Ok(Driver::Memory( 246 250 commit,
+8 -17
src/walk.rs
··· 164 164 let mut rkey_prev = None; 165 165 loop { 166 166 match ant.step(blocks, noop) { 167 - Err(WalkError::MissingBlock(thing)) => match *thing { 168 - NodeThing { 169 - kind: ThingKind::Record(rkey), 170 - .. 171 - } => { 172 - if let Some(prev) = rkey_prev 173 - && rkey <= prev 174 - { 175 - return Err(WalkError::MstError(MstError::RkeyOutOfOrder { 176 - rkey, 177 - prev, 178 - })); 179 - } 180 - *self = ant; 181 - ant = self.clone(); 167 + Err(WalkError::MissingBlock(thing)) => { 168 + if let NodeThing { kind: ThingKind::Record(rkey), .. } = *thing { 169 + eprintln!("got one: {rkey}"); 182 170 rkey_prev = Some(rkey); 171 + } else { 172 + eprintln!("got a missing child"); 183 173 } 184 - _ => return Err(WalkError::MissingBlock(thing)), 185 - }, 174 + *self = ant; 175 + ant = self.clone(); 176 + } 186 177 Err(anyother) => return Err(anyother), 187 178 Ok(_) => return Ok(rkey_prev), // oop real record, mutant went too far 188 179 }