-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60544/#review179556
-----------------------------------------------------------



Please document the feature and its configuration in the twiki files.


core/pom.xml
Lines 39 (patched)
<https://reviews.apache.org/r/60544/#comment254321>

    Do not add this dependency twice:
    
https://github.com/apache/oozie/blob/378f294c2cd92ac0d505201857f03746ce2e58ac/core/pom.xml#L743



core/src/main/java/org/apache/oozie/service/JPAService.java
Line 273 (original), 330 (patched)
<https://reviews.apache.org/r/60544/#comment254347>

    - Extract method
    ```
    if (em.getTransaction().isActive()) {
    ...
      em.getTransaction().commit();
    }
    ```
    
    - Extract constant "org.apache.oozie.command.SkipCommitFaultInjection"



core/src/main/java/org/apache/oozie/service/JPAService.java
Lines 351 (patched)
<https://reviews.apache.org/r/60544/#comment254322>

    remove dead comnent



core/src/main/java/org/apache/oozie/service/JPAService.java
Line 333 (original), 399 (patched)
<https://reviews.apache.org/r/60544/#comment254375>

    use ``commitTransaction(em)``



core/src/main/java/org/apache/oozie/service/JPAService.java
Lines 486 (patched)
<https://reviews.apache.org/r/60544/#comment254365>

    this comment is not necessary



core/src/main/java/org/apache/oozie/service/JPAService.java
Lines 490 (patched)
<https://reviews.apache.org/r/60544/#comment254366>

    I am not sure if ``em.getTransaction().isActive()`` will ever be evaluated 
true.
    
    However, if so and rollback is not successfull, we should return and 
increase actual retry count (rollback is a kind of retry attempt).



core/src/main/java/org/apache/oozie/service/JPAService.java
Line 413 (original), 496 (patched)
<https://reviews.apache.org/r/60544/#comment254364>

    Use ``&& !updateQueryList.isEmpty()`` instead of size() >0



core/src/main/java/org/apache/oozie/service/JPAService.java
Line 499 (original), 599 (patched)
<https://reviews.apache.org/r/60544/#comment254346>

    Log that no results were returned like in ``executeGet`` to keep consistency



core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java
Lines 71 (patched)
<https://reviews.apache.org/r/60544/#comment254369>

    This a new named query that it is only used in ``XTestCase``, and there is 
no check is performed on it in any tests; it is is used in 
``cleanUpDBTablesInternal()``. In other words, no REST API requests are using 
it for any tasks.
    
    As I see there are other named queries that are not used for meaningful 
purposes (i.e. they are only used in tests). It would be nice to go through all 
named queries and eliminate the "dead" ones. For example "GET_ACTIONS" is only 
used in tests.



core/src/main/java/org/apache/oozie/util/db/BasicDataSourceWrapper.java
Lines 33 (patched)
<https://reviews.apache.org/r/60544/#comment254352>

    Could you add DBCP-333 to reveal what the known bug is?



core/src/main/java/org/apache/oozie/util/db/BasicDataSourceWrapper.java
Lines 41 (patched)
<https://reviews.apache.org/r/60544/#comment254350>

    If driverClassName is null, we can return earlier throwing a 
SQLNestedException with appropriate message. This way it will not be needed to 
check a second time driverClassName is null.



core/src/main/java/org/apache/oozie/util/db/BasicDataSourceWrapper.java
Lines 42 (patched)
<https://reviews.apache.org/r/60544/#comment254349>

    1 try with multiple catch block should be enough



core/src/main/java/org/apache/oozie/util/db/FailingConnectionWrapper.java
Lines 347 (patched)
<https://reviews.apache.org/r/60544/#comment254360>

    nit: OozieDBCLI also uses the tablenames. We could extract these into a 
central place perhaps in a separate Jira?



core/src/main/java/org/apache/oozie/util/db/OperationRetryHandler.java
Lines 31 (patched)
<https://reviews.apache.org/r/60544/#comment254329>

    No need for this annotation; if  RETRY_ATTEMPT_COUNTER is package private, 
then TestOperationRetryHandler will access it. Or you can restrict visibility 
of RETRY_ATTEMPT_COUNTER to private.



