You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2019/04/10 12:15:47 UTC
[qpid-broker-j] branch 7.1.x updated: QPID-8297: [Broker-J][Oracle
Message Store] QPID_MESSAGE_CONTENT reserved space keeps growing
This is an automated email from the ASF dual-hosted git repository.
orudyy pushed a commit to branch 7.1.x
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git
The following commit(s) were added to refs/heads/7.1.x by this push:
new 3df0648 QPID-8297: [Broker-J][Oracle Message Store] QPID_MESSAGE_CONTENT reserved space keeps growing
3df0648 is described below
commit 3df0648436ec30e53444c08368828acd2da5b0df
Author: overmeulen <ov...@murex.com>
AuthorDate: Fri Apr 5 22:12:56 2019 +0200
QPID-8297: [Broker-J][Oracle Message Store] QPID_MESSAGE_CONTENT reserved space keeps growing
This closes #24
(cherry picked from commit 9eb98551eb923430405e409b239cc52563b32f99)
---
.../store/derby/AbstractDerbyMessageStore.java | 6 ++++
.../store/derby/DerbyConfigurationStore.java | 6 ++++
.../store/jdbc/AbstractJDBCConfigurationStore.java | 2 ++
.../store/jdbc/AbstractJDBCMessageStore.java | 8 +++--
.../store/jdbc/GenericJDBCConfigurationStore.java | 14 ++++++++
.../server/store/jdbc/GenericJDBCMessageStore.java | 8 +++++
.../apache/qpid/server/store/jdbc/JDBCDetails.java | 41 +++++++++++++++++-----
.../qpid/server/store/jdbc/JDBCDetailsTest.java | 32 ++++++++++++++---
8 files changed, 102 insertions(+), 15 deletions(-)
diff --git a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/AbstractDerbyMessageStore.java b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/AbstractDerbyMessageStore.java
index d5a4de6..17b031c 100644
--- a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/AbstractDerbyMessageStore.java
+++ b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/AbstractDerbyMessageStore.java
@@ -126,6 +126,12 @@ public abstract class AbstractDerbyMessageStore extends AbstractJDBCMessageStore
}
@Override
+ protected String getSqlBlobStorage(String columnName)
+ {
+ return "";
+ }
+
+ @Override
protected String getSqlVarBinaryType(int size)
{
return "varchar("+size+") for bit data";
diff --git a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
index 222306a..856ee2a 100644
--- a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
+++ b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
@@ -130,6 +130,12 @@ public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore
}
@Override
+ protected String getSqlBlobStorage(String columnName)
+ {
+ return "";
+ }
+
+ @Override
protected String getSqlVarBinaryType(int size)
{
return "varchar("+size+") for bit data";
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCConfigurationStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCConfigurationStore.java
index 1b57755..93b94e1 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCConfigurationStore.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCConfigurationStore.java
@@ -588,6 +588,8 @@ public abstract class AbstractJDBCConfigurationStore implements MessageStoreProv
protected abstract String getSqlBlobType();
+ protected abstract String getSqlBlobStorage(String columnName);
+
protected abstract String getSqlVarBinaryType(int size);
protected abstract String getSqlBigIntType();
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
index 171a2f9..d7a391b 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
@@ -252,6 +252,8 @@ public abstract class AbstractJDBCMessageStore implements MessageStore
protected abstract String getSqlBlobType();
+ protected abstract String getSqlBlobStorage(String columnName);
+
protected abstract String getSqlVarBinaryType(int size);
protected abstract String getSqlBigIntType();
@@ -317,7 +319,8 @@ public abstract class AbstractJDBCMessageStore implements MessageStore
+ getSqlBigIntType()
+ " not null, meta_data "
+ getSqlBlobType()
- + ", PRIMARY KEY ( message_id ) )");
+ + ", PRIMARY KEY ( message_id ) ) "
+ + getSqlBlobStorage("meta_data"));
}
}
@@ -335,7 +338,8 @@ public abstract class AbstractJDBCMessageStore implements MessageStore
+ getSqlBigIntType()
+ " not null, content "
+ getSqlBlobType()
- + ", PRIMARY KEY (message_id) )");
+ + ", PRIMARY KEY (message_id) ) "
+ + getSqlBlobStorage("content"));
}
}
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
index e2a67be..1b86631 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
@@ -56,6 +56,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
private ConnectionProvider _connectionProvider;
private String _blobType;
+ private String _blobStorage;
private String _varBinaryType;
private String _bigIntType;
private boolean _useBytesMethodsForBlob;
@@ -95,6 +96,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
_connectionProvider = JdbcUtils.createConnectionProvider(parent, LOGGER);
_blobType = details.getBlobType();
+ _blobStorage = details.getBlobStorage();
_varBinaryType = details.getVarBinaryType();
_useBytesMethodsForBlob = details.isUseBytesMethodsForBlob();
_bigIntType = details.getBigintType();
@@ -166,6 +168,12 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
}
@Override
+ protected String getSqlBlobStorage(String columnName)
+ {
+ return String.format(_blobStorage, columnName);
+ }
+
+ @Override
protected String getSqlVarBinaryType(int size)
{
return String.format(_varBinaryType, size);
@@ -298,6 +306,12 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
}
@Override
+ protected String getSqlBlobStorage(String columnName)
+ {
+ return GenericJDBCConfigurationStore.this.getSqlBlobStorage(columnName);
+ }
+
+ @Override
protected String getSqlVarBinaryType(int size)
{
return GenericJDBCConfigurationStore.this.getSqlVarBinaryType(size);
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
index 9b13da3..694ae5b 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
@@ -49,6 +49,7 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
private ConnectionProvider _connectionProvider;
private String _blobType;
+ private String _blobStorage;
private String _varBinaryType;
private String _bigIntType;
private boolean _useBytesMethodsForBlob;
@@ -73,6 +74,7 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
}
_blobType = details.getBlobType();
+ _blobStorage = details.getBlobStorage();
_varBinaryType = details.getVarBinaryType();
_useBytesMethodsForBlob = details.isUseBytesMethodsForBlob();
_bigIntType = details.getBigintType();
@@ -119,6 +121,12 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
}
@Override
+ protected String getSqlBlobStorage(String columnName)
+ {
+ return String.format(_blobStorage, columnName);
+ }
+
+ @Override
protected String getSqlVarBinaryType(int size)
{
return String.format(_varBinaryType, size);
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCDetails.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCDetails.java
index b97269f..31c9dd0 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCDetails.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCDetails.java
@@ -34,6 +34,7 @@ public abstract class JDBCDetails
public static final String CONTEXT_JDBCSTORE_BIGINTTYPE = "qpid.jdbcstore.bigIntType";
public static final String CONTEXT_JDBCSTORE_VARBINARYTYPE = "qpid.jdbcstore.varBinaryType";
public static final String CONTEXT_JDBCSTORE_BLOBTYPE = "qpid.jdbcstore.blobType";
+ public static final String CONTEXT_JDBCSTORE_BLOBSTORAGE = "qpid.jdbcstore.blobStorage";
public static final String CONTEXT_JDBCSTORE_TIMESTAMPTYPE = "qpid.jdbcstore.timestampType";
public static final String CONTEXT_JDBCSTORE_USEBYTESFORBLOB = "qpid.jdbcstore.useBytesForBlob";
@@ -41,6 +42,8 @@ public abstract class JDBCDetails
public abstract String getBlobType();
+ public abstract String getBlobStorage();
+
public abstract String getVarBinaryType();
public abstract String getBigintType();
@@ -55,19 +58,19 @@ public abstract class JDBCDetails
static class KnownJDBCDetails extends JDBCDetails
{
- private static final JDBCDetails FALLBACK = new KnownJDBCDetails("fallback", "blob", "varchar(%d) for bit data", "bigint", "timestamp",
+ private static final JDBCDetails FALLBACK = new KnownJDBCDetails("fallback", "blob", "", "varchar(%d) for bit data", "bigint", "timestamp",
false, false);
- private static final JDBCDetails ORACLE = new KnownJDBCDetails("oracle", "blob", "raw(%d)", "number", "timestamp",
+ private static final JDBCDetails ORACLE = new KnownJDBCDetails("oracle", "blob", "LOB (%s) STORE AS SECUREFILE (RETENTION NONE)", "raw(%d)", "number", "timestamp",
false, true);
- private static final JDBCDetails SYBASE = new KnownJDBCDetails("sybase", "image null", "varbinary(%d)", "bigint", "datetime",
+ private static final JDBCDetails SYBASE = new KnownJDBCDetails("sybase", "image null", "", "varbinary(%d)", "bigint", "datetime",
false, true);
- private static final JDBCDetails POSTGRES = new KnownJDBCDetails("postgresql", "bytea", "bytea", "bigint", "timestamp",
+ private static final JDBCDetails POSTGRES = new KnownJDBCDetails("postgresql", "bytea", "", "bytea", "bigint", "timestamp",
true, true);
- private static final JDBCDetails DERBY = new KnownJDBCDetails("derby", "blob", "varchar(%d) for bit data", "bigint", "timestamp",
+ private static final JDBCDetails DERBY = new KnownJDBCDetails("derby", "blob", "", "varchar(%d) for bit data", "bigint", "timestamp",
false, true);
- private static final JDBCDetails MYSQL = new KnownJDBCDetails("mysql", "longblob", "varbinary(%d)", "bigint", "timestamp",
+ private static final JDBCDetails MYSQL = new KnownJDBCDetails("mysql", "longblob", "", "varbinary(%d)", "bigint", "timestamp",
false, true);
- private static final JDBCDetails MARIA_DB = new KnownJDBCDetails("mariadb", "longblob", "varbinary(%d)", "bigint", "timestamp",
+ private static final JDBCDetails MARIA_DB = new KnownJDBCDetails("mariadb", "longblob", "", "varbinary(%d)", "bigint", "timestamp",
false, true);
static
@@ -94,6 +97,7 @@ public abstract class JDBCDetails
private final String _vendor;
private final String _blobType;
+ private final String _blobStorage;
private final String _varBinaryType;
private final String _bigintType;
private final String _timestampType;
@@ -102,6 +106,7 @@ public abstract class JDBCDetails
KnownJDBCDetails(String vendor,
String blobType,
+ String blobStorage,
String varBinaryType,
String bigIntType,
String timestampType,
@@ -110,6 +115,7 @@ public abstract class JDBCDetails
{
_vendor = vendor;
_blobType = blobType;
+ _blobStorage = blobStorage;
_varBinaryType = varBinaryType;
_bigintType = bigIntType;
_timestampType = timestampType;
@@ -130,6 +136,12 @@ public abstract class JDBCDetails
}
@Override
+ public String getBlobStorage()
+ {
+ return _blobStorage;
+ }
+
+ @Override
public String getVarBinaryType()
{
return _varBinaryType;
@@ -173,6 +185,7 @@ public abstract class JDBCDetails
return "JDBCDetails{" +
"vendor='" + getVendor() + '\'' +
", blobType='" + getBlobType() + '\'' +
+ ", blobStorage='" + getBlobStorage() + '\'' +
", varBinaryType='" + getVarBinaryType() + '\'' +
", bigIntType='" + getBigintType() + '\'' +
", timestampType='" + getTimestampType() + '\'' +
@@ -216,6 +229,10 @@ public abstract class JDBCDetails
{
return false;
}
+ if (getBlobStorage() != null ? !getBlobStorage().equals(that.getBlobStorage()) : that.getBlobStorage() != null)
+ {
+ return false;
+ }
if (getVarBinaryType() != null ? !getVarBinaryType().equals(that.getVarBinaryType()) : that.getVarBinaryType() != null)
{
return false;
@@ -237,6 +254,7 @@ public abstract class JDBCDetails
{
int result = getVendor() != null ? getVendor().hashCode() : 0;
result = 31 * result + (getBlobType() != null ? getBlobType().hashCode() : 0);
+ result = 31 * result + (getBlobStorage() != null ? getBlobStorage().hashCode() : 0);
result = 31 * result + (getVarBinaryType() != null ? getVarBinaryType().hashCode() : 0);
result = 31 * result + (getBigintType() != null ? getBigintType().hashCode() : 0);
result = 31 * result + (getTimestampType() != null ? getTimestampType().hashCode() : 0);
@@ -249,7 +267,6 @@ public abstract class JDBCDetails
public static JDBCDetails getDetailsForJdbcUrl(String jdbcUrl, final ConfiguredObject<?> object)
{
String[] components = jdbcUrl.split(":", 3);
- final JDBCDetails details;
String vendor = null;
if(components.length >= 2)
{
@@ -364,6 +381,13 @@ public abstract class JDBCDetails
}
@Override
+ public String getBlobStorage()
+ {
+ return contextMap.containsKey(CONTEXT_JDBCSTORE_BLOBSTORAGE)
+ ? String.valueOf(contextMap.get(CONTEXT_JDBCSTORE_BLOBSTORAGE)) : details.getBlobStorage();
+ }
+
+ @Override
public String getVarBinaryType()
{
return contextMap.containsKey(CONTEXT_JDBCSTORE_VARBINARYTYPE)
@@ -404,6 +428,7 @@ public abstract class JDBCDetails
|| contextMap.containsKey(CONTEXT_JDBCSTORE_BIGINTTYPE)
|| contextMap.containsKey(CONTEXT_JDBCSTORE_VARBINARYTYPE)
|| contextMap.containsKey(CONTEXT_JDBCSTORE_BLOBTYPE)
+ || contextMap.containsKey(CONTEXT_JDBCSTORE_BLOBSTORAGE)
|| contextMap.containsKey(CONTEXT_JDBCSTORE_TIMESTAMPTYPE);
}
};
diff --git a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCDetailsTest.java b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCDetailsTest.java
index 4c65a0f..4ae3d6e 100644
--- a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCDetailsTest.java
+++ b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCDetailsTest.java
@@ -33,6 +33,7 @@ import org.apache.qpid.test.utils.UnitTestBase;
public class JDBCDetailsTest extends UnitTestBase{
+
@Test
public void testDerby()
{
@@ -41,6 +42,8 @@ public class JDBCDetailsTest extends UnitTestBase{
assertEquals("varchar(%d) for bit data", derbyDetails.getVarBinaryType());
assertEquals("bigint", derbyDetails.getBigintType());
assertEquals("blob", derbyDetails.getBlobType());
+ assertEquals("", derbyDetails.getBlobStorage());
+ assertEquals("timestamp", derbyDetails.getTimestampType());
assertFalse(derbyDetails.isUseBytesMethodsForBlob());
assertTrue(derbyDetails.isKnownVendor());
@@ -55,7 +58,10 @@ public class JDBCDetailsTest extends UnitTestBase{
assertEquals("varchar(%d) for bit data", details.getVarBinaryType());
assertEquals("bigint", details.getBigintType());
assertEquals("blob", details.getBlobType());
- assertEquals(false, details.isUseBytesMethodsForBlob());
+ assertEquals("", details.getBlobStorage());
+ assertEquals("timestamp", details.getTimestampType());
+ assertFalse(details.isUseBytesMethodsForBlob());
+
assertFalse(details.isOverridden());
assertFalse(details.isKnownVendor());
}
@@ -63,7 +69,6 @@ public class JDBCDetailsTest extends UnitTestBase{
@Test
public void testDerbyWithOverride()
{
-
Map<String, String> contextMap = new HashMap<>();
contextMap.put(JDBCDetails.CONTEXT_JDBCSTORE_VARBINARYTYPE, "myvarbin");
@@ -72,15 +77,14 @@ public class JDBCDetailsTest extends UnitTestBase{
assertEquals("myvarbin", derbyDetails.getVarBinaryType());
assertEquals("bigint", derbyDetails.getBigintType());
assertEquals("blob", derbyDetails.getBlobType());
+ assertEquals("", derbyDetails.getBlobStorage());
+ assertEquals("timestamp", derbyDetails.getTimestampType());
assertFalse(derbyDetails.isUseBytesMethodsForBlob());
assertTrue(derbyDetails.isKnownVendor());
assertTrue(derbyDetails.isOverridden());
}
-
-
-
@Test
public void testRecognisedDriver_AllDetailsProvidedByContext()
{
@@ -88,6 +92,7 @@ public class JDBCDetailsTest extends UnitTestBase{
contextMap.put(JDBCDetails.CONTEXT_JDBCSTORE_VARBINARYTYPE, "myvarbin");
contextMap.put(JDBCDetails.CONTEXT_JDBCSTORE_BIGINTTYPE, "mybigint");
contextMap.put(JDBCDetails.CONTEXT_JDBCSTORE_BLOBTYPE, "myblob");
+ contextMap.put(JDBCDetails.CONTEXT_JDBCSTORE_BLOBSTORAGE, "myblobstorage");
contextMap.put(JDBCDetails.CONTEXT_JDBCSTORE_TIMESTAMPTYPE, "mytimestamp");
contextMap.put(JDBCDetails.CONTEXT_JDBCSTORE_USEBYTESFORBLOB, "true");
@@ -96,10 +101,27 @@ public class JDBCDetailsTest extends UnitTestBase{
assertEquals("myvarbin", details.getVarBinaryType());
assertEquals("mybigint", details.getBigintType());
assertEquals("myblob", details.getBlobType());
+ assertEquals("myblobstorage", details.getBlobStorage());
assertEquals("mytimestamp", details.getTimestampType());
assertEquals(true, details.isUseBytesMethodsForBlob());
+
assertTrue(details.isKnownVendor());
assertTrue(details.isOverridden());
}
+ @Test
+ public void testOracle()
+ {
+ JDBCDetails oracleDetails = JDBCDetails.getJdbcDetails("oracle", Collections.emptyMap());
+ assertEquals("oracle", oracleDetails.getVendor());
+ assertEquals("raw(%d)", oracleDetails.getVarBinaryType());
+ assertEquals("number", oracleDetails.getBigintType());
+ assertEquals("blob", oracleDetails.getBlobType());
+ assertEquals("LOB (%s) STORE AS SECUREFILE (RETENTION NONE)", oracleDetails.getBlobStorage());
+ assertEquals("timestamp", oracleDetails.getTimestampType());
+ assertFalse(oracleDetails.isUseBytesMethodsForBlob());
+
+ assertTrue(oracleDetails.isKnownVendor());
+ assertFalse(oracleDetails.isOverridden());
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org