@@ -145,9 +145,22 @@ private int recoverSegment(LogSegment segment) throws IOException {
145145 // Additionally, using 0 versus using logStartOffset does not affect correctness—they both
146146 // can restore the complete WriterState. The only difference is that using logStartOffset
147147 // can potentially skip over more segments.
148+ long rebuildWriterStataStart = System .currentTimeMillis ();
148149 LogTablet .rebuildWriterState (
149150 writerStateManager , logSegments , 0 , segment .getBaseOffset (), false );
151+ long rebuildWriterStateEnd = System .currentTimeMillis ();
152+ LOG .info (
153+ "Rebuilt writer state for bucket {} in {} ms" ,
154+ logSegments .getTableBucket (),
155+ rebuildWriterStateEnd - rebuildWriterStataStart );
156+ long segmentRecoverStart = System .currentTimeMillis ();
150157 int bytesTruncated = segment .recover ();
158+ long segmentRecoverEnd = System .currentTimeMillis ();
159+ LOG .info (
160+ "Segment recover {} for bucket {} in {} ms" ,
161+ segment .getBaseOffset (),
162+ logSegments .getTableBucket (),
163+ segmentRecoverEnd - segmentRecoverStart );
151164 // once we have recovered the segment's data, take a snapshot to ensure that we won't
152165 // need to reload the same segment again while recovering another segment.
153166 writerStateManager .takeSnapshot ();
@@ -174,6 +187,7 @@ private Tuple2<Long, Long> recoverLog() throws IOException {
174187 boolean truncated = false ;
175188 int numFlushed = 1 ;
176189
190+ long recoveryStart = System .currentTimeMillis ();
177191 while (unflushedIter .hasNext () && !truncated ) {
178192 LogSegment segment = unflushedIter .next ();
179193 LOG .info (
@@ -185,7 +199,14 @@ private Tuple2<Long, Long> recoverLog() throws IOException {
185199
186200 int truncatedBytes = -1 ;
187201 try {
202+ long recoverySegmentStart = System .currentTimeMillis ();
188203 truncatedBytes = recoverSegment (segment );
204+ long recoverySegmentEnd = System .currentTimeMillis ();
205+ LOG .info (
206+ "Recovered segment {} for bucket {} in {} ms" ,
207+ segment .getBaseOffset (),
208+ logSegments .getTableBucket (),
209+ recoverySegmentEnd - recoverySegmentStart );
189210 } catch (Exception e ) {
190211 if (e instanceof InvalidOffsetException ) {
191212 long startOffset = segment .getBaseOffset ();
@@ -213,6 +234,11 @@ private Tuple2<Long, Long> recoverLog() throws IOException {
213234 numFlushed += 1 ;
214235 }
215236 }
237+ long recoveryEnd = System .currentTimeMillis ();
238+ LOG .info (
239+ "Recovery for bucket {} completed in {} ms" ,
240+ logSegments .getTableBucket (),
241+ recoveryEnd - recoveryStart );
216242 }
217243
218244 if (logSegments .isEmpty ()) {
0 commit comments