Skip to content

Commit

Permalink
Expose the ability to check backfill status on BackfilaManagementClie…
Browse files Browse the repository at this point in the history
…nt (#396)

Currently `BackfilaManagementClient` does not make it possible to check
the status of a given backfill. This is due to two problems:
- The run ID is not returned
- The API to fetch the status is not exposed

This PR addresses both of those issues
  • Loading branch information
szabado-faire authored Aug 9, 2024
1 parent 4416d6c commit 1641dbf
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package app.cash.backfila.client

import app.cash.backfila.client.internal.BackfilaClient
import app.cash.backfila.client.spi.parametersToBytes
import app.cash.backfila.protos.service.CheckBackfillStatusRequest
import app.cash.backfila.protos.service.CheckBackfillStatusResponse
import app.cash.backfila.protos.service.CreateAndStartBackfillRequest
import app.cash.backfila.protos.service.CreateBackfillRequest
import javax.inject.Inject
Expand All @@ -23,8 +25,8 @@ class RealBackfilaManagementClient @Inject internal constructor(
scan_size: Long?,
pkey_range_start: ByteString?,
pkey_range_end: ByteString?,
) {
client.createAndStartBackfill(
): Long {
return client.createAndStartBackfill(
CreateAndStartBackfillRequest.Builder()
.create_request(
CreateBackfillRequest.Builder()
Expand All @@ -46,6 +48,16 @@ class RealBackfilaManagementClient @Inject internal constructor(
)
.variant(config.variant)
.build(),
)
).backfill_run_id!!
}

override fun checkBackfillStatus(
backfill_run_id: Long,
): CheckBackfillStatusResponse.Status {
return client.checkBackfillStatus(
CheckBackfillStatusRequest.Builder()
.backfill_run_id(backfill_run_id)
.build(),
).status!!
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import app.cash.backfila.client.misk.ClientMiskService
import app.cash.backfila.client.misk.ClientMiskTestingModule
import app.cash.backfila.client.misk.DbMenu
import app.cash.backfila.client.misk.MenuQuery
import app.cash.backfila.protos.service.CheckBackfillStatusResponse
import com.google.inject.Module
import javax.inject.Inject
import misk.hibernate.Id
Expand Down Expand Up @@ -35,7 +36,10 @@ class BackfilaManagementClientTest {
session.save(DbMenu("chicken"))
}

managementClient.createAndStart(ChickenToBeefBackfill::class.java, dry_run = false)
val backfillId = managementClient.createAndStart(ChickenToBeefBackfill::class.java, dry_run = false)
assertThat(backfillId).isNotNull()
val status = managementClient.checkBackfillStatus(backfillId)
assertThat(status).isEqualTo(CheckBackfillStatusResponse.Status.COMPLETE)

val name = transacter.transaction { session ->
session.load(id).name
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package app.cash.backfila.client

import app.cash.backfila.protos.service.CheckBackfillStatusResponse
import okio.ByteString

interface BackfilaManagementClient {
Expand All @@ -14,5 +15,9 @@ interface BackfilaManagementClient {
scan_size: Long? = null,
pkey_range_start: ByteString? = null,
pkey_range_end: ByteString? = null,
)
): Long

fun checkBackfillStatus(
backfill_run_id: Long,
): CheckBackfillStatusResponse.Status
}

0 comments on commit 1641dbf

Please sign in to comment.