Skip to content

Commit e7721c6

Browse files
committed
Higher and Lower should re-read level if fetching value fails.
1 parent a93be37 commit e7721c6

5 files changed

Lines changed: 12 additions & 12 deletions

File tree

core/src/main/scala/swaydb/core/level/seek/Higher.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ private[core] object Higher {
330330
}
331331

332332
case failure @ IO.Left(_) =>
333-
failure recoverTo Higher.seeker(key, currentSeek, nextSeek)
333+
failure recoverTo Higher.seeker(key, Seek.Current.Read(segmentId), nextSeek)
334334
}
335335

336336
//10 - 20
@@ -362,7 +362,7 @@ private[core] object Higher {
362362
}
363363

364364
case failure @ IO.Left(_) =>
365-
failure recoverTo Higher.seeker(key, currentSeek, nextSeek)
365+
failure recoverTo Higher.seeker(key, Seek.Current.Read(segmentId), nextSeek)
366366
}
367367

368368
//10 - 20
@@ -392,7 +392,7 @@ private[core] object Higher {
392392
}
393393

394394
case failure @ IO.Left(_) =>
395-
failure recoverTo Higher.seeker(key, currentSeek, nextSeek)
395+
failure recoverTo Higher.seeker(key, Seek.Current.Read(segmentId), nextSeek)
396396
}
397397
}
398398
}

core/src/main/scala/swaydb/core/level/seek/Lower.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,11 @@ private[core] object Lower {
153153
}
154154

155155
case failure @ IO.Left(_) =>
156-
failure recoverTo Lower.seeker(key, currentSeek, nextSeek)
156+
failure recoverTo Lower.seeker(key, Seek.Current.Read(segmentId), nextSeek)
157157
}
158158

159159
case failure @ IO.Left(_) =>
160-
failure recoverTo Lower.seeker(key, currentSeek, nextSeek)
160+
failure recoverTo Lower.seeker(key, Seek.Current.Read(segmentId), nextSeek)
161161
}
162162

163163
// 20 (input key - inclusive)
@@ -313,7 +313,7 @@ private[core] object Lower {
313313
}
314314

315315
case failure @ IO.Left(_) =>
316-
failure recoverTo Lower.seeker(key, currentSeek, nextSeek)
316+
failure recoverTo Lower.seeker(key, Seek.Current.Read(segmentId), nextSeek)
317317
}
318318

319319
// 11 -> 20 (input keys)
@@ -332,7 +332,7 @@ private[core] object Lower {
332332
}
333333

334334
case failure @ IO.Left(_) =>
335-
failure recoverTo Lower.seeker(key, currentSeek, nextSeek)
335+
failure recoverTo Lower.seeker(key, Seek.Current.Read(segmentId), nextSeek)
336336
}
337337
}
338338

@@ -368,7 +368,7 @@ private[core] object Lower {
368368
}
369369

370370
case failure @ IO.Left(_) =>
371-
failure recoverTo Lower.seeker(key, currentSeek, nextSeek)
371+
failure recoverTo Lower.seeker(key, Seek.Current.Read(segmentId), nextSeek)
372372
}
373373
}
374374
}

data/src/main/scala/swaydb/IO.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -393,9 +393,9 @@ object IO {
393393
override def recoverWith[F >: L : IO.ExceptionHandler, B >: R](f: PartialFunction[L, IO[F, B]]): IO[F, B] =
394394
IO.Catch(if (f isDefinedAt value) f(value) else this)
395395

396-
def recoverTo[F: IO.ExceptionHandler, B](onRecover: => IO.Defer[F, B]): IO.Defer[F, B] =
396+
def recoverTo[F >: L : IO.ExceptionHandler, B](io: => IO.Defer[F, B]): IO.Defer[F, B] =
397397
if (this.isRecoverable)
398-
onRecover
398+
IO.Defer[F, B](io.toIO.get, this.value)
399399
else
400400
IO.Defer[F, B](throw IO.ExceptionHandler.toException(this.value))
401401

data/src/test/scala/swaydb/data/IOIOLeftSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class IOIOLeftSpec extends WordSpec with Matchers {
114114
}
115115

116116
"toEither" in {
117-
IO.Left(error).toEither shouldBe IO.Left(error)
117+
IO.Left(error).toEither shouldBe scala.util.Left(error)
118118
}
119119

120120
"filter" in {

data/src/test/scala/swaydb/data/IOIORightSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class IOIORightSpec extends WordSpec with Matchers {
151151
}
152152

153153
"toEither" in {
154-
IO.Right(2).toEither shouldBe IO.Right(2)
154+
IO.Right(2).toEither shouldBe scala.util.Right(2)
155155
}
156156

157157
"filter" in {

0 commit comments

Comments
 (0)