pentaho/pentaho-kettle — pull request #70 by prakapenka (2013-11-11 13:43:50+00:00)
Title: [PDI-9790] - Job finishes successfully even though the logging process falls over 

1) core/src/org/pentaho/di/core/database/Database.java
for writeLogRecord calls added exception behaviour strategy.
added method commitLog - for log commit operations not to throw log exception up. Can be refactored in future, this way marked as Deprecated to avoid side developers use this method call.
refactoring of method cleanupLogRecords for better exception handling.

2) core/src/org/pentaho/di/core/database/messages/messages_en_US.properties
added english only messages for log database exceptions

3) core/src/org/pentaho/di/core/database/util/DatabaseLogExceptionFactory.java
class to use as exception behavior factory. See javadoc
NOTE: Log exception failover works only for log tables implements LogTableTypeInterface. All other possible log tables will get exception suppress behaviour only.

4) engine/src/kettle-variables.xml
added new variable 'KETTLE_FAIL_ON_LOGGING_ERROR' false by default. If user wants to override default behavior - he should set it to true or Y. Otherwise - log exception will be suppressed.

5) engine/src/org/pentaho/di/core/logging/LogTableType.java
log table types. Came with LogTableTypeInterface signature. Not used now, but still be useful for future re-factoring if customer one day will ask for separate fail over behaviour or any other functionality involved with determine particular type of LogTableInterface object.

6) engine/src/org/pentaho/di/job/Job.java
in case of log exception was thrown ('KETTLE_FAIL_ON_LOGGING_ERROR'=true), job tracker will get a record about it.
changed log database calls from commit to commitLog - to prevent log exceptions on commit phase

7) engine/src/org/pentaho/di/job/entries/trans/JobEntryTrans.java
synchronization: after transf flag isFinished set to true, actual thread still run some finishListeners. Exceptions in finish listeners may cause errors++ which will not be registered. Fixed with unconditional finish listeners wait to finish work. This may be re-factored in future.

8) engine/src/org/pentaho/di/trans/Trans.java
fixed for() loop when exception in one listner prevents others execution
setFinished moved to separate method for better traceability.
same as for Job class, added commitLog calls and log exception strategy

9) engine/test-src/org/pentaho/di/job/JobTrackerExecution.java
engine/test-src/org/pentaho/di/job/JobTrackerExecutionTest.java
junit tests added. Used junit Parameterized feature. See methods javadoc.
junit test are based on job/trans interactions with logging database.
NOTE: tests uses H2 in memory database, db files will be created in current user's temp directory. Normal test flow will delete this files after execution.

10) *.kjb, *.sql, *.ktr
junit tests test data added

11) ui/src/org/pentaho/di/ui/spoon/job/JobGridDelegate.java
metrics tab refresh is really 2 seconds now.