Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
T
titan
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fangzongwu
titan
Commits
0e4bdf62
Unverified
Commit
0e4bdf62
authored
May 20, 2021
by
ti-srebot
Committed by
GitHub
May 20, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix missing obsolete sequence for deletion in deleteblobfiles (#212) (#213)
parent
919f0a79
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
23 additions
and
8 deletions
+23
-8
blob_file_set.cc
src/blob_file_set.cc
+1
-1
titan_db_test.cc
src/titan_db_test.cc
+16
-0
version_edit.cc
src/version_edit.cc
+1
-1
version_edit.h
src/version_edit.h
+1
-2
version_test.cc
src/version_test.cc
+4
-4
No files found.
src/blob_file_set.cc
View file @
0e4bdf62
...
...
@@ -294,7 +294,7 @@ Status BlobFileSet::DeleteBlobFilesInRanges(uint32_t cf_id,
Status
s
=
it
->
second
->
GetBlobFilesInRanges
(
ranges
,
n
,
include_end
,
&
files
);
if
(
!
s
.
ok
())
return
s
;
for
(
auto
file_number
:
files
)
{
edit
.
DeleteBlobFile
(
file_number
);
edit
.
DeleteBlobFile
(
file_number
,
obsolete_sequence
);
}
s
=
LogAndApply
(
edit
);
return
s
;
...
...
src/titan_db_test.cc
View file @
0e4bdf62
...
...
@@ -703,6 +703,10 @@ TEST_F(TitanDBTest, DeleteFilesInRange) {
ASSERT_TRUE
(
db_
->
GetProperty
(
"rocksdb.num-files-at-level6"
,
&
value
));
ASSERT_EQ
(
value
,
"3"
);
std
::
unique_ptr
<
Iterator
>
iter
(
db_
->
NewIterator
(
ReadOptions
()));
iter
->
SeekToFirst
();
ASSERT_TRUE
(
iter
->
Valid
());
std
::
string
key40
=
GenKey
(
40
);
std
::
string
key80
=
GenKey
(
80
);
Slice
start
=
Slice
(
key40
);
...
...
@@ -723,6 +727,18 @@ TEST_F(TitanDBTest, DeleteFilesInRange) {
// These two files are marked obsolete directly by `DeleteBlobFilesInRanges`
ASSERT_EQ
(
blob
->
NumObsoleteBlobFiles
(),
2
);
// The snapshot held by the iterator prevents the blob files from being
// purged.
ASSERT_OK
(
db_impl_
->
TEST_PurgeObsoleteFiles
());
while
(
iter
->
Valid
())
{
iter
->
Next
();
ASSERT_OK
(
iter
->
status
());
}
ASSERT_EQ
(
blob
->
NumBlobFiles
(),
6
);
ASSERT_EQ
(
blob
->
NumObsoleteBlobFiles
(),
2
);
// Once the snapshot is released, the blob files should be purged.
iter
.
reset
(
nullptr
);
ASSERT_OK
(
db_impl_
->
TEST_PurgeObsoleteFiles
());
ASSERT_EQ
(
blob
->
NumBlobFiles
(),
4
);
ASSERT_EQ
(
blob
->
NumObsoleteBlobFiles
(),
0
);
...
...
src/version_edit.cc
View file @
0e4bdf62
...
...
@@ -69,7 +69,7 @@ Status VersionEdit::DecodeFrom(Slice* src) {
break
;
case
kDeletedBlobFile
:
if
(
GetVarint64
(
src
,
&
file_number
))
{
DeleteBlobFile
(
file_number
);
DeleteBlobFile
(
file_number
,
0
);
}
else
{
error
=
"deleted blob file"
;
}
...
...
src/version_edit.h
View file @
0e4bdf62
...
...
@@ -32,8 +32,7 @@ class VersionEdit {
added_files_
.
push_back
(
file
);
}
void
DeleteBlobFile
(
uint64_t
file_number
,
SequenceNumber
obsolete_sequence
=
0
)
{
void
DeleteBlobFile
(
uint64_t
file_number
,
SequenceNumber
obsolete_sequence
)
{
deleted_files_
.
emplace_back
(
std
::
make_pair
(
file_number
,
obsolete_sequence
));
}
...
...
src/version_test.cc
View file @
0e4bdf62
...
...
@@ -134,8 +134,8 @@ TEST_F(VersionTest, VersionEdit) {
auto
file2
=
std
::
make_shared
<
BlobFileMeta
>
(
5
,
6
,
0
,
0
,
""
,
""
);
input
.
AddBlobFile
(
file1
);
input
.
AddBlobFile
(
file2
);
input
.
DeleteBlobFile
(
7
);
input
.
DeleteBlobFile
(
8
);
input
.
DeleteBlobFile
(
7
,
0
);
input
.
DeleteBlobFile
(
8
,
0
);
CheckCodec
(
input
);
}
...
...
@@ -153,7 +153,7 @@ VersionEdit DeleteBlobFilesEdit(uint32_t cf_id, uint64_t start, uint64_t end) {
VersionEdit
edit
;
edit
.
SetColumnFamilyID
(
cf_id
);
for
(
auto
i
=
start
;
i
<
end
;
i
++
)
{
edit
.
DeleteBlobFile
(
i
);
edit
.
DeleteBlobFile
(
i
,
0
);
}
return
edit
;
}
...
...
@@ -367,7 +367,7 @@ TEST_F(VersionTest, BlobFileMetaV1ToV2) {
VersionEdit
edit
;
edit
.
SetColumnFamilyID
(
1
);
edit
.
AddBlobFile
(
std
::
make_shared
<
BlobFileMeta
>
(
1
,
1
,
0
,
0
,
""
,
""
));
edit
.
DeleteBlobFile
(
1
);
edit
.
DeleteBlobFile
(
1
,
0
);
edit
.
AddBlobFile
(
std
::
make_shared
<
BlobFileMeta
>
(
2
,
2
,
0
,
0
,
""
,
""
));
std
::
string
str
;
LegacyEncode
(
edit
,
&
str
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment