Sahina Bose has uploaded a new change for review. Change subject: engine: Georep status detail changes ......................................................................
engine: Georep status detail changes Changes corresponding to gluster's georep status detail changes Change-Id: Id05fa1d8537bcd3a0a80f1765f142dab575f43ba Signed-off-by: Sahina Bose <sab...@redhat.com> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java M packaging/dbscripts/gluster_georep_sp.sql A packaging/dbscripts/upgrade/03_06_1280_alter_georep_session_details.sql 7 files changed, 223 insertions(+), 114 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/40207/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java index d714388..e1079eb 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java @@ -2,8 +2,8 @@ import java.io.Serializable; import java.util.Date; +import java.util.Objects; -import org.ovirt.engine.core.common.utils.ObjectUtils; import org.ovirt.engine.core.compat.Guid; public class GlusterGeoRepSessionDetails implements Serializable{ @@ -17,16 +17,16 @@ private GeoRepSessionStatus status; private String checkPointStatus; private GeoRepCrawlStatus crawlStatus; - private Long filesSynced; - private Long filesPending; - private Long bytesPending; - private Long deletesPending; - private Long filesSkipped; + private Long dataOpsPending; + private Long metaOpsPending; + private Long entryOpsPending; + private Long failures; private Date updatedAt; + private Date lastSyncedAt; + private Date checkPointTime; + private Date checkPointCompletedAt; + private boolean checkpointCompleted; - public Long getFilesSynced() { - return filesSynced; - } public Guid getMasterBrickId() { return masterBrickId; @@ -84,40 +84,68 @@ this.updatedAt = updatedAt; } - public void setFilesSynced(Long filesSynced) { - this.filesSynced = filesSynced; + public Long getDataOpsPending() { + return dataOpsPending; } - public Long getFilesPending() { - return filesPending; + public void setDataOpsPending(Long dataOpsPending) { + this.dataOpsPending = dataOpsPending; } - public void setFilesPending(Long filesPending) { - this.filesPending = filesPending; + public Long getMetaOpsPending() { + return metaOpsPending; } - public Long getBytesPending() { - return bytesPending; + public void setMetaOpsPending(Long metaOpsPending) { + this.metaOpsPending = metaOpsPending; } - public void setBytesPending(Long bytesPending) { - this.bytesPending = bytesPending; + public Long getEntryOpsPending() { + return entryOpsPending; } - public Long getDeletesPending() { - return deletesPending; + public void setEntryOpsPending(Long entryOpsPending) { + this.entryOpsPending = entryOpsPending; } - public void setDeletesPending(Long deletesPending) { - this.deletesPending = deletesPending; + public Date getLastSyncedAt() { + return lastSyncedAt; } - public Long getFilesSkipped() { - return filesSkipped; + public void setLastSyncedAt(Date lastSyncedAt) { + this.lastSyncedAt = lastSyncedAt; } - public void setFilesSkipped(Long filesSkipped) { - this.filesSkipped = filesSkipped; + public Date getCheckPointTime() { + return checkPointTime; + } + + public void setCheckPointTime(Date checkPointTime) { + this.checkPointTime = checkPointTime; + } + + public Date getCheckPointCompletedAt() { + return checkPointCompletedAt; + } + + public void setCheckPointCompletedAt(Date checkPointCompletedAt) { + this.checkPointCompletedAt = checkPointCompletedAt; + } + + public boolean isCheckpointCompleted() { + return checkpointCompleted; + } + + public void setCheckpointCompleted(boolean checkpointCompleted) { + this.checkpointCompleted = checkpointCompleted; + } + + public Long getFailures() { + return failures; + } + + public void setFailures(Long failures) { + this.failures = failures; } public Guid getSessionId() { @@ -132,19 +160,33 @@ public boolean equals(Object obj) { return (obj != null) && (obj instanceof GlusterGeoRepSessionDetails) && - ObjectUtils.objectsEqual(getSessionId(), ((GlusterGeoRepSessionDetails) obj).getSessionId()) && - ObjectUtils.objectsEqual(getMasterBrickId(), ((GlusterGeoRepSessionDetails) obj).getMasterBrickId()) && - ObjectUtils.objectsEqual(getSlaveNodeUuid(), ((GlusterGeoRepSessionDetails) obj).getSlaveNodeUuid()) && - ObjectUtils.objectsEqual(getSlaveHostName(), ((GlusterGeoRepSessionDetails) obj).getSlaveHostName()) && - ObjectUtils.objectsEqual(getStatus(), ((GlusterGeoRepSessionDetails) obj).getStatus()) && - ObjectUtils.objectsEqual(getCheckPointStatus(), ((GlusterGeoRepSessionDetails) obj).getCheckPointStatus()) && - ObjectUtils.objectsEqual(getCrawlStatus(), ((GlusterGeoRepSessionDetails) obj).getCrawlStatus()) && - ObjectUtils.objectsEqual(getFilesSynced(), ((GlusterGeoRepSessionDetails) obj).getFilesSynced()) && - ObjectUtils.objectsEqual(getFilesPending(), ((GlusterGeoRepSessionDetails) obj).getFilesPending()) && - ObjectUtils.objectsEqual(getFilesSkipped(), ((GlusterGeoRepSessionDetails) obj).getFilesSkipped()) && - ObjectUtils.objectsEqual(getBytesPending(), ((GlusterGeoRepSessionDetails) obj).getBytesPending()) && - ObjectUtils.objectsEqual(getDeletesPending(), ((GlusterGeoRepSessionDetails) obj).getDeletesPending()) && - ObjectUtils.objectsEqual(getUpdatedAt(), ((GlusterGeoRepSessionDetails) obj).getUpdatedAt()); + Objects.equals(getSessionId(), ((GlusterGeoRepSessionDetails) obj).getSessionId()) + && + Objects.equals(getMasterBrickId(), ((GlusterGeoRepSessionDetails) obj).getMasterBrickId()) + && + Objects.equals(getSlaveNodeUuid(), ((GlusterGeoRepSessionDetails) obj).getSlaveNodeUuid()) + && + Objects.equals(getSlaveHostName(), ((GlusterGeoRepSessionDetails) obj).getSlaveHostName()) + && + Objects.equals(getStatus(), ((GlusterGeoRepSessionDetails) obj).getStatus()) + && + Objects.equals(getCheckPointStatus(), ((GlusterGeoRepSessionDetails) obj).getCheckPointStatus()) + && + Objects.equals(getCrawlStatus(), ((GlusterGeoRepSessionDetails) obj).getCrawlStatus()) + && + Objects.equals(getDataOpsPending(), ((GlusterGeoRepSessionDetails) obj).getDataOpsPending()) + && + Objects.equals(getMetaOpsPending(), ((GlusterGeoRepSessionDetails) obj).getMetaOpsPending()) + && + Objects.equals(getEntryOpsPending(), ((GlusterGeoRepSessionDetails) obj).getEntryOpsPending()) + && + Objects.equals(getCheckPointCompletedAt(), + ((GlusterGeoRepSessionDetails) obj).getCheckPointCompletedAt()) && + Objects.equals(getCheckPointTime(), ((GlusterGeoRepSessionDetails) obj).getCheckPointTime()) && + Objects.equals(getLastSyncedAt(), ((GlusterGeoRepSessionDetails) obj).getLastSyncedAt()) && + Objects.equals(getUpdatedAt(), ((GlusterGeoRepSessionDetails) obj).getUpdatedAt()) && + Objects.equals(getFailures(), ((GlusterGeoRepSessionDetails) obj).getFailures()) && + isCheckpointCompleted() == ((GlusterGeoRepSessionDetails) obj).isCheckpointCompleted(); } @Override @@ -158,11 +200,14 @@ result = prime * result + ((status == null) ? 0 : status.hashCode()); result = prime * result + ((checkPointStatus == null) ? 0 : checkPointStatus.hashCode()); result = prime * result + ((crawlStatus == null) ? 0 : crawlStatus.hashCode()); - result = prime * result + ((filesSynced == null) ? 0 : filesSynced.hashCode()); - result = prime * result + ((filesPending == null) ? 0 : filesPending.hashCode()); - result = prime * result + ((filesSkipped == null) ? 0 : filesSkipped.hashCode()); - result = prime * result + ((bytesPending == null) ? 0 : bytesPending.hashCode()); - result = prime * result + ((deletesPending == null) ? 0 : deletesPending.hashCode()); + result = prime * result + ((dataOpsPending == null) ? 0 : dataOpsPending.hashCode()); + result = prime * result + ((metaOpsPending == null) ? 0 : metaOpsPending.hashCode()); + result = prime * result + ((entryOpsPending == null) ? 0 : entryOpsPending.hashCode()); + result = prime * result + ((checkPointCompletedAt == null) ? 0 : checkPointCompletedAt.hashCode()); + result = prime * result + ((checkPointTime == null) ? 0 : checkPointTime.hashCode()); + result = prime * result + (checkpointCompleted ? 1 : 0); + result = prime * result + ((lastSyncedAt == null) ? 0 : lastSyncedAt.hashCode()); + result = prime * result + ((failures == null) ? 0 : failures.hashCode()); result = prime * result + ((updatedAt == null) ? 0 : updatedAt.hashCode()); return result; } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java index 3155519..b187e0d 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java @@ -16,6 +16,7 @@ import org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSessionDetails; import org.ovirt.engine.core.common.utils.EnumUtils; import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade; import org.springframework.jdbc.core.RowMapper; @@ -85,11 +86,14 @@ entity.setStatus(GeoRepSessionStatus.valueOf(rs.getString("status"))); entity.setCheckPointStatus(rs.getString("checkpoint_status")); entity.setCrawlStatus(GeoRepCrawlStatus.valueOf(rs.getString("crawl_status"))); - entity.setFilesSynced(rs.getLong("files_synced")); - entity.setFilesPending(rs.getLong("files_pending")); - entity.setBytesPending(rs.getLong("bytes_pending")); - entity.setDeletesPending(rs.getLong("deletes_pending")); - entity.setFilesSkipped(rs.getLong("files_skipped")); + entity.setDataOpsPending(rs.getLong("data_pending")); + entity.setMetaOpsPending(rs.getLong("meta_pending")); + entity.setEntryOpsPending(rs.getLong("entry_pending")); + entity.setFailures(rs.getLong("failures")); + entity.setCheckpointCompleted(rs.getBoolean("is_checkpoint_completed")); + entity.setCheckPointCompletedAt(DbFacadeUtils.fromDate(rs.getTimestamp("checkpoint_completed_time"))); + entity.setCheckPointTime(DbFacadeUtils.fromDate(rs.getTimestamp("checkpoint_time"))); + entity.setLastSyncedAt(DbFacadeUtils.fromDate(rs.getTimestamp("last_synced_at"))); return entity; } } @@ -193,11 +197,14 @@ .addValue("status", EnumUtils.nameOrNull(geoRepSessionDetails.getStatus())) .addValue("checkpoint_status", geoRepSessionDetails.getCheckPointStatus()) .addValue("crawl_status", EnumUtils.nameOrNull(geoRepSessionDetails.getCrawlStatus())) - .addValue("files_synced", geoRepSessionDetails.getFilesSynced()) - .addValue("files_pending", geoRepSessionDetails.getFilesPending()) - .addValue("bytes_pending", geoRepSessionDetails.getBytesPending()) - .addValue("deletes_pending", geoRepSessionDetails.getDeletesPending()) - .addValue("files_skipped", geoRepSessionDetails.getFilesSkipped()); + .addValue("data_pending", geoRepSessionDetails.getDataOpsPending()) + .addValue("meta_pending", geoRepSessionDetails.getMetaOpsPending()) + .addValue("entry_pending", geoRepSessionDetails.getEntryOpsPending()) + .addValue("failures", geoRepSessionDetails.getFailures()) + .addValue("is_checkpoint_completed", geoRepSessionDetails.isCheckpointCompleted()) + .addValue("checkpoint_completed_time", geoRepSessionDetails.getCheckPointCompletedAt()) + .addValue("checkpoint_time", geoRepSessionDetails.getCheckPointTime()) + .addValue("last_synced_at", geoRepSessionDetails.getLastSyncedAt()); } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java index f28aaba..aadcbaf 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import java.util.Date; import java.util.List; import org.junit.Test; @@ -45,11 +46,13 @@ sessionDetails.setStatus(GeoRepSessionStatus.ACTIVE); sessionDetails.setCheckPointStatus("NA"); sessionDetails.setCrawlStatus(GeoRepCrawlStatus.CHANGELOG_CRAWL); - sessionDetails.setFilesPending(100L); - sessionDetails.setDeletesPending(200L); - sessionDetails.setBytesPending(129832972545904L); - sessionDetails.setFilesSynced(2343958349L); - sessionDetails.setFilesSkipped(0L); + sessionDetails.setDataOpsPending(100L); + sessionDetails.setMetaOpsPending(40L); + sessionDetails.setEntryOpsPending(10L); + sessionDetails.setFailures(0L); + sessionDetails.setCheckpointCompleted(false); + sessionDetails.setCheckPointTime(new Date()); + sessionDetails.setLastSyncedAt(new Date()); return sessionDetails; } @@ -120,15 +123,15 @@ public void testUpdateDetails() { GlusterGeoRepSessionDetails sessionDetails = getGlusterGeoRepSessionDetails(); dao.saveDetails(sessionDetails); - Long updatedBytesPending = 567888L; - Long updatedFilesPending = 50L; - sessionDetails.setFilesPending(updatedFilesPending); + Long entryOpsPending = 567888L; + Long dataOpsPending = 50L; + sessionDetails.setEntryOpsPending(entryOpsPending); sessionDetails.setCheckPointStatus("NEW"); - sessionDetails.setBytesPending(updatedBytesPending); + sessionDetails.setDataOpsPending(dataOpsPending); dao.updateDetails(sessionDetails); List<GlusterGeoRepSessionDetails> fetchedSessionDetails = dao.getGeoRepSessionDetails(FixturesTool.GLUSTER_GEOREP_SESSION_ID); - assertEquals(updatedBytesPending, fetchedSessionDetails.get(0).getBytesPending()); - assertEquals(updatedFilesPending, fetchedSessionDetails.get(0).getFilesPending()); + assertEquals(entryOpsPending, fetchedSessionDetails.get(0).getEntryOpsPending()); + assertEquals(dataOpsPending, fetchedSessionDetails.get(0).getDataOpsPending()); assertEquals("NEW", fetchedSessionDetails.get(0).getCheckPointStatus()); } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java index c041ca9..18dba5a 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java @@ -1,45 +1,78 @@ package org.ovirt.engine.core.vdsbroker.gluster; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.TimeZone; +import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession; import org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSessionDetails; public class GlusterVolumeGeoRepStatusDetailForXmlRpc extends GlusterVolumeGeoRepStatusForXmlRpc { private static final String SESSION_STATUS = "sessionStatus"; - private static final String FILES_SYNCED = "filesSynced"; - private static final String FILES_PENDING = "filesPending"; - private static final String BYTES_PENDING = "bytesPending"; - private static final String DELETES_PENDING = "deletesPending"; - private static final String FILES_SKIPPED = "filesSkipped"; + private static final String LAST_SYNCED = "lastSynced"; + private static final String FAILURES = "failures"; + private static final String DATA = "data"; + private static final String META = "meta"; + private static final String ENTRY = "entry"; + private static final String TIMEZONE = "timezone"; + private static final String CHECK_POINT_COMPLETION_TIME = "checkpointCompletionTime"; + private static final String CHECK_POINT_COMPLETED = "checkpointCompleted"; + private static final String CHECK_POINT_TIME = "checkpointTIme"; private final ArrayList<GlusterGeoRepSessionDetails> geoRepDetails = new ArrayList<GlusterGeoRepSessionDetails>(); private final List<GlusterGeoRepSession> geoRepSessions = new ArrayList<GlusterGeoRepSession>(); + + private Long parseSafeLong(Map<String, Object> innerMap, String key) { + return innerMap.containsKey(key) && StringUtils.isNumeric(key) ? Long.parseLong(innerMap.get(key).toString()) + : null; + } @Override protected GlusterGeoRepSessionDetails getSessionDetails(Map<String, Object> innerMap) { GlusterGeoRepSessionDetails details = super.getSessionDetails(innerMap); if (details != null) { - Long filesSynced = - innerMap.containsKey(FILES_SYNCED) ? Long.parseLong(innerMap.get(FILES_SYNCED).toString()) : null; - Long filesPending = - innerMap.containsKey(FILES_PENDING) ? Long.parseLong(innerMap.get(FILES_PENDING).toString()) : null; - Long bytesPending = - innerMap.containsKey(BYTES_PENDING) ? Long.parseLong(innerMap.get(BYTES_PENDING).toString()) : null; - Long deletesPending = - innerMap.containsKey(DELETES_PENDING) ? Long.parseLong(innerMap.get(DELETES_PENDING).toString()) : null; - Long filesSkipped = - innerMap.containsKey(FILES_SKIPPED) ? Long.parseLong(innerMap.get(FILES_SKIPPED).toString()) : null; + Long dataOpsPending = parseSafeLong(innerMap, DATA); + Long metaOpsPending = parseSafeLong(innerMap, META); + Long entryOpsPending = parseSafeLong(innerMap, ENTRY); + Long failures = parseSafeLong(innerMap, FAILURES); + details.setDataOpsPending(dataOpsPending); + details.setMetaOpsPending(metaOpsPending); + details.setEntryOpsPending(entryOpsPending); + details.setFailures(failures); - details.setFilesPending(filesPending); - details.setFilesSkipped(filesSkipped); - details.setFilesSynced(filesSynced); - details.setBytesPending(bytesPending); - details.setDeletesPending(deletesPending); + if (innerMap.containsKey(CHECK_POINT_COMPLETED)) { + details.setCheckpointCompleted(Boolean.valueOf(innerMap.get(CHECK_POINT_COMPLETED).toString())); + } + String timezone = (innerMap.containsKey(TIMEZONE)) ? innerMap.get(TIMEZONE).toString() : null; + if (timezone != null) { + String lastSynced = (innerMap.containsKey(LAST_SYNCED)) ? innerMap.get(LAST_SYNCED).toString() : null; + String checkPointTime = + (innerMap.containsKey(CHECK_POINT_TIME)) ? innerMap.get(CHECK_POINT_TIME).toString() : null; + String checkPointCompletionTime = (innerMap.containsKey(CHECK_POINT_COMPLETION_TIME)) ? + innerMap.get(CHECK_POINT_COMPLETION_TIME).toString() : null; + DateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); + format.setTimeZone(TimeZone.getTimeZone(timezone)); + try { + details.setLastSyncedAt(format.parse(lastSynced)); + details.setCheckPointCompletedAt(format.parse(checkPointCompletionTime)); + details.setCheckPointTime(format.parse(checkPointTime)); + } catch (ParseException e) { + log.info("Error populating date fields for georep details for session '{}' of brick '{}' : {}", + details.getSlaveHostName(), + details.getMasterBrickId(), + e.getMessage()); + log.debug("Exception", e); + } + } + } + geoRepDetails.add(details); return details; } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java index f39f2f1..55abd29 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java @@ -19,7 +19,7 @@ public class GlusterVolumeGeoRepStatusForXmlRpc extends StatusReturnForXmlRpc { - private static final Logger log = LoggerFactory.getLogger(GlusterVolumeGeoRepStatusForXmlRpc.class); + protected static final Logger log = LoggerFactory.getLogger(GlusterVolumeGeoRepStatusForXmlRpc.class); protected static final String VOLUME_NAME = "volumeName"; protected static final String BRICKS = "bricks"; diff --git a/packaging/dbscripts/gluster_georep_sp.sql b/packaging/dbscripts/gluster_georep_sp.sql index 54154b1..b25c9cc 100644 --- a/packaging/dbscripts/gluster_georep_sp.sql +++ b/packaging/dbscripts/gluster_georep_sp.sql @@ -43,20 +43,25 @@ v_status VARCHAR(20), v_checkpoint_status VARCHAR(20), v_crawl_status VARCHAR(20), - v_files_synced BIGINT, - v_files_pending BIGINT, - v_bytes_pending BIGINT, - v_deletes_pending BIGINT, - v_files_skipped BIGINT) + v_data_pending BIGINT, + v_entry_pending BIGINT, + v_meta_pending BIGINT, + v_failures BIGINT, + v_last_synced_at TIMESTAMP, + v_checkpoint_time TIMESTAMP, + v_checkpoint_completed_time TIMESTAMP, + v_is_checkpoint_completed BOOLEAN) RETURNS VOID AS $procedure$ BEGIN INSERT INTO gluster_georep_session_details(session_id, master_brick_id, slave_host_name, - slave_host_uuid, status, checkpoint_status, crawl_status, files_synced, files_pending, - bytes_pending, deletes_pending, files_skipped) + slave_host_uuid, status, checkpoint_status, crawl_status, data_pending, entry_pending, + meta_pending, failures, last_synced_at, checkpoint_time, checkpoint_completed_time, + is_checkpoint_completed) VALUES (v_session_id, v_master_brick_id, v_slave_host_name, - v_slave_host_uuid, v_status, v_checkpoint_status, v_crawl_status, v_files_synced, v_files_pending, - v_bytes_pending, v_deletes_pending, v_files_skipped); + v_slave_host_uuid, v_status, v_checkpoint_status, v_crawl_status, v_data_pending, v_entry_pending, + v_meta_pending, v_failures, v_last_synced_at, v_checkpoint_time, v_checkpoint_completed_time, + v_is_checkpoint_completed); END; $procedure$ LANGUAGE plpgsql; @@ -67,11 +72,14 @@ v_status VARCHAR(20), v_checkpoint_status VARCHAR(20), v_crawl_status VARCHAR(20), - v_files_synced BIGINT, - v_files_pending BIGINT, - v_bytes_pending BIGINT, - v_deletes_pending BIGINT, - v_files_skipped BIGINT) + v_data_pending BIGINT, + v_entry_pending BIGINT, + v_meta_pending BIGINT, + v_failures BIGINT, + v_last_synced_at TIMESTAMP, + v_checkpoint_time TIMESTAMP, + v_checkpoint_completed_time TIMESTAMP, + v_is_checkpoint_completed BOOLEAN) RETURNS VOID AS $procedure$ BEGIN @@ -81,11 +89,14 @@ status = v_status, checkpoint_status = v_checkpoint_status, crawl_status = v_crawl_status, - files_synced = v_files_synced, - files_pending = v_files_pending, - bytes_pending = v_bytes_pending, - deletes_pending = v_deletes_pending, - files_skipped = v_files_skipped, + data_pending = v_data_pending, + entry_pending = v_entry_pending, + meta_pending = v_meta_pending, + failures = v_failures, + last_synced_at = v_last_synced_at, + checkpoint_time = v_checkpoint_time, + checkpoint_completed_time = v_checkpoint_completed_time, + is_checkpoint_completed = v_is_checkpoint_completed, _update_date = LOCALTIMESTAMP WHERE session_id = v_session_id AND master_brick_id = v_master_brick_id; END; $procedure$ @@ -192,10 +203,7 @@ RETURNS SETOF gluster_georep_session_details STABLE AS $procedure$ BEGIN - RETURN QUERY SELECT session_id, master_brick_id, slave_host_uuid, - slave_host_name, status, checkpoint_status, crawl_status, files_synced, files_pending, - bytes_pending, deletes_pending, files_skipped, _update_date - FROM gluster_georep_session_details + RETURN QUERY SELECT * FROM gluster_georep_session_details WHERE session_id = v_session_id order by slave_host_name asc; END; $procedure$ LANGUAGE plpgsql; @@ -205,10 +213,7 @@ RETURNS SETOF gluster_georep_session_details STABLE AS $procedure$ BEGIN - RETURN QUERY SELECT session_id, master_brick_id, slave_host_uuid, - slave_host_name, status, checkpoint_status, crawl_status, files_synced, files_pending, - bytes_pending, deletes_pending, files_skipped, _update_date - FROM gluster_georep_session_details + RETURN QUERY SELECT * FROM gluster_georep_session_details WHERE session_id = v_session_id AND master_brick_id = v_master_brick_id; END; $procedure$ LANGUAGE plpgsql; diff --git a/packaging/dbscripts/upgrade/03_06_1280_alter_georep_session_details.sql b/packaging/dbscripts/upgrade/03_06_1280_alter_georep_session_details.sql new file mode 100644 index 0000000..3f72d30 --- /dev/null +++ b/packaging/dbscripts/upgrade/03_06_1280_alter_georep_session_details.sql @@ -0,0 +1,16 @@ +select fn_db_drop_column('gluster_georep_session_details', 'files_synced'); +select fn_db_drop_column('gluster_georep_session_details', 'files_pending'); +select fn_db_drop_column('gluster_georep_session_details', 'bytes_pending'); +select fn_db_drop_column('gluster_georep_session_details', 'deletes_pending'); +select fn_db_drop_column('gluster_georep_session_details', 'files_skipped'); + +select fn_db_add_column('gluster_georep_session_details', 'data_pending', 'BIGINT NULL'); +select fn_db_add_column('gluster_georep_session_details', 'entry_pending', 'BIGINT NULL'); +select fn_db_add_column('gluster_georep_session_details', 'meta_pending', 'BIGINT NULL'); +select fn_db_add_column('gluster_georep_session_details', 'failures', 'BIGINT NULL'); +select fn_db_add_column('gluster_georep_session_details', 'last_synced_at', 'TIMESTAMP WITH TIME ZONE NULL'); +select fn_db_add_column('gluster_georep_session_details', 'checkpoint_time', 'TIMESTAMP WITH TIME ZONE NULL'); +select fn_db_add_column('gluster_georep_session_details', 'checkpoint_completed_time', 'TIMESTAMP WITH TIME ZONE NULL'); +select fn_db_add_column('gluster_georep_session_details', 'is_checkpoint_completed', 'BOOLEAN DEFAULT FALSE'); + + -- To view, visit https://gerrit.ovirt.org/40207 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id05fa1d8537bcd3a0a80f1765f142dab575f43ba Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sahina Bose <sab...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches