Version | Date | Description |
---|---|---|
3.0.3 | 2014-07-25 | |
3.0.2 | 2014-04-07 | |
3.0.1 | 2014-04-03 | |
3.0.0 | 2013-12-30 | |
3.0.0-rc-1 | 2013-11-06 | |
2.1.0-beta-4 | 2013-08-11 | |
2.1.0-beta-3 | 2012-12-09 | |
2.1.0-beta-2 | 2012-10-27 | |
2.1.0-beta-1 | 2012-10-11 | |
2.0.16 | Pending | |
2.0.16-rc-1 | 2009-06-21 | |
2.0.15 | 2009-02-17 | |
2.0.14 | 2009-02-15 | |
2.0.14-rc-1 | 2009-01-25 | |
2.0.13 | 2008-05-20 | |
2.0.12 | 2008-03-18 | |
2.0.11 | 2008-01-14 | |
2.0.10 | 2008-01-08 | |
2.0.9 | 2007-12-28 | |
2.0.8 | 2007-11-19 | |
2.0.7 | 2007-11-09 | |
2.0.6 | 2007-10-17 | |
2.0.5 | 2007-10-15 | |
2.0.4 | 2007-10-04 | |
2.0.3 | 2007-09-24 | |
2.0.2 | 2007-09-14 | |
2.0.1 | 2007-07-23 | |
2.0.0 | 2007-07-16 | |
2.0-rc-4 | 2007-07-07 | |
2.0-rc-3 | 2007-07-02 | |
2.0-rc-2 | 2007-06-25 | |
2.0-rc-1 | 2007-06-18 | |
2.0-beta-1 | 2007-04-23 | |
1.2-beta-7 | 2006-12-01 | |
1.2-beta-6 | 2006-10-24 | |
1.2-beta-5 | 2006-09-22 | |
1.2-beta-4 | 2006-09-11 | |
1.2-beta-3 | 2006-08-26 | |
1.2-beta-2 | 2006-08-10 | |
1.2-beta-1 | 2006-07-19 | |
1.1 | 2006-04-21 | |
1.1-rc-2 | 2006-04-18 | |
1.1-rc-1 | 2006-04-09 | |
1.1-beta-7 | 2006-03-20 | |
1.1-beta-6 | 2006-02-15 | |
1.1-beta-5 | 2006-02-13 | |
1.1-beta-4 | 2006-02-10 | |
1.1-beta-3 | 2006-01-27 | |
1.1-beta-2 | 2006-01-23 | |
1.1-beta-1 | 2005-12-13 | |
1.0 | 2005-09-22 | |
1.0-rc-5 | 2005-09-15 | |
1.0-rc-4 | 2005-09-06 | |
1.0-rc-3 | 2005-08-23 | |
1.0-rc-2 | 2005-08-21 | |
1.0-rc-1 | 2005-08-02 | |
1.0-beta-8 | 2005-04-27 | |
1.0-beta-7 | 2005-04-05 | |
1.0-beta-6 | 2005-03-31 | |
1.0-beta-5 | 2005-03-03 | |
1.0-beta-4 | 2005-02-18 | |
1.0-beta-3 | 2005-02-07 | |
1.0-beta-2 | 2005-01-08 | |
1.0-beta-1 | 2004-10-01 | |
1.0-alpha-3 | 2004-08-30 | |
1.0-alpha-2 | 2004-07-17 | |
1.0-alpha-1 | 2004-07-14 |
Type | Changes | By |
---|---|---|
Avoid use of PreparedStatement.addBatch(String) in SQLStateManager since not all dialects support it. Thanks to Justin Cranford. | ||
Add ability to override the default logical address of the JGroups channel. | pferraro | |
Fix alter sequence SQL for Oracle dialect. | pferraro | |
Fix NPE when previous coordinator is restarted. Refactor command dispatcher logic using channel that does not discard its own messages. | pferraro | |
Fix MySQL restore process - replace file pipe with writing file directly to the process output. | pferraro | |
Ensure ProcessBuilder.environment() uses privileged action. | pferraro | |
Use INVOKE_ON_ANY strategy for Connection.getTransactionIsolation() - most drivers don't require a round trip to the database for this. | pferraro | |
Fix bug in DistributedStateManager where our local state is never persisted during activation/deactivation. | pferraro | |
Add support for data-only dump-restore. | pferraro | |
Don't deactivate local databases on stop until we can distinguish between embedded databases and local databases using separate processes. | pferraro | |
Ensure that we rollback any current transactions to release any locks before closing the connections to an inactive database. This is necessary if the connection is pooled. | pferraro | |
Fix alter sequence SQL for Oracle dialect. | pferraro |
Type | Changes | By |
---|---|---|
Fix NoClassDefFoundError in SLF4J and Commons logging providers when the requisite classes are not available. | pferraro |
Type | Changes | By |
---|---|---|
Upgrade JGroups to 3.4.3.Final | pferraro | |
Refactor DumpRestoreSupport to support dialects that do not require external process execution. | pferraro | |
Ensure Database.setActive(...) is set correctly during startup. | pferraro | |
Fixes issue where DataSource is created multiple times, which is very bad if the DataSource encapsulates a connection pool. | pferraro | |
Fix table introspection in Oracle dialect to use user name as schema. | pferraro | |
Fix failure detection logic in H2 and HSQLDB dialects. | pferraro | |
Fix dump/restore in MySQL dialect to use -r option. | pferraro | |
Improve resiliency of invocation strategies to concurrent database deactivation. | pferraro | |
Distributable state manager needs to delegate to local state manager on activate/deactivate. | pferraro | |
Fix issue where HA-JDBC proxies can retain stale references to objects from a deactivated database if that database is reactivated before being accessed. | pferraro |
Type | Changes | By |
---|---|---|
Re-versioned to 3.0. The scope of changes since 2.0.x justifies a major release bump. | pferraro | |
Add option to drop PostgreSQL database object before restoring. Thanks to sjones4. | ||
Fix input channel registration. Thanks to sjones4. | ||
Fixed UnsupportedOperationException when using dump-restore sync strategy due to incorrect regex parsing of jdbc url. | pferraro | |
Allow runtime change to weight for active databases. Thanks to sjones4. | ||
Upgrade JGroups to 3.4.0.Final. | pferraro |
Type | Changes | By |
---|---|---|
Upgrade JGroups to 3.3.x. | pferraro | |
Optimize SynchronousExecutor.invokeAll(...) and make sure reverse mode doesn't execute first task until all other tasks are complete. | pferraro | |
Make DatabaseCluster references within HA-JDBC driver static. Fixes integration with Tomcat connection pooling. | pferraro | |
Deactivate all local active databases upon DatabaseCluster.stop(). | pferraro | |
If DatabaseCluster fails to start, stop it before clearing its reference from the Registry. | pferraro | |
Add Dialect.isValid(Connection) to allow workaround for dialects that do not implement Connection.isValid(int). | pferraro | |
Don't create a proxy for null results, e.g. ResultSet.getClob(...). | pferraro | |
Use a new TreeMap to store results, not an immutable singleton map. | pferraro | |
Fixed parsing bug in Driver.getMajorVersion()/getMinorVersion() that prevented deployment on JBoss AS7. | pferraro | |
Allow DataSource Reference to define config using URI (not just serialized form). | pferraro | |
Add support for Blob.setBinaryStream(long), Clob.setAsciiStream(long) and Clob.setCharacterStream(long) via OutputStream and Writer, respectively. | pferraro | |
Add "input-sink" configuration property to control whether InputStream and Reader-based update methods will use a file or in-memory sink. | pferraro | |
When loading service providers, skip providers with missing dependencies. This way optional dependencies are truly optional. | pferraro | |
REPEATABLE_READ queries should execute against primary database only. | pferraro | |
Avoid classpath scan per exception, due to use of ServiceLoader to resolve exception types. Thanks to sjones4. | ||
Fix improper unlock logic in LocalTransactionContext which could preventing database activation. Thanks to sjones4. | ||
Correct reserved identifier logic to only include SQL:2003 reserved words by default. Add explicit reserved identifier overrides for PostgreSQL and MySQL. | pferraro |
Type | Changes | By |
---|---|---|
Switch default durability from "fine" to "coarse". | pferraro | |
Restore ability to add new databases to the cluster at runtime via JMX. | pferraro | |
Ensure event source field is not lost during serialization. | pferraro | |
Fix configuration file location on windows when file path contains spaces. Thanks to eskorzeny. | ||
Add debug logging if Connection.isValid(...) throws an exception. Otherwise, it is difficult to debug connectivity issues when connection pooling is used. | pferraro | |
Complete BerkeleyDB state manager implementation. Fixes 2. | pferraro | |
Always flush the output stream during state transfer. Thanks to eskorzeny. | ||
Fix class name of JGroupsCommandDispatcherFactory within META-INF/services/net.sf.hajdbc.distributed.CommandDispatcherFactory. Thanks to eskorzeny. | ||
Rename SimpleStateManagerFactory from "memory" to "simple". Thanks to eskorzeny. | ||
Upgrade JGroups to 3.2.4.Final. | pferraro | |
XML parser should fail if dialect/durability/balancer/meta-data-cache was not found. | pferraro | |
Fix formatting of JBoss Logging messages. | pferraro | |
Auto-activation and auto-deactivation only need to be triggered on the group coordinator. Fixes 5. | pferraro | |
Drop obsolete Dialect.getSimpleSQL(). | pferraro |
Type | Changes | By |
---|---|---|
Complete SQLite state manager implementation. Fixes 3. | pferraro | |
Relocate default location of SQL state manager databases to $HOME/.ha-jdbc | pferraro | |
Fix xml parsing of pooling configuration for state managers. | pferraro | |
Fix recovery query logic in SQL state manager. | pferraro | |
Fix NPE in MulitplexingDecoderFactory if password is null. | pferraro | |
Fix dialect detection in SQL state manager. | pferraro | |
Drop deprecated properties from default jgroups configuration. | pferraro | |
Fix HSQLDB Dialect.getDefaultSchemas() to return "PUBLIC". | pferraro | |
Database meta data cache should store table/schema names quoted, if necessary. | pferraro | |
Allow override of identifier normalization by refactoring DatabaseMetaDataSupport into Dialect interface. | pferraro | |
Upgrade Mockito to version 1.9.5. | pferraro | |
Upgrade JGroups to version 3.2.0.Final. | pferraro |
Type | Changes | By |
---|---|---|
Migrate source code repository to github. | pferraro | |
Update Java runtime requirement to 1.6. | pferraro | |
Update Java compile requirement to 1.7 (for JDBC 4.1 support). | pferraro | |
Migrate build from Ant to Maven. | pferraro | |
Migrate site generation from Forrest to Maven site plugin. | pferraro | |
Replace JiBX with JAXB for configuration file reading/writing. Configuration schema is now auto-generated from annotations during build. XML parsing will validate against the schema. | pferraro | |
Redesign HA-JDBC startup, adding support for programmatic configuration. | pferraro | |
Store references to database clusters within Driver or DataSource object, rather than in the mbean server. | pferraro | |
Replace mbean interfaces with dynamic mbeans created from annotations. | pferraro | |
Replace java.util.prefs-based state manager with a jdbc-based or in-memory implementation. Add alternative implementations for sqlite (via sqljet) and berkeleydb. | pferraro | |
Add generic pooling mechanism for use by state managers. | pferraro | |
Add ability to obfuscate passwords stored in HA-JDBC configuration file. Supported mechanisms: plain text, hex encoding, base-64 encoding, symmetric encryption. | pferraro | |
Add support for version (e.g. last update timestamp) columns to differential sync strategy. This improves the general performance of change detection from O(N*M) -> O(N), where N is number of rows, and M is number of columns. | pferraro | |
Changed failure detection handling to always prefer response from the designated primary database (instead of always preferring successful responses). Apply the same logic to resolve jdbc method result conflicts. | pferraro | |
Add durability support to detect and recover from node crashes during commit, enabled by default. | pferraro | |
Improve reliability of distributed lock manager by locking coordinator first, then broadcasting lock acquisition event to other members. | pferraro | |
Use exception introspection to determine whether a not a given failure is catastrophic, replacing separate simple query. | pferraro | |
Add per-database eager and lazy meta data cache implementations - useful for schemas with auto-generated constraint names. Options for meta-data-cache="eager|shared-eager|lazy|shared-lazy|none". | pferraro | |
Create logging facade to support parameterized log messages to avoid string evaluation if message won't be logged. Prefer jboss-logging provider, fall back to slf4j, commons-logging, then to jdk logging. This removes any explicit runtime dependency on a particular logging framework. | pferraro | |
Reverse invocation order of commit/rollback using serial transaction mode. The first database to acquire a row lock should be the last to commit. | pferraro | |
Replace deprecated JGroups channel multiplexer with shared transport. | pferraro | |
Configuration file now specifies synchronization strategies, state manager provider, and distributable capabilities provider via identifiers instead of class names. Uses service loader mechanism for extensibility. | pferraro | |
Modify configuration of balancer, dialect, durability, password codecs, and meta-data cache to use service loader mechanism for extensibility. | pferraro | |
Copy CronExpression from Quartz code base instead of pulling in entire artifact. HA-JDBC no longer has any required dependencies. | pferraro | |
Support system property expansion in configuration file, via ${property} notation. | pferraro |
Type | Changes | By |
---|---|---|
Fix unintentional configuration export during initial startup for datasource, pool-datasource, and xa-datasource configs. | pferraro | |
In DatabaseMetaDataSupportImpl.quote(...), use case-insensitive comparison when determining if identifier is a keyword. | pferraro | |
Using non-zero fetchSize in full and differential sync strategies requires auto-commit off in PostgreSQL. Fixes 2850077. | pferraro | |
Connection.setAutoCommit(...) should use a end-transaction invocation strategy, yet still be recordable. | pferraro | |
Upgrade JGroups to 2.6.12. | pferraro | |
If first database activation fails during auto-activate, just log failure and continue with next failed database. | pferraro |
Type | Changes | By |
---|---|---|
Fixed NullPointerException in PreparedStatement.set/ResultSet.update stream/reader/blob/clob methods, if called with null value. Fixes 2684746. | pferraro | |
Only consider hashed unique indexes when finding unique constraints. Fixes 2688439. | pferraro | |
Ensure unique constraint columns are quoted, if necessary. | pferraro | |
Fix memory leak caused by batch method recording when using PreparedStatement pooling. Fixes 2728324. | pferraro | |
Optimize recording of ResultSet navigation and update methods. | pferraro | |
Fix recording of CallableStatement.registerOutParameter(...) methods. | pferraro | |
Fix differential sync strategy breakage when a table contains only primary key columns. Fixes 2688421. | pferraro | |
Determine column meta data from ResultSetMetaData instead of DatabaseMetaData.getColumns(...). This avoids the need for dialect specific IDENTITY column detection logic. Fixes 2770743. Thanks to Karl Moore. | pferraro | |
Fixed StandardDialect.getIdentifierPattern(DatabaseMetaData) to require that identifiers begin with a letter. | pferraro | |
Upgraded JGroups to 2.6.10. | pferraro | |
Upgraded JiBX to 1.2.1. | pferraro | |
Upgraded Quartz to 1.6.5. | pferraro | |
Upgraded SLF4J to 1.5.7. | pferraro | |
Upgraded EasyMock to 2.5.1. | pferraro | |
Upgraded TestNG to 5.9. | pferraro |
Type | Changes | By |
---|---|---|
Fixed infinite loop regression in DistributableLockManager$DistributableLock.tryLock(long, TimeUnit) | pferraro | |
Fixed ExceptionInInitializerError regression when creating HA-JDBC connections in Java 1.4/1.5. | pferraro |
Type | Changes | By |
---|---|---|
Fixed parsing of local attribute of database, datasource, etc. | pferraro |
Type | Changes | By |
---|---|---|
Upgraded JiBX to 1.1.6a. | pferraro | |
Upgraded SLF4J to 1.5.6. | pferraro | |
Upgraded Retrotranslator to 1.2.8. | pferraro | |
Upgraded JGroups to 2.6.7. | pferraro | |
Upgraded Quartz to 1.6.4. | pferraro | |
Upgraded EasyMock to 2.4. | pferraro | |
Remove file list items during FileSupport.close() - rather than wait for finalization. Fixes 2004105. | pferraro | |
FileSupport is no longer used for large object support and is now created/destroyed per statement, rather than per connection. This helps mitigate temp file build-up. Fixes 2004105. | pferraro | |
Removed references to javax.sql.CommonDataSource - this broke binary compatibility with Java 1.4/1.5 for datasource configurations. | pferraro | |
Fixed java 1.4 binary incompatibility with Boolean (does not yet implement Comparable) not handled by Retrotranslator. | pferraro | |
Restore autoCommit mode to its original value at the end of synchronize(...) in each strategy. Thanks to Ben Short. | pferraro | |
Fixed regression in lazy/none meta-data-cache that broke synchronization. | pferraro | |
Fixed misleading Spanish, French, Italian, and Portuguese translation of config-not-found message. | pferraro | |
Store child proxies using weak references to fix potential memory leak if proxy is not closed. | pferraro | |
Remote locks in DistributableLockManager now respect lock fairness. | pferraro | |
Startup will now also consult ha-jdbc.{0}.configuration system property when searching for configuration file. | pferraro | |
Add HA proxying of DatabaseMetaData interface. | pferraro | |
Added net.sf.hajdbc.util.servlet.DatabaseClusterShutdownContextListener to automatically shutdown a list of database clusters scoped to a servlet context. The clusters to shutdown are defined in a comma delimited init parameter: ha-jdbc.clusters Fixes 2103533. | pferraro |
Type | Changes | By |
---|---|---|
Fixed SybaseDialect.getSimpleSQL() to query for GETDATE(). Thanks to Jason Rosenberg. | pferraro | |
Added event handler support for activation, deactivation, and synchronization events. Clients can opt to be notified of such events by registering themselves as handlers using the appropriate methods on the database cluster mbean. | pferraro | |
Fixed close() methods of Connection, Statement, and ResultSet proxies to use driver (instead of database) write invocation strategy to prevent unnecessary creation of SQL objects (potentially triggering query execution) just to be closed. | pferraro | |
Fixed exception handling in FullSynchronizationStrategy. Exceptions wrapped as SQLException were not getting re-thrown. Thanks to Maris Orbidans. | pferraro | |
Fixed logic in DatabaseMetaDataSupport.quote(String) to properly deal with identifier case. | pferraro | |
Fixed synchronization to allow schemas with auto-generated constraint names (i.e. constraint names are not uniform in all databases) to function properly when meta-data-cache="none". | pferraro | |
Fixed bug where statements created from read-only connections were not getting properly load balanced. | pferraro | |
Added explicit, Referenceable DataSource, ConnectionPoolDataSource, and XADataSource proxy implementations. The <name> element of a <datasource>, <pool-datasource>, or <xa-datasource> configuration can define a data source implementation class name. If the <name> element is a class name, then the subsequent <property name="..."> elements will be interpreted as property values of the data source (e.g. serverName, portNumber, databaseName). | pferraro | |
Added missing definitions for <pool-datasource> and <xa-datasource> to DTD and XSD. | pferraro | |
Calls to PreparedStatement.addBatch() were not being recorded and, consequently, not getting replayed when a new database is activated. | pferraro | |
Fixed AcquireLockDecree to use write locks, instead of a read locks, so that database activation will block transactions on remote nodes. Fixes 1964456. | pferraro | |
Upgraded TestNG to 2.8. | pferraro |
Type | Changes | By |
---|---|---|
Fixed case normalization in DatabaseMetaDataSupport.normalize(String, String). | pferraro | |
Fixed NullPointerException using CallableStatement stream methods. | pferraro | |
Optimized Balancer implementations using copy-on-write concurrent collections. | pferraro | |
Eliminated some unnecessary runtime reflection. | pferraro | |
Fixed potential deadlock when synchronization is triggered while there are open transactions. Refactored statement read locking to lock and unlock at transaction boundaries. Removed obsoleted table locking in synchronization strategies. | pferraro | |
Added ConnectionPoolDataSource and XADataSource proxies, the latter required to detect distributed transaction boundaries. Added necessary <xa-datasource> and <pool-datasource> configuration file elements. | pferraro | |
Renamed net.sf.hajdbc.sql.DataSource to net.sf.hajdbc.DataSourceFactory. This should hopefully eliminate some confusion about its usage, as it is a javax.naming.spi.ObjectFactory and not a java.sql.DataSource implementation. | pferraro | |
Fixed Spanish translation of log messages. Thanks to Alejandro Domenech. | pferraro | |
Added linked source to javadoc. | pferraro | |
Upgraded Retrotranslator to 1.2.6. | pferraro | |
Upgraded JGroups to 2.6.2. | pferraro | |
Upgraded SLF4J to 1.5.0. | pferraro |
Type | Changes | By |
---|---|---|
Replaced accidental use of Method.getTypeParameters() with intended Method.getParameterTypes() in AbstractInvocationHandler. This fixes bug where state changing methods were not recorded properly and subsequently not replayed correctly on newly activated databases. | pferraro |
Type | Changes | By |
---|---|---|
Fixed CronThreadPoolExecutor to work around potential inaccuracies in java.util.Date that could cause a task to be scheduled multiple times in a single cron interval. | pferraro | |
Connection.setReadOnly() should use DatabaseWriteInvocationStrategy instead of DriverWriteInvocationStrategy. | pferraro | |
Refactored invoker recording to support any JDBC method regardless of InvocationStrategy implementation. | pferraro | |
Fixed replay of PreparedStatement and CallableStatement set*() methods for a newly activated database. | pferraro | |
Cleanup logic in DatabaseWriteInvocationStrategy by splitting into TransactionalDatabaseWriteInvocationStrategy and NonTransactionalDatabaseWriteInvocationStrategy. | pferraro | |
Rollback TestNG to 5.6. Version 5.7 mysteriously skipped test methods. | pferraro | |
CallableStatement does not need to parse out sequences nor identity columns, nor detect SELECT...FOR UPDATE in SQL. | pferraro | |
Fixed broken test cases. | pferraro |
Type | Changes | By |
---|---|---|
In DatabaseWriteInvocationStrategy, acquire read locks before Balancer.all() so that a newly activated database will not miss any pending write statements. | pferraro | |
Upgraded JGroups to 2.6.1. | pferraro |
Type | Changes | By |
---|---|---|
Fixed infinite loop in CronThreadPoolExecutor when scheduled task throws an ExecutionException. Fixes 1832392. Thanks to gamani. | pferraro | |
Upgraded JGroups to 2.6.0. | pferraro |
Type | Changes | By |
---|---|---|
Added local="true|false" attribute to database/datasource. Cluster panic detection now consults this flag instead of weight to determine whether a database is local or remote. | pferraro | |
LocalLockManager now uses a custom semaphore-based ReadWriteLock implementation instead of ReentrantReadWriteLock. Removed obsolete DistributableLockAdapter hack. | pferraro | |
Optimized DistributableLockManager using RpcDispatcher instead VotingAdapter. | pferraro | |
Fixed deadlocking in DistributableLockManager when simultaneous voting occurs for he same resource from different peers. | pferraro | |
Upgraded Retrotranslator to 1.2.3. | pferraro | |
Upgraded TestNG to 5.7. | pferraro |
Type | Changes | By |
---|---|---|
Fixed exception handling during startup to prevent subsequent javax.management.InstanceAlreadyExistsExceptions if database cluster fails to start. | pferraro | |
Fixed potential deadlocking sources and improved cpu friendliness of DistributableLockManger. Fixes 1814865. | pferraro |
Type | Changes | By |
---|---|---|
Fixed bug in Dialect.getAlterSequenceSQL(...) and Dialect.getAlterIdentityColumnSQL(...) causing values > 999 to get formatted with grouping separators. Fixes 1811698. | pferraro | |
Added "cluster panic" detection to prevent asymmetric database deactivation during a network fragmentation when in distributable mode where databases are colocated on peer nodes. If HA-JDBC detects a cluster panic, the cluster is stopped. Manual intervention is required to resolve any consequent synchronization problems and to start the cluster. Fixes 1738533. | pferraro | |
Removed obsolete JBoss jmx-console FAQ entry. | pferraro |
Type | Changes | By |
---|---|---|
Added look-ahead and to Dialect.evaluateCurrentTime() regular expression so that it does not match CURRENT_TIMESTAMP functions. | pferraro | |
Fixed NullPointerException regression in DistributableLockManager preventing database activation in distributable mode. | pferraro | |
Use new official JDK 1.4 backport of JGroups instead of retrotranslating our own. | pferraro |
Type | Changes | By |
---|---|---|
Upgraded JGroups to 2.5.1. | pferraro | |
Fixed infinite loop in DistributableLockManager while acquiring a lock when only one peer node is present. Fixes 1799618. | pferraro | |
Fixed missing membership listener registration in DistributableLockManager preventing proper lock cleanup. | pferraro | |
Defer creation of connection factories until needed since DataSource creation relies on JNDI environment properties that may not yet be established. Fixes 1796975. | pferraro |
Type | Changes | By |
---|---|---|
Added Dialect.getIdentifierPattern(...) method to work around buggy DatabaseMetaData.getExtraNameCharacters() in PostgreSQL driver since version 8.1. Bug causes unexpected failures during identity column detection when schema or table name contains non-standard characters. | pferraro | |
Optimized StandardDialect.getDefaultSchemas() by replacing separate CURRENT_USER query with DatabaseMetaData.getUserName(). | pferraro | |
Fixed example Tomcat DataSource configuration. | pferraro | |
Fixed currentTimestampFunction() method of MaxDBDialect. | pferraro | |
Created separate OracleDialect, formerly an alias of MaxDBDialect. | pferraro | |
Created separate H2Dialect, formerly an alias of HSQLDBDialect. | pferraro | |
Added new dialect for Sybase. | pferraro | |
Added evaluateCurrentDate(String, java.sql.Date), evaluateCurrentTime(String, java.sql.Time), evaluateCurrentTimestamp(String, java.sql.Timestamp), and evaluateRandom(String) to Dialect interface to replace non-deterministic SQL functions (e.g. CURRENT_TIMESTAMP, RAND()) with deterministic static values. Added optional eval-current-date, eval-current-time, eval-current-timestamp, and eval-rand cluster attribute to enable these behaviors. | pferraro | |
Both sequence and identity column detection are no longer enabled by default. | pferraro | |
Removed supportsSequences() and supportsIdentityColumns() methods from Dialect interface. The corresponding parseSequence(String) and parseInsertTable(String) methods now return null for dialects that do not support these features. | pferraro | |
Fixed race condition in DistributableLockAdapter that may prevent a lock from being released. | pferraro | |
Upgraded SLF4J to 1.4.3. | pferraro | |
Added SynchronizationSupport.synchronizeIdentityColumns(...). Consequently, MySQL AUTO_INCREMENT columns are now fully supported. | pferraro | |
Added DatabaseProperties.getSequences() and TableProperties.getIdentityColumns() to meta data cache facility. | pferraro |
Type | Changes | By |
---|---|---|
LazyDatabaseMetaDataCache now caches DatabaseProperties using a SoftReference to prevent the cache from causing OutOfMemoryErrors. | pferraro | |
Refactored ThreadLocalDatabaseMetaDataCache to NullDatabaseMetaDataCache which no long stores its DatabaseProperties instance in a ThreadLocal since this can inadvertently act like a lazy cache if application threads are pooled. Replaced SynchronizationContext.getDatabaseMetaDataCache() with SynchronizationContext.getDatabaseProperties() so that meta data used during synchronization is still cached for the lifetime of the SynchronizationContext, regardless of cache implementation. | pferraro | |
Re-implemented BalancerFactory, DialectFactory, and DatabaseMetaDataCacheFactory using enums. | pferraro | |
In DatabaseMetaDataSupport.normalize(...), adjust case of table to match the way identifiers are stored in the database. | pferraro | |
In DatabaseMetaDataSupport.quote(...), normalize identifiers to lower case if database is case-insensitive, yet stores identifiers in mixed case. | pferraro | |
Fixed all benign compiler warnings reported by Eclipse. | pferraro | |
Migrated simple string constants to Strings. | pferraro |
Type | Changes | By |
---|---|---|
Optimized failure handling in DatabaseWriteInvocationStrategy. | pferraro | |
Optimized thread synchronization in DistributableLockAdapter. | pferraro | |
Upgraded EasyMock to 2.3. | pferraro | |
Upgraded SLF4J to 1.4.2. | pferraro | |
Upgraded JGroups to 2.5 GA. | pferraro | |
Revised documentation. | pferraro |
Type | Changes | By |
---|---|---|
In distributable mode, try to retrieve initial state from any remote node, not just "coordinator". | pferraro | |
Fixed deadlocking during activation/deactivation in distributable mode caused by redundant secondary notifications. | pferraro | |
In distributable mode, do not send activation notifications to other nodes during cluster startup. | pferraro | |
In distributable mode, do not respond to initial state queries until cluster startup is complete. | pferraro | |
Upgraded SLF4J to 1.4.1. | pferraro |
Type | Changes | By |
---|---|---|
FailureDetectionTask and SQLProxy.handleFailure() will not deactivate any databases if they all appear to be dead. | pferraro | |
Convert dynamic Class.cast() and Class.isInstance() to static cast and instanceof expressions wherever possible. | pferraro | |
Fixed bug during initialization where databases are added as dirty, triggering export of configuration file. | pferraro | |
When adding a database to the cluster, perform duplicate id check before registering database to avoid InstanceAlreadyExistsException. | pferraro | |
Fixed broken error message when attempting to remove a database that is still active. | pferraro |
Type | Changes | By |
---|---|---|
Added toString() to DatabaseClusterMBean interface so that log messages will display cluster id properly. | pferraro | |
Fixed IllegalAccessError in JiBX marshalling during configuration export.n Thanks to David White. | pferraro | |
Removed Retrotranslator plugin for java.lang.management.ManagementFactory. This is now natively supported by Retrotranslator. | pferraro | |
Upgraded Retrotranslator to 1.2.2. | pferraro |
Type | Changes | By |
---|---|---|
Fixed memory leak with CONCUR_READ_ONLY result sets when using ResultSet.getStatement().close(). | pferraro | |
Removed problematic singleton references to database clusters in DatabaseClusterFactory. | pferraro | |
Require separate XML config file per database cluster. | pferraro | |
Consolidated database-cluster and datasource cluster elements into single cluster element, as in 1.1. Removed id attribute from cluster element. | pferraro | |
Modified configuration locator logic to first check driver connection properties or datasource config property for resource URL. Default resource name is now ha-jdbc-{0}.xml, where {0} is the cluster id. | pferraro | |
Added test for UnsupportedOperationException thrown when Quartz cron expression uses both day-of-week and day-of-month values. Thanks to Hanson Char. | pferraro | |
If a group member leaves, any distributed locks it held must be freed. | pferraro | |
DistributableLockManager uses default vote response processor instead of its own implementation. | pferraro | |
Removed quoting of cluster ID and database ID in mbean ObjectName. JBoss users no longer need to patiently wait for this long standing jmx-console bug (http://jira.jboss.com/jira/browse/JBAS-2037) to be fixed. | pferraro | |
Fixed NoSuchElementException thrown during database activation when there are no active databases. | pferraro | |
Fixed IllegalMonitorStateExceptions in DistributableLockManager resulting from improper use of reentrant locks by multiple threads. | pferraro | |
Optimized DistributableLockManager using a single phase VotingAdapter. | pferraro | |
Re-implemented DistributableStateManager to use synchronous MessageDispatcher instead of asynchronous NotificationBus. This will ensure that all nodes are notified of database activation prior to unlocking database tables during synchronization. Changed default jgroups protocol stack to "udp-sync". | pferraro | |
Do not auto-deactivate the last database of a cluster. | pferraro | |
JGroups 2.5 uses Java 1.5 as a baseline, so retrotranslate this jar as part of 1.4 build. | pferraro | |
Modified build to produce 3 different binary distributions, for Java 1.4, 1.5, and 1.6. | pferraro | |
Upgraded SLF4J to 1.4.0. | pferraro | |
Upgraded JiBX to 1.1.5. | pferraro | |
Upgraded JGroups to 2.5.0-cr1. | pferraro | |
Upgraded TestNG to 5.6. | pferraro |
Type | Changes | By |
---|---|---|
Optimized PostgreSQLDialect.getLockTableSQL() by removing unnecessary select statement. Thanks to David Goodenough. | pferraro | |
Removed JVM shutdown hook since it may prevent proper shutdown of a server-managed connection pool. | pferraro | |
Fixed NullPointerException accessing meta data if database does not support schemas. Fixes 1618746. | pferraro | |
Refactored Balancer.list() to return a set to better reflect balancer semantics. | pferraro | |
Refactored DatabaseClusterMBean interface into DriverDatabaseClusterMBean and DataSourceDatabaseClusterMBean. LocalDatabaseCluster refactored into generic AbstractDatabaseCluster. Replaced <cluster> element in DTD with <database-cluster> and <datasource-cluster>. | pferraro | |
Created StateManager to encapsulate management of database cluster state. | pferraro | |
Distributable functionality no longer added via inheritance, but through lock manager and state manager implementations. | pferraro | |
Created schema definition of HA-JDBC configuration as an alternative to DTD. | pferraro | |
Reimplemented core logic to use dynamic instead of explicit proxies, decoupling HA-JDBC from a specific version of the JDBC API. Resulting jar is approximately half the size as before. | pferraro | |
Refactored SynchronousExecutor implementation to extend AbstractExecutorService since the ExecutorService interface in Java 1.6 is not compatible with that of 1.5. | pferraro | |
Java 1.6 adds auto-increment column identification to DatabaseMetaData.getColumns(). Added isAutoIncrement() to ColumnProperties interface populated only if this information exists. This value is now be consulted prior to querying the dialect to identify identity columns. | pferraro | |
Fixed regular expressions in dialects to properly negotiate whitespace. | pferraro | |
Added support for JDBC 4.0 (i.e. Java 1.6). | pferraro | |
Added support for mutable LOBs. | pferraro | |
Added Java 1.6 service provider hook for HA-JDBC driver. | pferraro | |
Added max batch size property to differential synchronization strategy to help prevent out of memory errors when a table contains many changes. | pferraro | |
Use platform mbean server for cluster/database mbean registration. Provide retrotranslator plugin for java.lang.management.ManagementFactory that uses old logic to locate mbean server. | pferraro | |
Forced cleanup of open java.sql objects that were not accessed during an deactivate/reactivate cycle. | pferraro | |
Fixed german message transations. Thanks to Kurt Huwig. | pferraro | |
Upgraded JiBX to 1.1.3. | pferraro | |
Upgraded JGroups to 2.5.0-beta-2. concurrent-*.jar is now obsolete. | pferraro | |
Upgraded SLF4J to 1.3.1. | pferraro | |
Upgraded Retrotranslator to 1.2.1. | pferraro | |
Upgraded Woodstox to 3.2.1. | pferraro | |
Upgraded TestNG to 5.5. | pferraro | |
Added JDBC RowSet API to Java 1.4 runtime dependencies. | pferraro | |
Updated documentation to use Forrest 0.8. | pferraro |
Type | Changes | By |
---|---|---|
Fixed sequence synchronization logic to use next value instead of current value since it may be undefined. | pferraro | |
Refactored SynchronizationStrategy interface into distinct prepare (e.g. lock), synchronize, and cleanup (e.g. unlock) stages. | pferraro | |
Created SynchronizationContext to simplify SynchronizationStrategy interface methods. | pferraro | |
Refactored CronExecutorService to use CronExpression instead of CronTrigger. | pferraro | |
Changed default distributable stack to "udp". | pferraro | |
Disabled support for identity columns in MySQL dialect. MySQL's implementation has no mechanism to synchronize auto-increment counter. | pferraro | |
Upgraded JGroups to 2.4 GA (final). | pferraro | |
Upgraded Retrotranslator to 1.1.0. | pferraro | |
Upgraded Quartz to 1.6.0. | pferraro | |
Upgraded Woodstox to 3.1.0. | pferraro | |
Upgraded SLF4J to 1.1.0 RC1. | pferraro | |
Upgraded TestNG to 5.3. | pferraro |
Type | Changes | By |
---|---|---|
Added support for identity columns. | pferraro | |
Added new cluster attributes "detect-sequences" and "detect-identity-columns". | pferraro | |
Added dialect implementations for Ingres and Mckoi. | pferraro | |
Upgraded Woodstox to 3.0.2. | pferraro | |
Fixed PostgreSQL Blob/Clob handling in differential and full synchronization strategies when large objects require updating. | pferraro | |
Refactored DefaultDialect to StandardDialect and renamed dialect alias from "default" to "standard". | pferraro |
Type | Changes | By |
---|---|---|
Upgraded TestNG to 5.2. | pferraro | |
Fixed binding compilation error that only seemed to affect windows users. | pferraro | |
Fixed mbean registration race condition during startup in distributable mode. | pferraro |
Type | Changes | By |
---|---|---|
Upgraded JGroups to 2.4-cr-2. | pferraro | |
Upgraded Woodstox to 3.0.1. | pferraro | |
Upgraded TestNG to 5.1. | pferraro | |
Force cleanup of underlying connections, statements, and result sets when a database is deactivated. Fixes 1543962. | pferraro | |
Log cause of DatabaseCluster.isAlive(Database) failures. | pferraro | |
Fixed bug in DatabaseMetaDataSupport.getForeignKeyConstraints() causing method to always return an empty collection. | pferraro | |
Fixed bug in PostgreSQLDialect.getSequences(...) causing method to fail to when database does not contain any sequences. | pferraro |
Type | Changes | By |
---|---|---|
Fixed bug in DifferentialSynchronizationStrategy where generated select statements had duplicated columns. | pferraro | |
Extracted interfaces from ColumnProperties, ForeignKeyConstraint, and UniqueConstraint. Implementations refactored into net.sf.hajdbc.cache package. | pferraro | |
Added long needed unit tests for each synchronization strategy. | pferraro | |
Upgraded JGroups to 2.4-cr-1. | pferraro | |
Upgraded Retrotranslator to 1.0.8. | pferraro | |
Fixed bugs in MySQLDialect related to generating SQL for creating and dropping foreign keys and unique constraints. Thanks to Stephan Hesse. | pferraro |
Type | Changes | By |
---|---|---|
Upgraded TestNG to 5.0.1. | pferraro | |
Upgraded Woodstox to 3.0.0. | pferraro | |
Fixed premature quoting of schema and tables in DatabaseMetaDataCacheSupport. | pferraro | |
Fixed NullPointerException in ThreadLocalDatabaseMetaDataCache. | pferraro | |
Fixed bug in SimpleBalancer where a database deactivation would trigger the deactivation of other databases of identical weight. | pferraro |
Type | Changes | By |
---|---|---|
Upgraded Retrotranslator to version 1.0.7. | pferraro | |
Upgraded JiBX to version 1.1. | pferraro | |
Replaced XMLPull runtime library with StAX API + Woodstox implementation. | pferraro | |
Upgraded JGroups to version 2.3-sp1. | pferraro | |
Upgraded SLF4J to version 1.0.2. | pferraro | |
Upgraded Quartz to version 1.5.2. | pferraro | |
Upgraded EasyMock to version 2.2. | pferraro | |
Upgraded TestNG to version 5.0. | pferraro | |
Fixed create/drop constraint methods of DefaultDialect to quote constraint names. Thanks to Ryan Holmes. | pferraro | |
Modified Dialect interface to leverage ForeignKeyConstraint and UniqueConstraint objects to encapsulate constraint details. | pferraro | |
Fixed DefaultDialect to correctly generate create foreign key statements for foreign keys containing multiple columns, ON DELETE/UPDATE actions, and deferrability. | pferraro | |
Created dialects for MySQL and Firebird. | pferraro | |
DerbyDialect, HSQLDBDialect, MaxDBDialect now override createForeignKeySQL(). | pferraro | |
Fixed synchronization of PostgreSQL tables containing Blob (oid) columns. | pferraro | |
Modified differential synchronization strategy to use UPDATE statements instead of using updatable ResultSet, due to poor driver support. e.g. ResultSet.updateBlob(...) is not implemented in PostgreSQL driver. | pferraro | |
Added DatabaseMetaData caching. New meta-data-cache attribute of cluster. Options are eager, lazy, or none. | pferraro | |
Modified Dialect and SynchronizationStrategy interfaces to use DatabaseMetaDataCache objects. | pferraro | |
Refactored Dialect interface with much simpler method signatures. | pferraro | |
Leverages JGroups 2.3 multiplexing so that notification bus and distributable lock manager share the same channel. No more "discarded message from different group..." warnings in logs! "protocol" attribute of "distributable" element in DTD is replaced by "config" and "stack" attributes. Default for "config" is "stacks.xml" from JGroups distribution. Default for "stack" is "fc-fast-minimalthreads". | pferraro | |
Moved mbean registration to DatabaseCluster.start() and added mbean unregistration to DatabaseCluster.stop(). HA-JDBC initialization failures will no longer leave stray registered mbeans. | pferraro | |
Replaced simple read-write locking with named read-write locking encapsulated by a LockManager. | pferraro | |
Added support for sequences. | pferraro | |
Refactored unit tests so that test classes implement subject interfaces. | pferraro | |
Fixed non-default charset handling of Clobs. | pferraro |
Type | Changes | By |
---|---|---|
Ensure that causes of initialization failures are logged. | pferraro |
Type | Changes | By |
---|---|---|
Fixed IllegalArgumentException during startup when using transactions="xa". | pferraro | |
Fixed NullPointerException during startup when database does not define a driver. | pferraro | |
Fixed CronExecutorService to use daemon threads so that it doesn't prevent the shutdown hook from firing. | pferraro |
Type | Changes | By |
---|---|---|
Upgraded Retrotranslator to version 1.0.3. | pferraro | |
Fixed Blob/Clob handling in PreparedStatement.setBlob(...)/setBlob(...) and ResultSet.updateBlob(...)/updateClob(...) methods. | pferraro | |
Fixed bug in DefaultDialect.qualifyTable(...) for databases that do not support schemas. | pferraro | |
Added new required transactions="local|xa" option to cluster. When in local mode, database writes are performed concurrently. When in xa mode, database writes are performed synchronously to ensure a predictable execution order and prevent deadlocks. | pferraro | |
Added fault tolerance measures to cluster thread pool under high load. If pool size reaches max-threads threshold, database writes will be executed in the caller thread using java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy. | pferraro | |
Upgraded TestNG to 4.7. | pferraro |
Type | Changes | By |
---|---|---|
Added auto-activate-period cluster option that will auto-activate failed database nodes at a configurable interval. Thanks to Tapan Paul. | pferraro | |
New dependency on Quartz (http://opensymphony.com/quartz/). | pferraro | |
Created CronThreadPoolExecutor, a java.util.concurrent.ThreadPoolExecutor that leverages a Quartz CronTrigger to calculate future execution times of a scheduled task. | pferraro | |
Enhanced auto-activation and failure detection to use a cron schedule, instead of a simple fixed-delay period. Renamed failure-detect-period to failure-detect-schedule and auto-activate-period to auto-activate-schedule in DTD. | pferraro | |
Migrated repository to Subversion. | pferraro | |
Migrated test suite to TestNG. | pferraro | |
Migrated logging facade from commons-logging to SLF4J. | pferraro | |
New dependency on SLF4J (http://slf4j.org). | pferraro | |
Upgraded Retrotranslator to version 1.0.1. | pferraro | |
Replaced commons-logging-1.0.4.jar with jcl104-over-slf4j.jar from SLF4J distribution. | pferraro | |
Added management interface methods for adding and removing databases from a cluster. | pferraro | |
Separated DatabaseMBean interface into InactiveDatabaseMBean (read-write) and ActiveDatabaseMBean (read-only). | pferraro | |
Activating/Deactivating database reregisters the database using the appropriate active/inactive mbean interface. | pferraro | |
Added dirty flag logic for Database attributes. If a database is dirty when it is activated, then the HA-JDBC configuration is exported. | pferraro | |
Renamed "name" property of DataSource to "cluster", since "name" cannot be set by the BeanFactory from Tomcat's server.xml file. | pferraro | |
Revised main documentation. Added more FAQs. | pferraro |
Type | Changes | By |
---|---|---|
Added workaround for missing ReentrantReadWriteLock(boolean) constructor in backport-util-concurrent package. | pferraro | |
Added verify flag to retrotranslator compilation to catch future Java 1.4 compatibility issues. | pferraro | |
Rollback change to PostgreSQL dialect. Removed batching of lock table commands. | pferraro |
Type | Changes | By |
---|---|---|
Database activation uses Lock.lockInterruptibly() instead of Lock.tryLock() to prevent activation from failing due to concurrent writes. | pferraro | |
Fixed getLockTableSQL() from PostgreSQL dialect so that it can be executed within a batch. | pferraro |
Type | Changes | By |
---|---|---|
Upgraded Retrotranslator to version 0.9.8. | pferraro | |
Added optional failure-detect-period to configuration file. If defined, HA-JDBC will proactively detect database failures every specified number of seconds. | pferraro | |
Replace DatabaseCluster.init() with start() and stop() methods. | pferraro | |
Added JVM shutdown hook that calls stop() on each DatabaseCluster. | pferraro | |
Derby dialect overrides getLockTableSQL(). Thanks to Kurt Huwig. | pferraro | |
Refactored DistributableDatabaseCluster to extend LocalDatabaseCluster rather than contain/decorate it. | pferraro | |
Refactored JiBX configuration to support both input and output binding directions. | pferraro | |
Removed configuration related methods from SynchronizationStrategy interface removing the need for AbstractSynchronizationStrategy. | pferraro | |
Implemented distributable read-write locking so that database writes are locked during database activation. This eliminates the need to deactivate databases that were newly actived upon completion of a database write. | pferraro | |
Added mbean interfaces for Databases. | pferraro |
Type | Changes | By |
---|---|---|
Changed exceptions thrown by DatabaseClusterMBean methods to built-in Java exceptions so that they can be interpretted by a remote JMX client. | pferraro | |
Added distributable locking to prevent multiple simultaneous synchronizations on the same cluster. | pferraro | |
Added configurable timeout attribute to DTD for distributable operations. | pferraro | |
Moved SELECT ... FOR UPDATE pattern definition to dialect. | pferraro | |
Fixed IndexOutOfBoundsException during database activation when one or more databases in the cluster is not alive. | pferraro |
Type | Changes | By |
---|---|---|
Upgraded JiBX to version 1.0.1. | pferraro | |
Upgraded JGroups to version 2.2.9.1. | pferraro | |
Recorded Operations are stored in a Map keyed by class instead of a List to prevent unnecessary boundless growth. Thanks to Ilkka Lassila. | pferraro | |
DifferentialSynchronizationStrategy generates bad DELETE statements when table has multiple primary keys. Thanks to Kurt Huwig. | pferraro | |
Fixes german error message translations. Thanks to Kurt Huwig. | pferraro | |
DatabaseClusterFactory.createDatabaseClusterFactory() throws RuntimeException instead of SQLException to prevent java.sql.DriverManager from masking root cause of HA-JDBC configuration failures. | pferraro | |
Fixes potential NullPointerException if database is deactivated as a result of a read operation. | pferraro | |
Migrated code base to Java 1.5. | pferraro | |
Retrotranslator (http://retrotranslator.sf.net) leveraged for JDK 1.4 compatibility. Build script generates separate 1.4 jar and includes additional dependencies. | pferraro | |
Replaced Balancer.toArray() : Database[] with Balancer.list() : List<Database> | pferraro | |
Unit tests now use EasyMock 2.0. | pferraro | |
Added requiresTableLocking() method to SynchronizationStrategy interface. | pferraro | |
During database activation, table locking is only performed if required by synchronization strategy. | pferraro | |
All vendor specific customizations to HA-JDBC are now encompassed in the Dialect attribute of a cluster. This replaces the validate-sql attribute of a cluster; and the truncateTableSQL, createForeignKeySQL, dropForeignKeySQL, createUniqueKeySQL, and dropUniqueKeySQL properties of the diff and full synchronization strategies. | pferraro | |
Created dialects for PostgreSQL, MaxDB, Derby, HSQLDB, and a default dialect. | pferraro | |
Changed default table locking query used during synchronization to use an innocuous UPDATE statement. | pferraro | |
Added more explicit logging for exceptions thrown during HA-JDBC initialization that end up getting masked by JiBX. | pferraro | |
Added missing rollback to exception handling in diff and full synchronization strategies. Thanks to Kurt Huwig. | pferraro | |
In distributable mode, JGroups channel and protocols are registed with the mbean server. | pferraro | |
Removed obsolete net.sf.hajdbc.sql.pool.xa and net.sf.hajdbc.sql.pool packages. | pferraro |
Type | Changes | By |
---|---|---|
New dependency on JDK 1.4 backport of JDK 1.5 java.util.concurrent package. | pferraro | |
Uses configurable thread pooling for asynchronously executed write operations for improved efficiency and fault tolerance under high load. | pferraro | |
Uses default-minimalthreads.xml from JGroups distribution as default distributable protocol. | pferraro | |
Synchronization strategies now use schema qualified table names when appropriate. | pferraro | |
Upgraded JGroups to version 2.2.9. | pferraro | |
Fixed problematic co-dependency between DatabaseCluster and ConnectionFactory. | pferraro |
Type | Changes | By |
---|---|---|
Fixed JDK 1.4 source compatibility issues. Thanks to Roman Kurmanowytsch. | pferraro | |
Added explicit logging to expose root causes of exceptions that are hidden by JiBX. | pferraro | |
Added FAQ section for manually deleting local cluster state. | pferraro | |
Added FAQ section for distinguishing application database users vs. HA-JDBC database users. | pferraro | |
Upgraded EasyMock to version 1.2. | pferraro |
Type | Changes | By |
---|---|---|
During DatabaseClusterFactory initialization, if no mbean server can be found, an exception is thrown, rather than attempting to create a new one. | pferraro | |
Quote all identifiers used in synchronization to prevent SQL syntax errors in identifier is a reserved word. | pferraro |
Type | Changes | By |
---|---|---|
Correct error message when connection to config url fails. Thanks to Nick Rudnick. | pferraro | |
Avoid wrapping SQLException cause when a database operation fails. | pferraro | |
Added FAQ section for running HA-JDBC under Tomcat 5.0. | pferraro | |
Fixed readProperties() and writeProperties(...) methods of AbstractSynchronizationStrategy to ignore the property "class". Thanks to Matthew Wooller. | pferraro | |
Reintroduced PassiveSynchronizationStrategy. | pferraro | |
Added logic to LocalDatabaseCluster.loadState() to validate locally persisted cluster state. | pferraro |
Type | Changes | By |
---|---|---|
Fixed NullPointerException bug in LocalDatabaseCluster.loadState(). | pferraro | |
Distributable database activation commands should not reinvoke synchronization. | pferraro |
Type | Changes | By |
---|---|---|
SELECT...FOR UPDATE queries are now detected and distributed to each database cluster node. | pferraro | |
Corrected German translation of error messages. Thanks to Nick Rudnick. | pferraro | |
Fixed infinite loop in AbstractSynchronizationStrategy.getProperties(). | pferraro | |
Fixed bug in LocalDatabaseCluster.loadState() when cluster is empty. | pferraro |
Type | Changes | By |
---|---|---|
Refactored HA-JDBC initialization and DTD. Synchronization strategies are now shared across all clusters. Each cluster defines a default synchronization strategy. | pferraro | |
Added properties to cluster configuration to allow DataSources to define custom JNDI environment parameters and to allow Driver to define additional runtime parameters. | pferraro | |
Changed default JGroups protocol stack to use FD instead of FD_SOCK. | pferraro | |
activate(String) method in DatabaseClusterMBean interface will synchronize using the default synchronization strategy for the cluster. | pferraro | |
Removed getSynchronizationStrategies() from DatabaseClusterMBean interface. | pferraro | |
Fixed ClassCastException during XADataSource initialization. | pferraro | |
SQLException wrapper properly reports vendor-specific error code and SQL state. | pferraro | |
Updated DifferentialSynchronizationStrategy to use PreparedStatements for inserts and deletions instead of using problematic updatable result set methods. | pferraro | |
Fixed DifferentialSynchronizationStrategy to drop and re-create unique keys on each table to prevent possible unique constraint violations during sync. | pferraro | |
DifferentialSynchronizationStrategy now correctly compares byte[] columns. | pferraro | |
Migrated unit tests from TestNG to JUnit in order to utilize EasyMock. | pferraro | |
Added unit tests for net.sf.hajdbc.sql package. | pferraro | |
Upgraded Forrest documentation to version 0.7. | pferraro | |
Upgraded JGroups to version 2.2.8. | pferraro | |
Upgraded JiBX to version 1.0-rc-1. | pferraro |
Type | Changes | By |
---|---|---|
Cluster state is now persisted locally so that it can be restored between application restarts. | pferraro | |
Added customizable fetchSize property to each synchronization strategy to avoid out of memory errors when synchronizing large tables. | pferraro | |
Added TestNG unit tests for Driver, Connection, Statement, and each balancer implementation. | pferraro | |
Fixed issue with driver returning non-distributable connections when in distributable mode. | pferraro | |
Fixed issue in DifferentialSynchronizationStrategy with some updatable result set implementations where inserted rows were deleted again. | pferraro | |
Fixed ClassCastException in Connection.releaseSavepoint(Savepoint) and Connection.rollback(Savepoint) methods. | pferraro | |
Minor fixes to zero weight handling in random and load balancers. | pferraro | |
Corrected German translation of error messages. Thanks to Oezcan Acar. | pferraro | |
executeWriteToDatabase() will now throw SQLException for Statements and ResultSets if some valid databases fail while others succeed and auto-commit is off, giving the client the opportunity to rollback the current transaction. | pferraro | |
Connection.isReadOnly() was changed from executeReadFromDatabase() to executeReadFromDriver(). | pferraro | |
Refactored java.sql.* proxy classes. | pferraro | |
Upgraded JiBX to version 1.0-rc-0. | pferraro |
Type | Changes | By |
---|---|---|
Fixed buggy weighted round-robin algorithm. | pferraro | |
Round-robin balancer now handles databases with 0 weight properly. | pferraro |
Type | Changes | By |
---|---|---|
Database cluster now specifies 1 of 4 different strategies for balancing read requests: simple, random, round-robin, or load. | pferraro | |
A database can define a weight to affect how it is prioritized by the balancer. | pferraro | |
In distributed environment, a database cluster will get its initial state from the JGroups group coordinator. | pferraro | |
Fixed bug where auto (i.e. non-manual) database deactivation behaved locally even if environment is distributed. | pferraro | |
Fixed bug where synchronization strategies will fail if foreign key constraints have names that require quoting (e.g. $1, $2). | pferraro | |
Lots of refactored code. Most notably, the HA-JDBC driver has moved to net.sf.hajdbc.sql.Driver | pferraro | |
Protocol parameter is now optional for distributable clusters. | pferraro | |
Added error message translations for German, Spanish, French, Italian, and Portuguese. Thanks to AltaVista Babel Fish. | pferraro | |
Added error message for tables without primary keys in DifferentialSynchronizationStrategy. | pferraro |
Type | Changes | By |
---|---|---|
Added better data type support for SynchronizationStrategy properties. | pferraro | |
Fixed Java 1.4 compatibility. | pferraro |
Type | Changes | By |
---|---|---|
getActiveDatabases() and getInactiveDatabases() no longer throw SQLException | pferraro | |
Configuration DTD updated: Synchronization strategies and properties are now explicitly defined per cluster. | pferraro | |
Added getSynchronizationStrategies() method to cluster management interface. | pferraro | |
Changed symantics of activate(...) methods on management interface: activate(String, String) uses synchronization strategy identifier instead of class name; activate(String) now activates a database without synchronizing. | pferraro | |
PassiveSynchronizationStrategy is obsolete. Use activate(String) instead. | pferraro | |
synchronize() method of SynchronizationStrategy interface no longer uses DatabaseClusterDescriptor. | pferraro | |
Fixed various bugs in documentation and javadoc. | pferraro |
Type | Changes | By |
---|---|---|
All log/exception messages are now localized. | pferraro | |
Driver is no longer required when defining a driver-based cluster since underlying driver already be registered via the jdbc.drivers system property. | pferraro | |
Fixed bug in SQLException when nested exception chain is already initialized. | pferraro |
Type | Changes | By |
---|---|---|
Added JMX interface to DatabaseCluster to allow administration of each cluster. | pferraro | |
Refactored cluster initialization and management. | pferraro | |
Distributable behavior implemented using command pattern. | pferraro | |
Restructured configuration DTD adding new synchronization-related cluster properties. | pferraro | |
Refactored distributable behavior to support activation. | pferraro | |
Added ability to activate a failed database. | pferraro | |
Created database synchronization strategies used during activation. | pferraro | |
Allow simple names for DriverManager-based database cluster. | pferraro | |
Enhanced large object support. | pferraro | |
Upgraded Forrest documentation to v0.6. | pferraro |
Type | Changes | By |
---|---|---|
Fixed bug in connection.rollback() | pferraro | |
Fixed logic in PreparedStatement/CallableStatement.setXXXStream() and ResultSet.updateXXXStream() methods | pferraro | |
Optimized asynchronous execution of write operations. | pferraro | |
Improved consistancy of cluster when autocommit is true. | pferraro | |
Upgraded JGroups to v2.2.7 | pferraro | |
Prevent multiple logging of database deactivation | pferraro |
Type | Changes | By |
---|---|---|
Configuration DTD is now PUBLIC | pferraro | |
Upgraded JGroups to v2.2.6 | pferraro | |
Fixed thread safety bug in SQLProxy.executeWrite() | pferraro | |
Changed license to LGPL, added license details to source code | pferraro | |
Removed obsolete RowSetProxy class, javax.sql.RowSet implementation are implicitly supported | pferraro | |
Refactored package names to reflect project name | pferraro | |
Replaced CHANGES.txt with this page | pferraro |
Type | Changes | By |
---|---|---|
Added ability specify location of configuration file using a system property | pferraro | |
Extended classpath search for configuration file to include system classpath | pferraro | |
Fixed DataSource proxy initialization | pferraro | |
DriverProxy now expects the cluster name to match the JDBC url | pferraro | |
Several refactorings affecting configuration dtd | pferraro | |
Fixed bug in clean target of ant build file | pferraro |