Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Murtadha Hubail has submitted this change and it was merged. Change subject: Replace Java serialization in checkpoints by Json .. Replace Java serialization in checkpoints by Json Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Reviewed-on: https://asterix-gerrit.ics.uci.edu/1457 Reviewed-by: Till WestmannSonar-Qube: Jenkins Tested-by: Jenkins BAD: Jenkins Integration-Tests: Jenkins Reviewed-by: abdullah alamoudi --- M asterixdb/asterix-common/pom.xml M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java M asterixdb/pom.xml 4 files changed, 50 insertions(+), 22 deletions(-) Approvals: abdullah alamoudi: Looks good to me, approved Till Westmann: Looks good to me, but someone else must approve Jenkins: Verified; No violations found; No violations found; Verified diff --git a/asterixdb/asterix-common/pom.xml b/asterixdb/asterix-common/pom.xml index cb5075a..7df1da6 100644 --- a/asterixdb/asterix-common/pom.xml +++ b/asterixdb/asterix-common/pom.xml @@ -311,6 +311,10 @@ org.apache.hyracks hyracks-data-std + + com.fasterxml.jackson.core + jackson-annotations + diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java index 8bbdab7..a74898e 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java @@ -18,11 +18,16 @@ */ package org.apache.asterix.common.transactions; -import java.io.Serializable; +import java.io.IOException; -public class Checkpoint implements Serializable, Comparable { +import org.apache.hyracks.api.exceptions.HyracksDataException; -private static final long serialVersionUID = 1L; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class Checkpoint implements Comparable { private final long checkpointLsn; private final long minMCTFirstLsn; @@ -31,8 +36,11 @@ private final boolean sharp; private final int storageVersion; -public Checkpoint(long checkpointLsn, long minMCTFirstLsn, int maxJobId, long timeStamp, boolean sharp, -int storageVersion) { +@JsonCreator +public Checkpoint(@JsonProperty("checkpointLsn") long checkpointLsn, +@JsonProperty("minMCTFirstLsn") long minMCTFirstLsn, @JsonProperty("maxJobId") int maxJobId, +@JsonProperty("timeStamp") long timeStamp, @JsonProperty("sharp") boolean sharp, +@JsonProperty("storageVersion") int storageVersion) { this.checkpointLsn = checkpointLsn; this.minMCTFirstLsn = minMCTFirstLsn; this.maxJobId = maxJobId; @@ -107,4 +115,20 @@ result = prime * result + (int) (timeStamp ^ (timeStamp >>> 32)); return result; } -} + +public String asJson() throws HyracksDataException { +try { +return new ObjectMapper().writeValueAsString(this); +} catch (JsonProcessingException e) { +throw new HyracksDataException(e); +} +} + +public static Checkpoint fromJson(String json) throws HyracksDataException { +try { +return new ObjectMapper().readValue(json, Checkpoint.class); +} catch (IOException e) { +throw new HyracksDataException(e); +} +} +} \ No newline at end of file diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java index 0b86ea5..d2650e9 100644 --- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java +++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java @@ -18,14 +18,14 @@ */ package org.apache.asterix.transaction.management.service.recovery; +import java.io.BufferedWriter; import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; -import
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
abdullah alamoudi has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 3: Code-Review+2 -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 3: Integration-Tests+1 Integration Tests Successful https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/1679/ : SUCCESS -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 3: BAD+1 BAD Compatibility Tests Successful https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/356/ : SUCCESS -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 3: BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/356/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 3: Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/1679/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Till Westmann has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 3: Code-Review+1 Looks good to me, hope Abdullah likes it :) -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Till Westmann has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 2: (1 comment) https://asterix-gerrit.ics.uci.edu/#/c/1457/2/asterixdb/asterix-common/pom.xml File asterixdb/asterix-common/pom.xml: Line 317: 2.8.0 > Done (at least I think) Looks good. -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: Yes
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Murtadha Hubail has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 2: (3 comments) https://asterix-gerrit.ics.uci.edu/#/c/1457/2/asterixdb/asterix-common/pom.xml File asterixdb/asterix-common/pom.xml: Line 317: 2.8.0 > Add the version to dependency management in the root pom. Done (at least I think) https://asterix-gerrit.ics.uci.edu/#/c/1457/2/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java: Line 120: final ObjectMapper mapper = new ObjectMapper(); > inline this variable? Done Line 129: final ObjectMapper mapper = new ObjectMapper(); > inline this variable? Done -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: Yes
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Hello Jenkins, I'd like you to reexamine a change. Please visit https://asterix-gerrit.ics.uci.edu/1457 to look at the new patch set (#3). Change subject: Replace Java serialization in checkpoints by Json .. Replace Java serialization in checkpoints by Json Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 --- M asterixdb/asterix-common/pom.xml M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java M asterixdb/pom.xml 4 files changed, 50 insertions(+), 22 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/57/1457/3 -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Till Westmann has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 2: (3 comments) https://asterix-gerrit.ics.uci.edu/#/c/1457/2/asterixdb/asterix-common/pom.xml File asterixdb/asterix-common/pom.xml: Line 317: 2.8.0 Add the version to dependency management in the root pom. https://asterix-gerrit.ics.uci.edu/#/c/1457/2/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java: Line 120: final ObjectMapper mapper = new ObjectMapper(); inline this variable? Line 129: final ObjectMapper mapper = new ObjectMapper(); inline this variable? -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: Yes
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 2: Integration-Tests+1 Integration Tests Successful https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/1668/ : SUCCESS -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 2: BAD+1 BAD Compatibility Tests Successful https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/348/ : SUCCESS -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 2: Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/1668/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 2: BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/348/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 2: Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/4002/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Murtadha Hubail has uploaded a new patch set (#2). Change subject: Replace Java serialization in checkpoints by Json .. Replace Java serialization in checkpoints by Json Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 --- M asterixdb/asterix-common/pom.xml M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java 3 files changed, 48 insertions(+), 22 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/57/1457/2 -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Jenkins has posted comments on this change. Change subject: Replace Java serialization in checkpoints by Json .. Patch Set 1: Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/4001/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1457 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha HubailGerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Replace Java serialization in checkpoints by Json
Murtadha Hubail has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/1457 Change subject: Replace Java serialization in checkpoints by Json .. Replace Java serialization in checkpoints by Json Change-Id: Id4353716267d45ce21580ac2856b6a552d05d1f7 --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java M asterixdb/asterix-common/pom.xml M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java 4 files changed, 49 insertions(+), 23 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/57/1457/1 diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java index bdce0ca..1df94d9 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java @@ -30,8 +30,8 @@ import java.util.logging.Level; import java.util.logging.Logger; -import org.apache.asterix.common.config.PropertiesAccessor; import org.apache.asterix.common.config.GlobalConfig; +import org.apache.asterix.common.config.PropertiesAccessor; import org.apache.asterix.common.exceptions.AsterixException; import org.apache.asterix.hyracks.bootstrap.CCApplicationEntryPoint; import org.apache.asterix.hyracks.bootstrap.NCApplicationEntryPoint; diff --git a/asterixdb/asterix-common/pom.xml b/asterixdb/asterix-common/pom.xml index cb5075a..f13f64d 100644 --- a/asterixdb/asterix-common/pom.xml +++ b/asterixdb/asterix-common/pom.xml @@ -311,6 +311,11 @@ org.apache.hyracks hyracks-data-std + + com.fasterxml.jackson.core + jackson-annotations + 2.8.0 + diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java index 8bbdab7..dc38392 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/Checkpoint.java @@ -18,11 +18,16 @@ */ package org.apache.asterix.common.transactions; -import java.io.Serializable; +import java.io.IOException; -public class Checkpoint implements Serializable, Comparable { +import org.apache.hyracks.api.exceptions.HyracksDataException; -private static final long serialVersionUID = 1L; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class Checkpoint implements Comparable { private final long checkpointLsn; private final long minMCTFirstLsn; @@ -31,8 +36,11 @@ private final boolean sharp; private final int storageVersion; -public Checkpoint(long checkpointLsn, long minMCTFirstLsn, int maxJobId, long timeStamp, boolean sharp, -int storageVersion) { +@JsonCreator +public Checkpoint(@JsonProperty("checkpointLsn") long checkpointLsn, +@JsonProperty("minMCTFirstLsn") long minMCTFirstLsn, @JsonProperty("maxJobId") int maxJobId, +@JsonProperty("timeStamp") long timeStamp, @JsonProperty("sharp") boolean sharp, +@JsonProperty("storageVersion") int storageVersion) { this.checkpointLsn = checkpointLsn; this.minMCTFirstLsn = minMCTFirstLsn; this.maxJobId = maxJobId; @@ -107,4 +115,22 @@ result = prime * result + (int) (timeStamp ^ (timeStamp >>> 32)); return result; } -} + +public String asJson() throws HyracksDataException { +final ObjectMapper mapper = new ObjectMapper(); +try { +return mapper.writeValueAsString(this); +} catch (JsonProcessingException e) { +throw new HyracksDataException(e); +} +} + +public static Checkpoint fromJson(String json) throws HyracksDataException { +final ObjectMapper mapper = new ObjectMapper(); +try { +return mapper.readValue(json, Checkpoint.class); +} catch (IOException e) { +throw new HyracksDataException(e); +} +} +} \ No newline at end of file diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java