You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mh...@apache.org on 2016/10/21 17:19:14 UTC
asterixdb git commit: ASTERIXDB-1701: Fix log file boundry check
Repository: asterixdb
Updated Branches:
refs/heads/master 8eea4b591 -> 8e043cfa1
ASTERIXDB-1701: Fix log file boundry check
Change-Id: I538a8b931f3d50a00b092f218887a9731d14e235
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1306
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Ian Maxon <im...@apache.org>
Reviewed-by: Michael Blow <mb...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/8e043cfa
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/8e043cfa
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/8e043cfa
Branch: refs/heads/master
Commit: 8e043cfa1ea7a16463cc823a922deb92505fa55c
Parents: 8eea4b5
Author: Murtadha Hubail <mh...@uci.edu>
Authored: Thu Oct 20 20:25:37 2016 +0300
Committer: Murtadha Hubail <hu...@gmail.com>
Committed: Fri Oct 21 10:15:39 2016 -0700
----------------------------------------------------------------------
.../management/service/logging/LogManager.java | 21 ++++++++++++--------
.../logging/LogManagerWithReplication.java | 12 +++++------
2 files changed, 19 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/8e043cfa/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManager.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManager.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManager.java
index 7f74f52..7d61462 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManager.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManager.java
@@ -81,8 +81,8 @@ public class LogManager implements ILogManager, ILifeCycleComponent {
public LogManager(TransactionSubsystem txnSubsystem) {
this.txnSubsystem = txnSubsystem;
- logManagerProperties =
- new LogManagerProperties(this.txnSubsystem.getTransactionProperties(), this.txnSubsystem.getId());
+ logManagerProperties = new LogManagerProperties(this.txnSubsystem.getTransactionProperties(),
+ this.txnSubsystem.getId());
logFileSize = logManagerProperties.getLogPartitionSize();
logPageSize = logManagerProperties.getLogPageSize();
numLogPages = logManagerProperties.getNumLogPages();
@@ -157,12 +157,12 @@ public class LogManager implements ILogManager, ILifeCycleComponent {
* written at the last offset of the current file.
*/
final int logSize = logRecord.getLogSize();
- if (!appendPage.hasSpace(logSize)) {
- if (getLogFileOffset(appendLSN.get()) + logSize >= logFileSize) {
- prepareNextLogFile();
- }
- appendPage.isFull(true);
- getAndInitNewPage(logSize);
+ // Make sure the log will not exceed the log file size
+ if (getLogFileOffset(appendLSN.get()) + logSize >= logFileSize) {
+ prepareNextLogFile();
+ prepareNextPage(logSize);
+ } else if (!appendPage.hasSpace(logSize)) {
+ prepareNextPage(logSize);
}
appendPage.append(logRecord, appendLSN.get());
@@ -175,6 +175,11 @@ public class LogManager implements ILogManager, ILifeCycleComponent {
appendLSN.addAndGet(logSize);
}
+ protected void prepareNextPage(int logSize) {
+ appendPage.isFull(true);
+ getAndInitNewPage(logSize);
+ }
+
protected void getAndInitNewPage(int logSize) {
if (logSize > logPageSize) {
// for now, alloc a new buffer for each large page
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/8e043cfa/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java
index f27c13f..c81225f 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java
@@ -99,12 +99,12 @@ public class LogManagerWithReplication extends LogManager {
}
final int logRecordSize = logRecord.getLogSize();
- if (!appendPage.hasSpace(logRecordSize)) {
- if (getLogFileOffset(appendLSN.get()) + logRecordSize > logFileSize) {
- prepareNextLogFile();
- }
- appendPage.isFull(true);
- getAndInitNewPage(logRecordSize);
+ // Make sure the log will not exceed the log file size
+ if (getLogFileOffset(appendLSN.get()) + logRecordSize >= logFileSize) {
+ prepareNextLogFile();
+ prepareNextPage(logRecordSize);
+ } else if (!appendPage.hasSpace(logRecordSize)) {
+ prepareNextPage(logRecordSize);
}
appendPage.appendWithReplication(logRecord, appendLSN.get());