@@ -135,6 +135,9 @@ private final class UpdateRowHandler extends PageHandler<T, Boolean> {
135135
136136 PageUtils .getBytes (pageAddr , data .offset (), payload , 0 , rowSize );
137137
138+ statHolder .trackPageRemoveData (rowSize );
139+ statHolder .trackPageInsertData (rowSize );
140+
138141 wal .log (new DataPageUpdateRecord (
139142 cacheId ,
140143 pageId ,
@@ -164,9 +167,9 @@ private class WriteRowHandler extends PageHandler<T, Integer> {
164167 Boolean walPlc ,
165168 T row ,
166169 int written ,
167- IoStatisticsHolder statHolder )
168- throws IgniteCheckedException {
169- written = addRow (pageId , page , pageAddr , iox , row , written );
170+ IoStatisticsHolder statHolder
171+ ) throws IgniteCheckedException {
172+ written = addRow (pageId , page , pageAddr , iox , row , written , statHolder );
170173
171174 putPage (((AbstractDataPageIO )iox ).getFreeSpace (pageAddr ), pageId , page , pageAddr , statHolder );
172175
@@ -180,6 +183,7 @@ private class WriteRowHandler extends PageHandler<T, Integer> {
180183 * @param iox IO.
181184 * @param row Row to write.
182185 * @param written Written size.
186+ * @param statHolder IO statistics holder.
183187 * @return Number of bytes written, {@link #COMPLETE} if the row was fully written.
184188 * @throws IgniteCheckedException If failed.
185189 */
@@ -189,8 +193,9 @@ protected Integer addRow(
189193 long pageAddr ,
190194 PageIO iox ,
191195 T row ,
192- int written )
193- throws IgniteCheckedException {
196+ int written ,
197+ IoStatisticsHolder statHolder
198+ ) throws IgniteCheckedException {
194199 AbstractDataPageIO <T > io = (AbstractDataPageIO <T >)iox ;
195200
196201 long lastLink = row .link ();
@@ -209,6 +214,8 @@ protected Integer addRow(
209214
210215 evictionTracker .trackFragmentPage (pageId , lastLink , written == rowSize );
211216
217+ statHolder .trackPageInsertData (oldFreeSpace - io .getFreeSpace (pageAddr ));
218+
212219 // Avoid boxing with garbage generation for usual case.
213220 return written == rowSize ? COMPLETE : written ;
214221 }
@@ -324,8 +331,8 @@ private final class WriteRowsHandler extends PageHandler<GridCursor<T>, Integer>
324331 Boolean walPlc ,
325332 GridCursor <T > cur ,
326333 int written ,
327- IoStatisticsHolder statHolder )
328- throws IgniteCheckedException {
334+ IoStatisticsHolder statHolder
335+ ) throws IgniteCheckedException {
329336 AbstractDataPageIO <T > io = (AbstractDataPageIO <T >)iox ;
330337
331338 // Fill the page up to the end.
@@ -341,7 +348,7 @@ private final class WriteRowsHandler extends PageHandler<GridCursor<T>, Integer>
341348 break ;
342349 }
343350
344- written = writeRowHnd .addRow (pageId , page , pageAddr , io , row , written );
351+ written = writeRowHnd .addRow (pageId , page , pageAddr , io , row , written , statHolder );
345352
346353 assert written == COMPLETE ;
347354 }
@@ -377,8 +384,8 @@ private final class RemoveRowHandler extends PageHandler<ReuseBag, Long> {
377384 Boolean walPlc ,
378385 ReuseBag reuseBag ,
379386 int itemId ,
380- IoStatisticsHolder statHolder )
381- throws IgniteCheckedException {
387+ IoStatisticsHolder statHolder
388+ ) throws IgniteCheckedException {
382389 AbstractDataPageIO <T > io = (AbstractDataPageIO <T >)iox ;
383390
384391 int oldFreeSpace = io .getFreeSpace (pageAddr );
@@ -418,6 +425,8 @@ else if (putIsNeeded)
418425 put (null , pageId , page , pageAddr , newBucket , statHolder );
419426 }
420427
428+ statHolder .trackPageRemoveData (newFreeSpace - oldFreeSpace );
429+
421430 // For common case boxed 0L will be cached inside of Long, so no garbage will be produced.
422431 return nextLink ;
423432 }
0 commit comments