tinkerpop/rexster — pull request #367 by dalaro (2014-09-25 18:20:46+00:00)
Title: Allow WebApplicationExceptions in VertexResource

This PR covers thinkaurelius/titan#728.

Several WebApplicationExceptions thrown inside VertexResource methods
seemed to be unintentionally swallowed by enclosing catch clauses with
low specificity (e.g. Exception). These catchall clauses generally
swallow the WAE's status code and replace it with a generic 500
internal server error. This commit changes the catch clauses at the
bottom of three request methods to allow a WAE to propagate up the
stack instead of converting it into a generic 500.

This commit also introduces a try-catch with exception logging around
the RexsterApplicationGraph.tryRollback call made inside several of
these catch clauses. The point of this change is to make exceptions
encountered during rollback get logged and to allow the remainder of
the catch clause to attempt to execute even if rollback failed. I ran
into failing rollbacks when testing Titan 0.5.1-SNAPSHOT against
Rexster 2.6.0 without defining
Features.supportsThreadIsolatedTransactions, but I was blind to that
cause for a while because the exception message and trace were
suppressed.