125 Commits

Author SHA1 Message Date
Justin Bertram
b4f8aada3c ARTEMIS-3092 inconsistent JDBC config logging 2021-02-04 15:32:51 -05:00
Clebert Suconic
c019218c4e ARTEMIS-3084 Eliminate Block on moving to next file on libaio 2021-01-28 11:10:40 -05:00
franz1981
769101ac69 ARTEMIS-2955 commons-dbcp2 performance issue with Derby Embedded DBMS
This commit is fixing:
- a missing commit that can make leak a connection
- restricting default specific commons-dbcp2 to the default data source
- setting poolPreparedStatements true by default
- configured embedded Derby to be in-memory to speedup tests
2020-10-20 10:48:12 +02:00
franz1981
b4532d944d ARTEMIS-2823 Use datasource with JDBC store db connections fixes
It add additional required fixes:
- Fixed uncommitted deleted tx records
- Fixed JDBC authorization on test
- Using property-based version for commons-dbcp2
- stopping thread pool after activation to allow JDBC lease locks to release the lock
- centralize JDBC network timeout configuration and save repeating it
- adding dbcp2 as the default pooled DataSource to be used
2020-10-06 10:19:06 +02:00
Mikko Uoti
2faafec737 ARTEMIS-2823 Use datasource with JDBC store db connections
Replaces direct jdbc connections with dbcp2 datasource. Adds
configuration options to use alternative datasources and to alter the
parameters. While adding slight overhead, this vastly improves the
management and pooling capabilities with db connections.
2020-10-06 08:32:58 +03:00
Justin Bertram
aaba435cae ARTEMIS-2924 prevent NPE 2020-09-30 17:56:36 +02:00
franz1981
27a085fb49 ARTEMIS-2914 MariaDB SQL isn't correctly recognized 2020-09-24 12:47:33 -04:00
franz1981
fddb210277 ARTEMIS-2911 DB2 isn't replacing Blob data 2020-09-24 12:30:37 +02:00
Emmanuel Hugonnet
38cb05c079 [ARTEMIS-2814]: java.sql.SQLException: Couldn't access
org.postgresql.largeobject.LargeObject.

 * Fixing reflection code

Issue: https://issues.apache.org/jira/browse/ARTEMIS-2814
2020-06-22 14:14:32 -04:00
Robbie Gemmell
d2c46762e8 ARTEMIS-2109: fix javadoc errors, remove doclint config for JDK8, remove superfluous plugin versions, update to 3.0.1 javadoc plugin
Using 3.0.1 like the current apache parent pom [not being used], and also as newer ones break build.
2020-06-11 18:50:01 +01:00
Francesco Nigro
4cf8f43e46 ARTEMIS-2729 JdbcLeaseLock won't work on SQL Server 2020-04-21 15:45:21 -04:00
Clebert Suconic
af796d5ce4 ARTEMIS-2701 Improving DLQ/check over previously removed records 2020-04-06 12:25:35 -04:00
Benjamin Graf
4b49b3f371 ARTEMIS-975: Add transactional records to deletedRecords to check for committed transactions that also hold references to 2020-03-24 09:32:47 -05:00
Benjamin Graf
f0b6e51959 ARTEMIS-2668: Fix several format String definitions 2020-03-23 14:09:35 -05:00
Benjamin Graf
127173b5d9 ARTEMIS-2647: Fix append-to-file for mysql 2020-03-10 10:33:34 -04:00
Clebert Suconic
ddd8ed4402 ARTEMIS-1975 Real Large Message support into AMQP
This is a Large commit where I am refactoring largeMessage Body out of CoreMessage
which is now reused with AMQP.

I had also to fix Reference Counting to fix how Large Messages are Acked

And I also had to make sure Large Messages are transversing correctly when in cluster.
2020-02-25 15:25:01 +01:00
Emmanuel Hugonnet
ac98cda224
[ARTEMIS-2626]: Postgresql Journal implementation requires direct access to PostgeSQL driver internal classes.
Issue: The BLOB manipulation is done using PostgreSQL internal classes starting from PGConnection.
This leads to ClasCastExceptions if the connection is wrapped in a pool or if the driver is in a different classloader (WildFly).

Fix: unwrap the connection and if the PostgreSQL classes are not directly available uses reflection to manipulate the BLOBs.

