Commit Graph

88 Commits

Author SHA1 Message Date
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
Jeff Mesnil 938fbd81cb [ARTEMIS-1590] Properties-based SQLProvider
Replace GenericSQLProvider and other implementation by a single
PropertySQLProvider that uses properties to define SQL queries.

SQL queries are loaded from the journal-sql.properties file.
Queries specific to a DB dialect can be specified by adding a suffix to
the key of the generic property.
For example, the generic property to create a file Table is:

create-file-table = CREATE TABLE %s (ID BIGINT AUTO_INCREMENT, ...)

This property can be customized for Derby by using the
create-file-table.derby  property:

create-file-table.derby=CREATE TABLE %s (ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),...

JIRA: https://issues.apache.org/jira/browse/ARTEMIS-1590
2018-01-12 14:50:21 +01:00
Francesco Nigro 170e89f9fc ARTEMIS-1541 Make the JDBC Node Manager more resilient on failures
In order to make the JDBC Node Manager more resilient has been implemented:
- recovering with fixed number of retries during the NodeId setup + unrecoverable failure otherwise
- unrecoverable fail on exceptions while renewing a lease lock

In addition, in different parts of these critical processes are added more log informations to help diagnose.
2017-12-20 16:03:19 -05:00
Francesco Nigro 09a5d6f1c6 ARTEMIS-1447 JDBC NodeManager to support JDBC HA Shared Store 2017-10-26 15:38:37 -04:00
Martyn Taylor 988c91557d ARTEMIS-1444 Support Messages > JournalBufferSize in all Protocols 2017-10-09 12:50:38 -04:00
Clebert Suconic 30ba65a082 NO-JIRA: Fixing the testsuite on Page.finalize() 2017-10-07 12:05:55 -04:00
Martyn Taylor 604db9ee7e ARTEMIS-1204 Replace open sync with AtomicBoolean
The JDBCSequentialFile blocks on the writeLock when opening.  There is
no need to block here, in fact it may cause issues when opening and
syncing concurrently.  Instead an AtomicBoolean is enough to prevent the
file from being reloaded.
2017-06-26 18:41:21 +01:00
Martyn Taylor e7c426c5e1 ARTEMIS-1204 Fix getSize() on a closed JDBC File 2017-06-02 14:59:53 +01:00
Erich Duda 69740a987d ARTEMIS-1190 Long/int type mismatch in JDBCSequentialFile.setWritePosition 2017-05-30 18:59:33 -04:00
Michael Andre Pearce c65ea783ea ARTEMIS-1189 - Fix checkstyle violations post checkstyle upgrade
After upgrade of checkstyle, resolve violations

remove checkstyle override added as temp measure at point of upgrade forced by sevntu
2017-05-30 13:40:00 -04:00
Ville Skyttä fe505b37b4 Spelling fixes 2017-05-30 10:32:41 +03:00
Clebert Suconic dc26ac96b4 ARTEMIS-1156: moving our collections on its own package 2017-05-12 10:06:05 -04:00
Clebert Suconic f328c24b94 ARTEMIS-1155 SequentialFiles leaking on JDBCSequentialFileFactory 2017-05-11 12:17:06 -05:00
Aditya Sharad 33c94635bf ARTEMIS-1135: Fix integer multiplication overflows
Multiplication operations where the operands have type `int` but the
result is cast to `long` may lead to overflow.
Fixes two instances of this problem, by ensuring the operands are cast
to `long` during multiplication.
This resolves the "Result of integer multiplication cast to long"
alerts at https://lgtm.com/projects/g/apache/activemq-artemis/alerts.
2017-05-02 13:00:46 -04:00
Francesco Nigro 258d595972 ARTEMIS-1124 JDBC Network Timeout configuration 2017-04-20 19:43:10 +01:00
Clebert Suconic bfe2bdd7b2 ARTEMIS-1115 Traces and tests on JDBC Persistence 2017-04-19 00:50:58 -04:00
Martyn Taylor 7b68b0a49a ARTEMIS-1115 Call CriticalIOListener on JDBC Error 2017-04-19 00:50:58 -04:00
Francesco Nigro aa9ac4a914 ARTEMIS-1084 Throw RunTime on bad Oracle table size 2017-04-13 19:17:10 -04:00
Martyn Taylor 120b8aa7ad ARTEMIS-1085 Perform storelineup on appendRecord 2017-03-31 15:50:02 +01:00
Martyn Taylor 42bf845edb ARTEMIS-1084 Throw RunTime on bad Oracle table size 2017-03-29 14:59:12 +01:00
Clebert Suconic fe0ca4d84f ARTEMIS-1009 Pure Message Encoding.
with this we could send and receive message in their raw format,
without requiring conversions to Core.

- MessageImpl and ServerMessage are removed as part of this
- AMQPMessage and CoreMessage will have the specialized message format for each protocol
- The protocol manager is now responsible to send the message
- The message will provide an encoder for journal and paging
2017-03-05 23:08:53 -05:00
Martyn Taylor f3b83831e0 ARTEMIS-1010 Uppercase table name for Oracle 2017-03-02 19:40:08 -05:00
Clebert Suconic 70721dcd5c ARTEMIS-1006: JDBC should log proper warns with stack traces on SQLExceptions 2017-02-28 20:23:54 -05:00
Martyn Taylor 7b344a92fd ARTEMIS-999 Add support for Oracle12C 2017-02-26 21:10:03 +00:00
Martyn Taylor a1012884cc ARTEMIS-998 Fix NPE in JDBC FileDriver when BLOB is null 2017-02-26 20:42:04 +00:00
Justin Bertram 4e92b63de7 ARTEMIS-986 fix int overflow 2017-02-24 16:15:49 -05:00
dOkI fc70f9414a ARTEMIS-976: PostgresSequentialSequentialFileDriver SQLProvider NPE fix 2017-02-16 15:00:42 -05:00
Martyn Taylor b8595d610d ARTEMIS-957 Use setBytes JDBC API vs Concat BLOB 2017-02-10 09:55:57 -05:00
Francesco Nigro 807dbf9051 ARTEMIS-938 JDBC persistence-store should use BIGINT type for IDs in database tables 2017-02-06 11:00:05 -05:00
Clebert Suconic ef8cb60df7 NO-JIRA Fixing deadlock on JDBCJournal::stop / sync methods 2017-02-03 09:04:57 -05:00
Clebert Suconic ce035a8084 ARTEMIS-937 Implementing proper alignment and adding perf-journal tool to validate the journal syncs 2017-02-03 09:04:56 -05:00
Martyn Taylor 0bcf003a87 ARTEMIS-930 Return the ID field on createFile statement 2017-01-20 12:44:22 +00:00
Clebert Suconic b4cbd36af4 ARTEMIS-560 Small improvements on JDBC tests for paging + adding a logger 2017-01-17 14:58:53 -05:00
Martyn Taylor 118c272c77 ARTEMIS-560 Add Support For JDBC Paging 2017-01-17 14:58:53 -05:00
Francesco Nigro 837066d40d ARTEMIS-920 Log SQL Exceptions and Warnings 2017-01-16 14:22:25 +01:00
Dmitrii Tikhomirov 3995319dca ARTEMIS-865 Remove e.printStackTrace() from code 2016-11-23 11:15:54 -05:00
Benjamin Graf 95e88dd22f ARTEMIS-852: Add PK and index to create journal table DDL script 2016-11-16 10:08:10 +01:00
Clebert Suconic 5e5ac0f057 ARTEMIS-832 Openwire was ignoring data syncs.
I'm also adding the possibility of sync on libaio, and not only relay on write-cache
2016-11-02 13:17:12 -05:00