core/src/main/java/org/apache/oozie/util/db/OperationRetryHandler.java
Lines 74 (patched)
<https://reviews.apache.org/r/60544/#comment254362>

    As a user, this error message would confuse me. 
    ``Retry attempts have been exhausted.`` / ``Database operation retry limit 
has been exceeded.`` would be more descriptive in my opinion.



core/src/main/java/org/apache/oozie/util/db/OperationRetryHandler.java
Lines 86 (patched)
<https://reviews.apache.org/r/60544/#comment254363>

    nit: 
    "Exception is not on blacklist" or something would be better than 
"Exception does not apply"



core/src/main/java/org/apache/oozie/util/db/OperationRetryHandler.java
Lines 101 (patched)
<https://reviews.apache.org/r/60544/#comment254382>

    nit: sleepBeforeRetry or something would be more expressive / better 
describe what this function does.



core/src/main/java/org/apache/oozie/util/db/OperationRetryHandler.java
Lines 102 (patched)
<https://reviews.apache.org/r/60544/#comment254377>

    e is never used



core/src/main/java/org/apache/oozie/util/db/PersistenceExceptionSubclassFilterRetryPredicate.java
Lines 24 (patched)
<https://reviews.apache.org/r/60544/#comment254344>

    Do not use wildcard import.



core/src/test/java/org/apache/oozie/test/XTestCase.java
Lines 872 (patched)
<https://reviews.apache.org/r/60544/#comment254323>

    What is the added value of ``E extends Object`` here? E already extends 
Object.



minitest/src/test/java/org/apache/oozie/test/WorkflowTest.java
Lines 109 (patched)
<https://reviews.apache.org/r/60544/#comment254325>

    there is no need to divide by 1000 to determine if second is even



minitest/src/test/java/org/apache/oozie/test/WorkflowTest.java
Lines 112 (patched)
<https://reviews.apache.org/r/60544/#comment254326>

    this is not necessary


- Attila Sasvari


