@@ -13,12 +13,14 @@ const DEFAULT_MAX_RETRIES: usize = 5;
13
13
14
14
pub struct SyncContext {
15
15
db_path : String ,
16
+ client : hyper:: Client < ConnectorService , Body > ,
16
17
sync_url : String ,
17
18
auth_token : Option < String > ,
18
19
max_retries : usize ,
19
20
/// Represents the max_frame_no from the server.
20
21
durable_frame_num : u32 ,
21
- client : hyper:: Client < ConnectorService , Body > ,
22
+ /// Represents the current checkpoint generation.
23
+ generation : u32 ,
22
24
}
23
25
24
26
impl SyncContext {
@@ -34,9 +36,10 @@ impl SyncContext {
34
36
db_path,
35
37
sync_url,
36
38
auth_token,
37
- durable_frame_num : 0 ,
38
39
max_retries : DEFAULT_MAX_RETRIES ,
39
40
client,
41
+ durable_frame_num : 0 ,
42
+ generation : 1 ,
40
43
} ;
41
44
42
45
me. read_metadata ( ) . await ?;
@@ -119,12 +122,17 @@ impl SyncContext {
119
122
self . durable_frame_num
120
123
}
121
124
125
+ pub ( crate ) fn generation ( & self ) -> u32 {
126
+ self . generation
127
+ }
128
+
122
129
async fn write_metadata ( & mut self ) -> Result < ( ) > {
123
130
let path = format ! ( "{}-info" , self . db_path) ;
124
131
125
132
let contents = serde_json:: to_vec ( & MetadataJson {
126
133
version : METADATA_VERSION ,
127
134
durable_frame_num : self . durable_frame_num ,
135
+ generation : self . generation ,
128
136
} )
129
137
. unwrap ( ) ;
130
138
@@ -151,6 +159,7 @@ impl SyncContext {
151
159
) ;
152
160
153
161
self . durable_frame_num = metadata. durable_frame_num ;
162
+ self . generation = metadata. generation ;
154
163
155
164
Ok ( ( ) )
156
165
}
@@ -160,6 +169,7 @@ impl SyncContext {
160
169
struct MetadataJson {
161
170
version : u32 ,
162
171
durable_frame_num : u32 ,
172
+ generation : u32 ,
163
173
}
164
174
165
175
async fn atomic_write < P : AsRef < Path > > ( path : P , data : & [ u8 ] ) -> Result < ( ) > {
0 commit comments