Jira: https://issues.apache.org/jira/browse/ARTEMIS-2626
2020-02-20 19:01:38 +01:00
Francesco Nigro
fa0c187ae6 ARTEMIS-2602 Reduce number of copies for non JDBC Journal 2020-01-18 18:45:12 +01:00
Francesco Nigro
b10d765139 ARTEMIS-2602 load surviving records into SparseArrayLinkedList 2020-01-17 14:31:52 -05:00
Clebert Suconic
f43b9c395f NO-JIRA Fixing memory leak on testsuite
AbstractJDBCDriver would hold an instance to AbstractJDBCDriver through an innner class,
that would hold an ActiveMQServerImpl.

That means Servers would be leaking for the entire duration of the testsuite when using JDBC.
2019-12-09 17:34:05 -05:00
Francesco Nigro
fb01bc5644 ARTEMIS-2465 [JDBC-STORE] Adding index on txId 2019-09-06 14:27:00 -04:00
Andy
3fe2194139 ARTEMIS-2358 - Add user and pass to database store to allow encryption
https://issues.apache.org/jira/browse/ARTEMIS-2358
2019-05-29 11:30:35 -05:00
Jiri Danek
83f0ef2878 ARTEMIS-2320 Stream API call chain can be simplified 2019-04-29 11:28:10 +01:00
Justin Bertram
b4ce3305bf ARTEMIS-2296 PgResultSet.updateBlob not implemented
There is no test for this as we don't have a way to embed/test Postgres.
It will need to be verified externally. However, given the exception the
fix looks solid.
2019-04-24 14:44:16 -04:00
Justin Bertram
57aacf784c NO-JIRA fix lgtm.com warnings
Warnings enumerated at
https://lgtm.com/projects/g/apache/activemq-artemis/alerts/?mode=tree&severity=warning
2019-01-17 22:30:28 +00:00
Francesco Nigro
158227fcf3 ARTEMIS-2202 Improve MSSQL support for JDBC storage 2018-12-13 13:54:13 -06:00
Francesco Nigro
46542fb230 ARTEMIS-1980 Warn on failed check of table existence should be info
DB2 metadata checks should erroneously report stale table existence on
not existing/just deleted table, making the subsequent warning logs
of failed SELECT COUNT useless and scaring: should be better to let
them lowered to INFO level
2018-11-02 10:19:35 -04:00
Francesco Nigro
2967df6a99 ARTEMIS-1996 MappedSequentialFileFactory may cause DirectByteBuffer off-heap memory leaks
Compaction is now reusing direct ByteBuffers on both
reading and writing with explicit and deterministic
release to avoid high peak of native memory utilisation
after compaction.
2018-10-22 09:16:15 +02:00
yang wei
8f4bd7c621 ARTEMIS-2102 delete paging directory or table if address is removed 2018-10-10 18:50:11 -04:00
gtully
30c88fc679 ARTEMIS-2110 allow a lease renew without update to the expiry timestamp. Fix intermittent failure of org.apache.activemq.artemis.core.server.impl.jdbc.JdbcLeaseLockTest#shouldRenewAcquiredLock 2018-10-10 18:44:46 -04:00
Francesco Nigro
cfa3290209 ARTEMIS-2090 JDBC Journal is not deleting TX records
JDBCJournalImpl::cleanupTxRecords is not committing
the deleteJournalTxRecords statement leaving the
TX records into the journal
2018-09-19 15:32:03 -04:00
Francesco Nigro
ead9b00757 ARTEMIS-2089 DB2 sending larger message (1MB) crashes the whole server
It declares JDBC journal Blobs for IBM DB2 DBMS matching max-blob-size
in order to allow to store data with size > 1 MB ie the default BLOB
capacity
2018-09-18 11:46:47 +01:00
Justin Bertram
41b094df2b ARTEMIS-2051 add trace logging for JDBC
Activate by enabling TRACE logging for:
org.apache.activemq.artemis.jdbc.store.drivers.AbstractJDBCDriver
This doesn't log *all* JDBC operations, just those that are used by the
JDBC store.
2018-08-28 11:28:18 -04:00
Martyn Taylor
b36a1058d4 ARTEMIS-2056 Set write position on JDBCFile copy 2018-08-27 12:57:04 +01:00
Clebert Suconic
63e6cd98f8 ARTEMIS-2046 Fixing issues with JournalStorageManager.stop in replication, JDBC and shared storage 2018-08-20 21:25:57 -04:00
Martyn Taylor
af90bc5f43 Make OpenFile Thread Safe 2018-08-10 13:35:23 +01:00
Martyn Taylor
06f6892454 ARTEMIS-1992 Make JDBC File Lock map thread safe 2018-07-31 14:22:58 -04:00
Francesco Nigro
bdcef5a68f ARTEMIS-1981 JDBCJournalImpl constructor isn't using tableName parameter
Removed the unused/redundant constructor parameter tableName
2018-07-12 12:40:42 -04:00
Francesco Nigro
79ff3432d5 ARTEMIS-1979 Table names with DB2 should be upper-cases
DB2 JDBC driver fail to retrieve metadata information
if table names are lower-cases: similarly to Oracle, better
force any table name to be upper-cases to avoid broker being
unable to restart when lower-cases table names are used
2018-07-12 14:48:39 +02:00
Francesco Nigro
fdb63df392 ARTEMIS-1784 JDBC NodeManager should just use DMBS clock
It avoid using the system clock to perform the locks logic
by using the DBMS time.
It contains several improvements on the JDBC error handling
and an improved observability thanks to debug logs.
2018-04-18 09:54:34 -04:00
Francesco Nigro
998be38348 ARTEMIS-1813 DB2 should avoid Blob to append data
DB2 10.5 doesn't allow to append Blob data to an existing Blob,
producing unexpected errors: a custom DB2 sequential file
can perfom the append by using a customized UPDATE statement.
max-blob-size.db2 and create-file-table.db2 are changed to match the
2 GB max blob size limit allowed by DB2.
2018-04-17 11:44:44 -04:00
Francesco Nigro
3d30a98b23 ARTEMIS-1810 JDBCSequentialFileFactoryDriver should check <=0 read length
In order to avoid out of bounds reads to happen, the reading of the file
should avoid those readings to hit the DMBS and just return the expected
value.
2018-04-17 10:43:28 -04:00
Francesco Nigro
c7651853cd ARTEMIS-1653 Allow database tables to be created externally
The previous commit about this feature wasn't using the row count query
ResultSet.
The mechanics has been changed to allow the row count query
to fail, because DROP and CREATE aren't transactional and immediate
in most DBMS.
It includes a test that stress its mechanics if used with DBMS like
DB2 10.5 and Oracle 12c.
Additional checks and logs have been added to trace each steps.
2018-04-17 10:41:14 -04:00
Francesco Nigro
469d6baa93 ARTEMIS-1788 JDBC HA should use JDBC Network Timeout
JdbcNodeManager is configured to use the same network timeout
value of the journal and to validate all the timeout values
related to a correct HA behaviour.
2018-04-17 10:40:20 -04:00
Francesco Nigro
bbb2f708dd ARTEMIS-1806 JDBC Connection leaks
The JDBC Connection leaks on:
- JDBCFileUtils::getDBFileDriver(DataSource, SQLProvider)
- SharedStoreBackupActivation.FailbackChecker::run on a failed awaitLiveStatus
2018-04-17 10:38:53 -04:00
Niels Lippke
b95afbf936 ARTEMIS-1653 Allow database tables to be created externally
In some environments it is not allowed to create a schema
by the application itself. With this change the AbstractJDBCDriver
now tests if an existing table is empty and executes further
statements in the same way as if the table does not exist.
2018-03-27 10:12:14 -04:00
Francesco Nigro
8842ac3638 ARTEMIS-1757 Improve DB2 compatibility
It includes:
- Fixed AUTO_INCREMENT not supported on DB2
- Added proper stop/teardown of driver
- Fixed recursive SQLException formatting
2018-03-27 09:59:56 -04:00
saurabhrai
f045ffbcf8 ARTEMIS-370: Make JDBC Journal Sync period configurable 2018-03-22 16:29:00 -04:00
Benjamin Graf
722ef6aa6c ARTEMIS-1660: Remove oracle12 autoincrement from column id for journal tables 2018-03-06 18:47:52 -05:00
Clebert Suconic
61a1123ee1 ARTEMIS-1613 Integrating JDBC into CLI (create print-data and exp) 2018-01-18 20:55:00 -06:00