|
From: <tho...@us...> - 2014-04-06 15:09:20
|
Revision: 8061
http://sourceforge.net/p/bigdata/code/8061
Author: thompsonbry
Date: 2014-04-06 15:09:14 +0000 (Sun, 06 Apr 2014)
Log Message:
-----------
Reconciled my version and Martyns with respect to the HA1/HA5 edits.
See #721 (HA1)
See #722 (HA5)
Modified Paths:
--------------
branches/BIGDATA_MGC_HA1_HA5/bigdata/src/java/com/bigdata/journal/AbstractJournal.java
branches/BIGDATA_MGC_HA1_HA5/bigdata/src/java/com/bigdata/rwstore/RWStore.java
branches/BIGDATA_MGC_HA1_HA5/bigdata-jini/src/java/com/bigdata/journal/jini/ha/HARestore.java
branches/BIGDATA_MGC_HA1_HA5/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/SD.java
branches/BIGDATA_MGC_HA1_HA5/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/StatusServlet.java
Modified: branches/BIGDATA_MGC_HA1_HA5/bigdata/src/java/com/bigdata/journal/AbstractJournal.java
===================================================================
--- branches/BIGDATA_MGC_HA1_HA5/bigdata/src/java/com/bigdata/journal/AbstractJournal.java 2014-04-05 15:59:33 UTC (rev 8060)
+++ branches/BIGDATA_MGC_HA1_HA5/bigdata/src/java/com/bigdata/journal/AbstractJournal.java 2014-04-06 15:09:14 UTC (rev 8061)
@@ -3555,13 +3555,17 @@
* file.
*/
final QuorumService<HAGlue> localService = quorum.getClient();
- try {
- localService.logRootBlock(newRootBlock);
- } catch (IOException e) {
- throw new RuntimeException(e);
+ if (localService != null) {
+ // Quorum service not asynchronously closed.
+ try {
+ // Write the closing root block on the HALog file.
+ localService.logRootBlock(newRootBlock);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
}
}
-
+
if (txLog.isInfoEnabled())
txLog.info("COMMIT: commitTime=" + commitTime);
@@ -3812,7 +3816,7 @@
if (log.isInfoEnabled())
log.info("commitTime=" + commitTime);
- final CommitState cs = new CommitState(this, commitTime);
+ final CommitState cs = new CommitState(this, commitTime);
/*
* Flush application data, decide whether or not the store is dirty,
@@ -3828,7 +3832,6 @@
}
// Do GATHER (iff HA).
-
cs.gatherPhase();
/*
@@ -3872,7 +3875,7 @@
// Non-HA mode.
cs.commitSimple();
- } else {
+ } else {
// HA mode commit (2-phase commit).
cs.commitHA();
Modified: branches/BIGDATA_MGC_HA1_HA5/bigdata/src/java/com/bigdata/rwstore/RWStore.java
===================================================================
--- branches/BIGDATA_MGC_HA1_HA5/bigdata/src/java/com/bigdata/rwstore/RWStore.java 2014-04-05 15:59:33 UTC (rev 8060)
+++ branches/BIGDATA_MGC_HA1_HA5/bigdata/src/java/com/bigdata/rwstore/RWStore.java 2014-04-06 15:09:14 UTC (rev 8061)
@@ -1080,8 +1080,8 @@
private RWWriteCacheService newWriteCacheService() {
try {
- final boolean highlyAvailable = m_quorum != null
- && m_quorum.isHighlyAvailable();
+// final boolean highlyAvailable = m_quorum != null
+// && m_quorum.isHighlyAvailable();
final boolean prefixWrites = m_quorum != null; // highlyAvailable
@@ -1089,7 +1089,8 @@
m_minCleanListSize, m_readCacheBufferCount, prefixWrites, m_compactionThreshold, m_hotCacheSize, m_hotCacheThreshold,
convertAddr(m_fileSize), m_reopener, m_quorum, this) {
-
+
+ @Override
@SuppressWarnings("unchecked")
public WriteCache newWriteCache(final IBufferAccess buf,
final boolean useChecksum,
Modified: branches/BIGDATA_MGC_HA1_HA5/bigdata-jini/src/java/com/bigdata/journal/jini/ha/HARestore.java
===================================================================
--- branches/BIGDATA_MGC_HA1_HA5/bigdata-jini/src/java/com/bigdata/journal/jini/ha/HARestore.java 2014-04-05 15:59:33 UTC (rev 8060)
+++ branches/BIGDATA_MGC_HA1_HA5/bigdata-jini/src/java/com/bigdata/journal/jini/ha/HARestore.java 2014-04-06 15:09:14 UTC (rev 8061)
@@ -517,10 +517,11 @@
final long commitCounter = SnapshotManager
.parseCommitCounterFile(journalFile.getName());
+ // TODO Note: Accept version from main development branch when merging versions.
// temporary file in the same directory as the snapshot.
- final File out = File.createTempFile("" + commitCounter + "-",
- Journal.Options.JNL, journalFile.getAbsoluteFile()
- .getParentFile());
+ final File out = File.createTempFile("HARestore-TMP"
+ + commitCounter + "-", Journal.Options.JNL, journalFile
+ .getAbsoluteFile().getParentFile());
System.out.println("Decompressing " + in + " to " + out);
Modified: branches/BIGDATA_MGC_HA1_HA5/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/SD.java
===================================================================
--- branches/BIGDATA_MGC_HA1_HA5/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/SD.java 2014-04-05 15:59:33 UTC (rev 8060)
+++ branches/BIGDATA_MGC_HA1_HA5/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/SD.java 2014-04-06 15:09:14 UTC (rev 8061)
@@ -164,12 +164,29 @@
+ "KB/IsolatableIndices");
/**
- * A highly available deployment.
+ * A highly available deployment - this feature refers to the presence of
+ * the {@link HAGlue} interface, the capability for online backups, and the
+ * existence of a targer {@link #ReplicationFactor}. You must consult the
+ * target {@link #ReplicationFactor} in order to determine whether the
+ * database is in principle capable of tolerating one or more failures and
+ * the actual #of running joined instances to determine whether the database
+ * can withstand a failure.
*/
static public final URI HighlyAvailable = new URIImpl(BDFNS
+ "HighlyAvailable");
/**
+ * The value of this feature is the target replication factor for the
+ * database expressed as an <code>xsd:int</code>. If this is ONE (1), then
+ * the database is setup with a quorum and has the capability for online
+ * backup, but it is not replicated. TWO (2) indicates mirroring, but is not
+ * highly available. THREE (3) is the minimum configuration that can
+ * withstand a failure.
+ */
+ static public final URI ReplicationFactor = new URIImpl(BDFNS
+ + "replicationCount");
+
+ /**
* An {@link IBigdataFederation}.
*/
static public final URI ScaleOut = new URIImpl(BDFNS
@@ -647,8 +664,13 @@
final Quorum<HAGlue, QuorumService<HAGlue>> quorum = jnl
.getQuorum();
- if (quorum != null && quorum.isHighlyAvailable()) {
+ if (quorum != null) {
+ final int k = quorum.replicationFactor();
+
+ g.add(aService, SD.ReplicationFactor, tripleStore
+ .getValueFactory().createLiteral(k));
+
g.add(aService, SD.feature, HighlyAvailable);
}
Modified: branches/BIGDATA_MGC_HA1_HA5/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/StatusServlet.java
===================================================================
--- branches/BIGDATA_MGC_HA1_HA5/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/StatusServlet.java 2014-04-05 15:59:33 UTC (rev 8060)
+++ branches/BIGDATA_MGC_HA1_HA5/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/StatusServlet.java 2014-04-06 15:09:14 UTC (rev 8061)
@@ -505,7 +505,7 @@
final Quorum<HAGlue, QuorumService<HAGlue>> quorum = ((AbstractJournal) getIndexManager())
.getQuorum();
- if (quorum != null && quorum.isHighlyAvailable()) {
+ if (quorum != null) {//&& quorum.isHighlyAvailable()) {
new HAStatusServletUtil(getIndexManager()).doGet(req, resp,
current);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|