diff --git a/libs/utils/src/lsn.rs b/libs/utils/src/lsn.rs index 39fed8670d..acf5ea28d7 100644 --- a/libs/utils/src/lsn.rs +++ b/libs/utils/src/lsn.rs @@ -138,7 +138,7 @@ impl FromStr for Lsn { /// /// If the input string is missing the '/' character, then use `Lsn::from_hex` fn from_str(s: &str) -> Result { - let mut splitter = s.split('/'); + let mut splitter = s.trim().split('/'); if let (Some(left), Some(right), None) = (splitter.next(), splitter.next(), splitter.next()) { let left_num = u32::from_str_radix(left, 16).map_err(|_| LsnParseError)?; @@ -270,6 +270,11 @@ mod tests { ); assert_eq!(Lsn::from_hex("0"), Ok(Lsn(0))); assert_eq!(Lsn::from_hex("F12345678AAAA5555"), Err(LsnParseError)); + + let expected_lsn = Lsn(0x3C490F8); + assert_eq!(" 0/3C490F8".parse(), Ok(expected_lsn)); + assert_eq!("0/3C490F8 ".parse(), Ok(expected_lsn)); + assert_eq!(" 0/3C490F8 ".parse(), Ok(expected_lsn)); } #[test]