Skip to content

Commit

Permalink
importccl: set descriptor DropTime during failed IMPORT
Browse files Browse the repository at this point in the history
This allows ClearRange to be used instead of the 1.1-era batch deletions.

Release note (bug fix): failed IMPORTs will now begin to clean up
partially imported data immediatily and in a faster manner.
  • Loading branch information
maddyblue committed Jun 25, 2018
1 parent 5a013c1 commit efef99b
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions pkg/ccl/importccl/import_stmt.go
Original file line number Diff line number Diff line change
Expand Up @@ -798,6 +798,13 @@ func (r *importResumer) OnFailOrCancel(ctx context.Context, txn *client.Txn, job
for _, tbl := range details.Tables {
tableDesc := tbl.Desc
tableDesc.State = sqlbase.TableDescriptor_DROP
// If the DropTime if set, a table uses RangeClear for fast data removal. This
// operation starts at DropTime + the GC TTL. If we used now() here, it would
// not clean up data until the TTL from the time of the error. Instead, use 1
// (that is, 1ns past the epoch) to allow this to be cleaned up as soon as
// possible. This is safe since the table data was never visible to users,
// and so we don't need to preserve MVCC semantics.
tableDesc.DropTime = 1
b.CPut(sqlbase.MakeDescMetadataKey(tableDesc.ID), sqlbase.WrapDescriptor(tableDesc), nil)
}
return txn.Run(ctx, b)
Expand Down

0 comments on commit efef99b

Please sign in to comment.