On July 3, 2017, 3:15 p.m., András Piros wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/60544/
> -----------------------------------------------------------
> 
> (Updated July 3, 2017, 3:15 p.m.)
> 
> 
> Review request for oozie, Attila Sasvari, Peter Cseh, and Peter Bacsko.
> 
> 
> Repository: oozie-git
> 
> 
> Description
> -------
> 
> https://issues.apache.org/jira/browse/OOZIE-2854
> 
> 
> Diffs
> -----
> 
>   core/pom.xml acddf349a89cf09a7fc4f384ebcaec56dfd0ab48 
>   
> core/src/main/java/org/apache/oozie/executor/jpa/JsonBeanPersisterExecutor.java
>  PRE-CREATION 
>   core/src/main/java/org/apache/oozie/executor/jpa/QueryExecutor.java 
> 8d94c23e40d1281864db40e141b200ca207a6324 
>   core/src/main/java/org/apache/oozie/service/JPAService.java 
> 028381d3b72bcc3b8c2cd27cacb3e0ac6d48d146 
>   core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java 
> cfe1522a4b1f89085eb29e7f1281c2abd631bdc2 
>   core/src/main/java/org/apache/oozie/store/WorkflowStore.java 
> c565e74893b863caef6c93015cfe38fe520d04ec 
>   core/src/main/java/org/apache/oozie/util/db/BasicDataSourceWrapper.java 
> PRE-CREATION 
>   core/src/main/java/org/apache/oozie/util/db/DatabaseRetryPredicate.java 
> PRE-CREATION 
>   core/src/main/java/org/apache/oozie/util/db/FailingConnectionWrapper.java 
> PRE-CREATION 
>   core/src/main/java/org/apache/oozie/util/db/FailingHSQLDBDriverWrapper.java 
> PRE-CREATION 
>   core/src/main/java/org/apache/oozie/util/db/FailingMySQLDriverWrapper.java 
> PRE-CREATION 
>   core/src/main/java/org/apache/oozie/util/db/OperationRetryHandler.java 
> PRE-CREATION 
>   
> core/src/main/java/org/apache/oozie/util/db/PersistenceExceptionSubclassFilterRetryPredicate.java
>  PRE-CREATION 
>   core/src/main/java/org/apache/oozie/util/db/RetryAttemptCounter.java 
> PRE-CREATION 
>   core/src/main/java/org/apache/oozie/util/db/RuntimeExceptionInjector.java 
> PRE-CREATION 
>   core/src/main/resources/META-INF/persistence.xml 
> bad9278597fcd4f93b4cc482afae8af14beaa922 
>   core/src/main/resources/oozie-default.xml 
> c60a4581a84d4c67a1ac1cf3dfdc252b85ccd01c 
>   core/src/main/resources/oozie-log4j.properties 
> c065f3cd4c5a3df1308b69d7c16e8fcfa8796efc 
>   core/src/test/java/org/apache/oozie/test/XTestCase.java 
> 161927ac8f1132b3080d2924844826fcc7b807a5 
>   
> core/src/test/java/org/apache/oozie/util/db/TestOozieDmlStatementPredicate.java
>  PRE-CREATION 
>   core/src/test/java/org/apache/oozie/util/db/TestOperationRetryHandler.java 
> PRE-CREATION 
>   
> core/src/test/java/org/apache/oozie/util/db/TestPersistenceExceptionSubclassFilterRetryPredicate.java
>  PRE-CREATION 
>   core/src/test/java/org/apache/oozie/util/db/TestRetryAttemptCounter.java 
> PRE-CREATION 
>   minitest/pom.xml 9515284bb5f32c279a93161c10e6571680e4f9fc 
>   
> minitest/src/test/java/org/apache/oozie/test/TestParallelJPAOperationRetries.java
>  PRE-CREATION 
>   minitest/src/test/java/org/apache/oozie/test/TestWorkflowRetries.java 
> PRE-CREATION 
>   minitest/src/test/java/org/apache/oozie/test/WorkflowTest.java 
> 2845f0af6efb9ef75fdbfcb326115c62e6fb3bdd 
>   minitest/src/test/resources/hsqldb-oozie-site.xml 
> fa5fe9c3185e973e8247d7bf10b126119d9c02c9 
>   minitest/src/test/resources/oozie-log4j.properties 
> c142d725140930bfa89cd2b163d0768a4c3a750a 
>   minitest/src/test/resources/parallel-fs-and-shell.xml PRE-CREATION 
>   minitest/src/test/resources/wf-test.xml 
> 20c4946862039a65c76ed7f49991345e90a694de 
>   pom.xml 16c5137d44d7db891da46f80adb51c85e4c1b214 
> 
> 
> Diff: https://reviews.apache.org/r/60544/diff/2/
> 
> 
> Testing
> -------
> 
> Tests covered in code:
> 
> Unit tests
> ==========
> 
> * testing the retry handler, the retry predicate filter, and parallel calls 
> to JPA `EntityManager` (mostly Oozie database reads and writes) when 
> injecting failures
> 
> Integration tests
> =================
> 
> * using the `MiniOozieTestCase` framework
> * fixing it so that also asynchronous workflow applications (the ones that 
> use `CallableQueueService`) can be run
> * following workflow scenarios:
> * a very simple one consisting only of a `<start/>` and an `<end/>` node
> * a more sophisticated one consisting of multiple synchronous `<fs/>` nodes 
> and a `<decision/>` node
> * the ultimate one consisting of a `<decision/>` node, and two branches of an 
> `<fs/>` and an asynchronous `<shell/>` nodes
> 
> Test cases run:
> ```
> mvn clean test 
> -Dtest=TestOperationRetryHandler,TestPersistenceExceptionSubclassFilterRetryPredicate,TestParallelJPAOperationRetries,TestWorkflow,TestWorkflowRetries,TestJPAService,TestRetryAttemptCounter
> ```
> 
> Functional and stress tests performed on a 4-node MySQL cluster. MySQL daemon 
> has been stopped / killed / restarted several times. Also firewall rules have 
> been modified temporarily to simulate network outages.
> 
> 
> Thanks,
> 
> András Piros
> 
>

Reply via email to