@@ -41,7 +41,7 @@ use prometheus::{Encoder, TextEncoder};
4141
4242use provider:: { MirrorError , MirrorResult , Provider } ;
4343
44- use git:: { Git , GitWrapper } ;
44+ use git:: { Git , GitError , GitWrapper } ;
4545
4646use error:: { GitMirrorError , Result } ;
4747
@@ -114,6 +114,8 @@ fn run_sync_task(v: &[MirrorResult], label: &str, opts: &MirrorOptions) -> TestS
114114 let proj_skip =
115115 register_gauge_vec ! ( "git_mirror_skip" , "Skipped projects" , & [ "mirror" ] ) . unwrap ( ) ;
116116 let proj_fail = register_gauge_vec ! ( "git_mirror_fail" , "Failed projects" , & [ "mirror" ] ) . unwrap ( ) ;
117+ let proj_timeout =
118+ register_gauge_vec ! ( "git_mirror_timeout" , "Timed-out projects" , & [ "mirror" ] ) . unwrap ( ) ;
117119 let proj_ok = register_gauge_vec ! ( "git_mirror_ok" , "OK projects" , & [ "mirror" ] ) . unwrap ( ) ;
118120 let proj_start = register_gauge_vec ! (
119121 "git_mirror_project_start" ,
@@ -140,6 +142,7 @@ fn run_sync_task(v: &[MirrorResult], label: &str, opts: &MirrorOptions) -> TestS
140142 let name = format ! ( "{} -> {}" , x. origin, x. destination) ;
141143 let proj_fail = proj_fail. clone ( ) ;
142144 let proj_ok = proj_ok. clone ( ) ;
145+ let proj_timeout = proj_timeout. clone ( ) ;
143146 let proj_start = proj_start. clone ( ) ;
144147 let proj_end = proj_end. clone ( ) ;
145148 let label = label. to_string ( ) ;
@@ -199,6 +202,13 @@ fn run_sync_task(v: &[MirrorResult], label: &str, opts: &MirrorOptions) -> TestS
199202 proj_end
200203 . with_label_values ( & [ & x. origin , & x. destination , & label] )
201204 . set ( OffsetDateTime :: now_utc ( ) . unix_timestamp ( ) as f64 ) ;
205+ if matches ! (
206+ & e,
207+ GitMirrorError :: GitError ( inner)
208+ if matches!( * * inner, GitError :: GitCommandTimeout { .. } )
209+ ) {
210+ proj_timeout. with_label_values ( & [ & label] ) . inc ( ) ;
211+ }
202212 proj_fail. with_label_values ( & [ & label] ) . inc ( ) ;
203213 error ! ( "Unable to sync repo {name} ({e})" ) ;
204214 TestCaseBuilder :: error (
0 commit comments