> On June 16, 2015, 3:26 p.m., Nate Cole wrote:
> > The code looks like it caps the length of a value (ok), but where is the 
> > definition of that storage - in a db script somewhere?  No sql changes to 
> > support the bigger field?  I thought this might be "viewinstancedata" but 
> > I'm not sure.
> 
> Nate Cole wrote:
>     Oh, I see you said it's a dynamic entity - I thought there was a 
> definition somewhere.  You can ignore :)  Just Jonathan's suggestions and I'm 
> good.
> 
> Tom Beerbower wrote:
>     Thanks for the review! 
>     
>     Yeah, the view DataStore uses dynamic entites.  By default String types 
> map to VARCHAR(255), which lead to this issue as soon as someone tried to 
> persist an entity with a long String.  So, instead of the way I handled it in 
> this patch, I could (I think) map the Strings to a CLOB.  Would that be a 
> better solution?

If you can't specify the max length of a string column, then I would say you 
should probably go CLOB.


- Nate


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


On June 16, 2015, 2:31 p.m., Tom Beerbower wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/35528/
> -----------------------------------------------------------
> 
> (Updated June 16, 2015, 2:31 p.m.)
> 
> 
> Review request for Ambari, Jonathan Hurley and Nate Cole.
> 
> 
> Bugs: AMBARI-11957
>     https://issues.apache.org/jira/browse/AMBARI-11957
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> In one case we are seeing this exception while trying to store data from a 
> view ...
> 
>     java.lang.IllegalStateException:
>     Exception Description: No transaction is currently active
>         at 
> org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.rollback(EntityTransactionImpl.java:176)
>         at 
> org.apache.ambari.server.view.persistence.DataStoreImpl.store(DataStoreImpl.java:135)
>         at 
> org.apache.ambari.view.hive.persistence.DataStoreStorage.store(DataStoreStorage.java:76)
>         at 
> org.apache.ambari.view.hive.resources.CRUDResourceManager.save(CRUDResourceManager.java:117)
>         at 
> 
> The underlying exception ...
> 
>     Exception [EclipseLink-4002] (Eclipse Persistence Services - 
> 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
>     Internal Exception: org.postgresql.util.PSQLException: ERROR: value too 
> long for type character varying(255)
>     Error Code: 0
>     Call: UPDATE DS_JOBIMPL_4 SET DS_applicationId = ?, DS_duration = ?, 
> DS_sqlState = ?, DS_status = ?, DS_statusMessage = ? WHERE (DS_id = ?)
>           bind => [6 parameters bound]
> 
> 
> This occurs because the view tries to save an entity with a String type 
> attribute which is mapped to a VARCHAR(255).  The dynamic entity code maps 
> the String to a VARCHAR using the database default length.
> 
> Also, once the exception is thrown, the DataStore catches it and tries to 
> rollback the transaction.  It looks like the tx is already inactive at this 
> point so a different exception is thrown out.  The original exception should 
> at least be logged by the DataStoreImpl.
> 
> 
> Diffs
> -----
> 
>   
> ambari-server/src/main/java/org/apache/ambari/server/view/persistence/DataStoreImpl.java
>  8353d63 
>   
> ambari-server/src/test/java/org/apache/ambari/server/view/persistence/DataStoreImplTest.java
>  2b19b0a 
> 
> Diff: https://reviews.apache.org/r/35528/diff/
> 
> 
> Testing
> -------
> 
> Manual tested.
> 
> New unit tests added.
> 
> mvn clean test
> 
> all pass
> 
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time: 46:25 min
> [INFO] Finished at: 2015-06-16T13:42:50-04:00
> [INFO] Final Memory: 54M/1453M
> [INFO] 
> ------------------------------------------------------------------------
> 
> 
> Thanks,
> 
> Tom Beerbower
> 
>

Reply via email to