## Description
In the current setup, db checkpoint handler has only one select loop
which does both upload and garbage collection. This becomes a problem
when there are multiple pending db checkpoints too upload (due to past
failures). What happens is garbage collection doesn't get triggered
until all existing db checkpoints are uploaded to S3. This is a problem
when there is a disk space crunch as we would like to gc a directory as
soon as it is done uploading. This fix breaks the two functions i.e
upload and gc into separate loops such that they can work independently.
## Test Plan
Existing tests