docs: private void recover(Connection conn) throws SQLException, RecoverableUnitSectionExistsException, InternalLogException {
          if (tc.isEntryEnabled())
              Tr.entry(tc, "recover", conn);
  
          Statement recoveryStmt = null;
          ResultSet recoveryRS = null;
  
          try {
              recoveryStmt = conn.createStatement();
              String queryString = "SELECT RU_ID, RUSECTION_ID, RUSECTION_DATA_INDEX, DATA" +
                                   " FROM " + _recoveryTableName + _logIdentifierString + _recoveryTableNameSuffix +
                                   " WHERE SERVER_NAME='" + _serverName +
                                   "' AND SERVICE_ID=" + _recoveryAgent.clientIdentifier();
              if (tc.isDebugEnabled())
                  Tr.debug(tc, "Retrieve all rows from table using - " + queryString);
  
              recoveryRS = recoveryStmt.executeQuery(queryString);
  
              while (recoveryRS.next()) {
                  final long ruId = recoveryRS.getLong(1);
                  if (ruId != -1) {
                      SQLRecoverableUnitImpl ru = (SQLRecoverableUnitImpl) _recoverableUnits.get(ruId);
                      if (ru == null) {
                          if (tc.isDebugEnabled())
                              Tr.debug(tc, "Creating ru with id: " + ruId);
                          ru = new SQLRecoverableUnitImpl(this, ruId, _failureScope, true);
                      }
  
                      final long sectId = recoveryRS.getLong(2);
                      final int index = recoveryRS.getInt(3);
                      final byte[] data = recoveryRS.getBytes(4);
  
                      if (tc.isEventEnabled()) {
                          Tr.event(tc, "sql tranlog: read ruId: " + ruId);
                          Tr.event(tc, "sql tranlog: read sectionId: " + sectId);
                          Tr.event(tc, "sql tranlog: read item: " + index);
                          Tr.event(tc, "sql tranlog: read data: " + RLSUtils.toHexString(data, RLSUtils.MAX_DISPLAY_BYTES));
                      }
  
                      SQLRecoverableUnitSectionImpl sect = (SQLRecoverableUnitSectionImpl) ru.lookupSection((int) sectId);
                      if (sect == null) {
                          sect = (SQLRecoverableUnitSectionImpl) ru.createSection((int) sectId, index == 0);
                      }
  
                      sect.addData(index, data);
                  } else if (tc.isDebugEnabled())
                      Tr.debug(tc, "Bypass locking row with id: " + ruId);
              }
          } finally {
              if (recoveryRS != null && !recoveryRS.isClosed())
                  recoveryRS.close();
              if (recoveryStmt != null && !recoveryStmt.isClosed())
                  recoveryStmt.close();
          }
  
          if (tc.isEntryEnabled())
              Tr.exit(tc, "recover");
      }