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. |