@@ -62,17 +62,13 @@ void BkDownload::switch_to_local_file() {
6262}
6363
6464bool BkDownload::download_done () {
65- auto tracer = overlaybd_otel::get_tracer (" overlaybd" );
66- auto parent_span = opentelemetry::trace::Tracer::GetCurrentSpan ();
67- opentelemetry::trace::StartSpanOptions options;
68- options.parent = parent_span->GetContext ();
69- auto span = tracer->StartSpan (" overlaybd.download.verify_and_commit" , {}, {}, options);
65+ auto tracer = overlaybd_otel::GetTracer ();
66+ auto span = tracer->StartSpan (" download.verify_and_commit" );
7067 auto scope = tracer->WithActiveSpan (span);
7168
7269 auto lfs = new_localfs_adaptor ();
7370 if (!lfs) {
7471 span->SetAttribute (" error" , " failed_to_create_fs_adaptor" );
75- span->End ();
7672 LOG_ERROR (" new_localfs_adaptor() return NULL" );
7773 return false ;
7874 }
@@ -87,9 +83,7 @@ bool BkDownload::download_done() {
8783 // verify sha256
8884 photon::semaphore done;
8985 std::string shares;
90- opentelemetry::trace::StartSpanOptions verify_options;
91- verify_options.parent = opentelemetry::trace::Tracer::GetCurrentSpan ()->GetContext ();
92- auto verify_span = tracer->StartSpan (" sha256_verification" , {}, {}, verify_options);
86+ auto verify_span = tracer->StartSpan (" sha256_verification" );
9387 auto verify_scope = tracer->WithActiveSpan (verify_span);
9488 verify_span->SetAttribute (" expected_digest" , digest);
9589
@@ -109,81 +103,47 @@ bool BkDownload::download_done() {
109103 span->SetAttribute (" error" , " checksum_mismatch" );
110104 span->SetAttribute (" expected_digest" , digest);
111105 span->SetAttribute (" actual_digest" , shares);
112- span->End ();
113106 LOG_ERROR (" verify checksum ` failed (expect: `, got: `)" , old_name, digest, shares);
114107 force_download = true ; // force redownload next time
115108 return false ;
116109 }
117110
118- opentelemetry::trace::StartSpanOptions rename_options;
119- rename_options.parent = opentelemetry::trace::Tracer::GetCurrentSpan ()->GetContext ();
120- auto rename_span = tracer->StartSpan (" rename_to_commit" , {}, {}, rename_options);
121- auto rename_scope = tracer->WithActiveSpan (rename_span);
122111 int ret = lfs->rename (old_name.c_str (), new_name.c_str ());
123- rename_span->SetAttribute (" success" , ret == 0 );
124-
125112 if (ret != 0 ) {
126113 span->SetAttribute (" error" , " rename_failed" );
127- span->End ();
128114 LOG_ERRNO_RETURN (0 , false , " rename(`,`) failed" , old_name, new_name);
129115 }
130116
131117 span->SetAttribute (" success" , true );
132118 LOG_INFO (" download verify done. rename(`,`) success" , old_name, new_name);
133- span->End ();
134119 return true ;
135120}
136121
137122bool BkDownload::download () {
138- auto tracer = overlaybd_otel::get_tracer (" overlaybd" );
139- // Get current span context from parent if it exists
140- auto parent_span = opentelemetry::trace::Tracer::GetCurrentSpan ();
141- opentelemetry::trace::StartSpanOptions options;
142- options.parent = parent_span->GetContext ();
143- auto span = tracer->StartSpan (" overlaybd.download.lifecycle" , {}, {}, options);
123+ auto tracer = overlaybd_otel::GetTracer ();
124+ auto span = tracer->StartSpan (" download" );
144125 auto scope = tracer->WithActiveSpan (span);
145126
146- span->SetAttribute (" url " , url);
127+ span->SetAttribute (" original_url " , url);
147128 span->SetAttribute (" dir" , dir);
148129 span->SetAttribute (" file_size" , file_size);
149130
150131 if (check_downloaded (dir)) {
151- opentelemetry::trace::StartSpanOptions local_options;
152- local_options.parent = opentelemetry::trace::Tracer::GetCurrentSpan ()->GetContext ();
153- auto local_span = tracer->StartSpan (" overlaybd.download.switch_to_local" , {}, {}, local_options);
154- auto local_scope = tracer->WithActiveSpan (local_span);
155132 switch_to_local_file ();
156133 span->SetAttribute (" from_cache" , true );
157- span->End ( );
134+ span->SetAttribute ( " success " , true );
158135 return true ;
159136 }
160137
161138 span->SetAttribute (" from_cache" , false );
162139 bool success = false ;
163140 if (download_blob ()) {
164- opentelemetry::trace::StartSpanOptions verify_options;
165- verify_options.parent = opentelemetry::trace::Tracer::GetCurrentSpan ()->GetContext ();
166- auto verify_span = tracer->StartSpan (" overlaybd.download.verify" , {}, {}, verify_options);
167- auto verify_scope = tracer->WithActiveSpan (verify_span);
168- if (!download_done ()) {
169- verify_span->SetAttribute (" success" , false );
170- span->SetAttribute (" success" , false );
171- span->End ();
172- return false ;
141+ if (download_done ()) {
142+ switch_to_local_file ();
143+ success = true ;
173144 }
174- verify_span->SetAttribute (" success" , true );
175- verify_span->End ();
176-
177- opentelemetry::trace::StartSpanOptions switch_options;
178- switch_options.parent = opentelemetry::trace::Tracer::GetCurrentSpan ()->GetContext ();
179- auto switch_span = tracer->StartSpan (" overlaybd.download.switch_to_local" , {}, {}, switch_options);
180- auto switch_scope = tracer->WithActiveSpan (switch_span);
181- switch_to_local_file ();
182- success = true ;
183145 }
184-
185146 span->SetAttribute (" success" , success);
186- span->End ();
187147 return success;
188148}
189149
@@ -201,11 +161,8 @@ void BkDownload::unlock_file() {
201161}
202162
203163bool BkDownload::download_blob () {
204- auto tracer = overlaybd_otel::get_tracer (" overlaybd" );
205- auto parent_span = opentelemetry::trace::Tracer::GetCurrentSpan ();
206- opentelemetry::trace::StartSpanOptions options;
207- options.parent = parent_span->GetContext ();
208- auto span = tracer->StartSpan (" overlaybd.download.blob" , {}, {}, options);
164+ auto tracer = overlaybd_otel::GetTracer ();
165+ auto span = tracer->StartSpan (" download.blob" );
209166 auto scope = tracer->WithActiveSpan (span);
210167
211168 std::string dl_file_path = dir + " /" + DOWNLOAD_TMP_NAME ;
@@ -230,7 +187,6 @@ bool BkDownload::download_blob() {
230187 auto dst = open_localfile_adaptor (dl_file_path.c_str (), O_RDWR | O_CREAT , 0644 );
231188 if (dst == nullptr ) {
232189 span->SetAttribute (" error" , " failed_to_open_dst" );
233- span->End ();
234190 LOG_ERRNO_RETURN (0 , false , " failed to open dst file `" , dl_file_path.c_str ());
235191 }
236192 DEFER (delete dst;);
@@ -243,7 +199,6 @@ bool BkDownload::download_blob() {
243199 ::posix_memalign (&buff, ALIGNMENT , bs);
244200 if (buff == nullptr ) {
245201 span->SetAttribute (" error" , " failed_to_allocate_buffer" );
246- span->End ();
247202 LOG_ERRNO_RETURN (0 , false , " failed to allocate buffer with " , VALUE (bs));
248203 }
249204 DEFER (free (buff));
@@ -256,7 +211,6 @@ bool BkDownload::download_blob() {
256211 while (offset < (ssize_t )file_size) {
257212 if (running != 1 ) {
258213 span->SetAttribute (" error" , " download_interrupted" );
259- span->End ();
260214 LOG_INFO (" image file exit when background downloading" );
261215 return false ;
262216 }
@@ -279,22 +233,15 @@ bool BkDownload::download_blob() {
279233 if (!(retry--)) {
280234 span->SetAttribute (" error" , " max_read_retries_exceeded" );
281235 span->SetAttribute (" failed_offset" , offset);
282- span->End ();
283236 LOG_ERROR_RETURN (EIO , false , " failed to read at " , VALUE (offset), VALUE (count));
284237 }
285238 ssize_t rlen;
286239 {
287- auto read_span = tracer->StartSpan (" overlaybd.download.read_block" );
288- auto read_scope = tracer->WithActiveSpan (read_span);
289- read_span->SetAttribute (" offset" , offset);
290- read_span->SetAttribute (" size" , count);
291240 SCOPE_AUDIT (" bk_download" , AU_FILEOP (url, offset, rlen));
292241 rlen = src->pread (buff, bs, offset);
293242 if (rlen >= 0 ) {
294- read_span->SetAttribute (" bytes_read" , rlen);
295243 total_bytes_read += rlen;
296244 }
297- read_span->End ();
298245 }
299246 if (rlen < 0 ) {
300247 retries++;
@@ -306,19 +253,12 @@ bool BkDownload::download_blob() {
306253 if (!(retry--)) {
307254 span->SetAttribute (" error" , " max_write_retries_exceeded" );
308255 span->SetAttribute (" failed_offset" , offset);
309- span->End ();
310256 LOG_ERROR_RETURN (EIO , false , " failed to write at " , VALUE (offset), VALUE (count));
311257 }
312- auto write_span = tracer->StartSpan (" overlaybd.download.write_block" );
313- auto write_scope = tracer->WithActiveSpan (write_span);
314- write_span->SetAttribute (" offset" , offset);
315- write_span->SetAttribute (" size" , count);
316258 auto wlen = dst->pwrite (buff, count, offset);
317259 if (wlen >= 0 ) {
318- write_span->SetAttribute (" bytes_written" , wlen);
319260 total_bytes_written += wlen;
320261 }
321- write_span->End ();
322262 // but once write lenth larger than read length treats as OK
323263 if (wlen < rlen) {
324264 retries++;
@@ -333,12 +273,11 @@ bool BkDownload::download_blob() {
333273 span->SetAttribute (" total_retries" , retries);
334274 span->SetAttribute (" success" , true );
335275 LOG_INFO (" download blob done. (`)" , dl_file_path);
336- span->End ();
337276 return true ;
338277}
339278
340279void bk_download_proc (std::list<BKDL ::BkDownload *> &dl_list, uint64_t delay_sec, int &running) {
341- auto tracer = overlaybd_otel::get_tracer ( " overlaybd " );
280+ auto tracer = overlaybd_otel::GetTracer ( );
342281 auto span = tracer->StartSpan (" background_download_process" );
343282 auto scope = tracer->WithActiveSpan (span);
344283
@@ -375,7 +314,6 @@ void bk_download_proc(std::list<BKDL::BkDownload *> &dl_list, uint64_t delay_sec
375314
376315 if (!dl_item->lock_file ()) {
377316 dl_span->SetAttribute (" status" , " lock_failed" );
378- dl_span->End ();
379317 dl_list.push_back (dl_item);
380318 continue ;
381319 }
@@ -385,22 +323,19 @@ void bk_download_proc(std::list<BKDL::BkDownload *> &dl_list, uint64_t delay_sec
385323
386324 if (running != 1 ) {
387325 dl_span->SetAttribute (" status" , " interrupted" );
388- dl_span->End ();
389326 LOG_WARN (" image exited, background download exit..." );
390327 delete dl_item;
391328 break ;
392329 }
393330
394331 if (!succ && dl_item->try_cnt > 0 ) {
395332 dl_span->SetAttribute (" status" , " retry" );
396- dl_span->End ();
397333 dl_list.push_back (dl_item);
398334 LOG_WARN (" download failed, push back to download queue and retry `" , dl_item->dir );
399335 continue ;
400336 }
401337
402338 dl_span->SetAttribute (" status" , succ ? " success" : " failed" );
403- dl_span->End ();
404339
405340 LOG_DEBUG (" finish downloading or no retry any more: `, retry_cnt: `" , dl_item->dir ,
406341 dl_item->try_cnt );
@@ -417,7 +352,6 @@ void bk_download_proc(std::list<BKDL::BkDownload *> &dl_list, uint64_t delay_sec
417352 }
418353 }
419354 LOG_INFO (" BACKGROUND DOWNLOAD THREAD EXIT." );
420- span->End ();
421355}
422356
423357} // namespace BKDL
0 commit comments