You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/06/02 15:28:13 UTC
[1/2] activemq-artemis git commit: ARTEMIS-1204 Fix getSize() on a
closed JDBC File
Repository: activemq-artemis
Updated Branches:
refs/heads/master 6314b1766 -> 2aeb79710
ARTEMIS-1204 Fix getSize() on a closed JDBC File
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/e7c426c5
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/e7c426c5
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/e7c426c5
Branch: refs/heads/master
Commit: e7c426c5e112600254252d3565c87ab8d97320bb
Parents: 6314b17
Author: Martyn Taylor <mt...@redhat.com>
Authored: Fri Jun 2 14:50:37 2017 +0100
Committer: Martyn Taylor <mt...@redhat.com>
Committed: Fri Jun 2 14:59:53 2017 +0100
----------------------------------------------------------------------
.../jdbc/store/file/JDBCSequentialFile.java | 24 +++++++++-------
.../file/JDBCSequentialFileFactoryTest.java | 30 ++++++++++++++++++++
2 files changed, 44 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e7c426c5/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java
----------------------------------------------------------------------
diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java
index b8ed3f0..018000d 100644
--- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java
+++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java
@@ -45,7 +45,7 @@ public class JDBCSequentialFile implements SequentialFile {
private boolean isOpen = false;
- private boolean isCreated = false;
+ private boolean isLoaded = false;
private long id = -1;
@@ -88,7 +88,7 @@ public class JDBCSequentialFile implements SequentialFile {
@Override
public boolean exists() {
- if (isCreated) return true;
+ if (isLoaded) return true;
try {
return fileFactory.listFiles(extension).contains(filename);
} catch (Exception e) {
@@ -100,12 +100,16 @@ public class JDBCSequentialFile implements SequentialFile {
@Override
public void open() throws Exception {
+ load();
+ isOpen = true;
+ }
+
+ private void load() {
try {
- if (!isOpen) {
- synchronized (writeLock) {
+ synchronized (writeLock) {
+ if (!isLoaded) {
dbDriver.openFile(this);
- isCreated = true;
- isOpen = true;
+ isLoaded = true;
}
}
} catch (SQLException e) {
@@ -141,10 +145,9 @@ public class JDBCSequentialFile implements SequentialFile {
@Override
public void delete() throws IOException, InterruptedException, ActiveMQException {
try {
- if (isCreated) {
- synchronized (writeLock) {
- dbDriver.deleteFile(this);
- }
+ synchronized (writeLock) {
+ load();
+ dbDriver.deleteFile(this);
}
} catch (SQLException e) {
fileFactory.onIOError(e, "Error deleting JDBC file.", this);
@@ -298,6 +301,7 @@ public class JDBCSequentialFile implements SequentialFile {
@Override
public long size() throws Exception {
+ load();
return writePosition;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e7c426c5/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java
----------------------------------------------------------------------
diff --git a/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java b/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java
index 0800870..d763709 100644
--- a/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java
+++ b/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java
@@ -186,6 +186,36 @@ public class JDBCSequentialFileFactoryTest {
assertEquals(bufferSize, file.size());
}
+ /**
+ * Using a real file system users are not required to call file.open() in order to read the file size. The file
+ * descriptor has enough information. However, with JDBC we do require that some information is loaded in order to
+ * get the underlying BLOB. This tests ensures that file.size() returns the correct value, without the user calling
+ * file.open() with JDBCSequentialFile.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testGetFileSizeWorksWhenNotOpen() throws Exception {
+ // Create test file with some data.
+ int testFileSize = 1024;
+ String fileName = "testFile.txt";
+ SequentialFile file = factory.createSequentialFile(fileName);
+ file.open();
+
+ // Write some data to the file
+ ActiveMQBuffer buffer = ActiveMQBuffers.wrappedBuffer(new byte[1024]);
+ file.write(buffer, true);
+ file.close();
+
+ try {
+ // Create a new pointer to the test file and ensure file.size() returns the correct value.
+ SequentialFile file2 = factory.createSequentialFile(fileName);
+ assertEquals(testFileSize, file2.size());
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+
private void checkData(JDBCSequentialFile file, ActiveMQBuffer expectedData) throws SQLException {
expectedData.resetReaderIndex();
[2/2] activemq-artemis git commit: This closes #1313
Posted by cl...@apache.org.
This closes #1313
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/2aeb7971
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/2aeb7971
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/2aeb7971
Branch: refs/heads/master
Commit: 2aeb797108d5e9f73de2afb9293e292058c1f2c5
Parents: 6314b17 e7c426c
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Jun 2 11:28:03 2017 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Jun 2 11:28:03 2017 -0400
----------------------------------------------------------------------
.../jdbc/store/file/JDBCSequentialFile.java | 24 +++++++++-------
.../file/JDBCSequentialFileFactoryTest.java | 30 ++++++++++++++++++++
2 files changed, 44 insertions(+), 10 deletions(-)
----------------------------------------------------------------------