jira.codehaus.org

  • Log In Access more options
    • Online Help
    • Keyboard Shortcuts
    • About JIRA
    • JIRA Credits
    • What?s New
  • Dashboards Access more options (Alt+d)
  • Projects Access more options (Alt+p)
  • Issues Access more options (Alt+i)
  • Trails
  • TRAILS-127

TRAILS does not support detached entity collections in OGNL

  • Log In
  • Views
    • XML
    • Word
    • Printable

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Duplicate
  • Affects Version/s: 1.2.0
  • Fix Version/s: 1.2.0
  • Component/s: trails-core, trails-hibernate
  • Labels:
    None
  • Environment:
    XP Pro, maven-2.0.8, eclipse-3.3.1.1, jre-1.5.0_06

Description

Hibernate Session being lost during creation of POJO.

While operating roster demo on latest cut... although not related to instantiating AssociationMgt this occurs when attempting to edit an already created Organization

— stack trace follows —

[ +/- ] Exception: failed to lazily initialize a collection of role: org.trails.demo.Organization.coaches, no session or session was closed
org.apache.hivemind.ApplicationRuntimeException
failed to lazily initialize a collection of role: org.trails.demo.Organization.coaches, no session or session was closed
component: $HibernateEditPage_37@3c1[OrganizationEdit] location: context:/WEB-INF/DefaultEdit.page, line 3, column 63
1 <!DOCTYPE page-specification PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.1//EN"
2 "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_1.dtd">
3 <page-specification class="org.trails.page.HibernateEditPage">
4
5 <property name="model" persist="session"/>
6 <property name="modelNew" persist="session"/>
7 <property name="classDescriptor" persist="session"/>
8

[ +/- ] Exception: failed to lazily initialize a collection of role: org.trails.demo.Organization.coaches, no session or session was closed org.hibernate.LazyInitializationException
failed to lazily initialize a collection of role: org.trails.demo.Organization.coaches, no session or session was closed
messages: failed to lazily initialize a collection of role: org.trails.demo.Organization.coaches, no session or session was closed
throwableCount: 1 throwables: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.trails.demo.Organization.coaches, no session or session was closed

Stack Trace:
org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358) org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350) org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97) org.hibernate.collection.PersistentSet.size(PersistentSet.java:139) org.trails.component.EditCollection.buildSelectedList(EditCollection.java:125) org.trails.component.EditCollection.prepareForRender(EditCollection.java:117) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:723) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) org.apache.tapestry.components.Block.renderForComponent(Block.java:65) org.apache.tapestry.components.RenderBlock.renderComponent(RenderBlock.java:65) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.trails.component.PropertyEditor.renderComponent(PropertyEditor.java:49) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:94) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:181) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:94) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) org.apache.tapestry.form.FormSupportImpl.render(FormSupportImpl.java:504) org.apache.tapestry.form.Form.renderComponent(Form.java:217) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) org.apache.tapestry.html.Body.renderComponent(Body.java:38) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) org.apache.tapestry.html.Shell.renderComponent(Shell.java:124) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:177) org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:249) org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397) org.apache.tapestry.services.impl.DefaultResponseBuilder.renderResponse(DefaultResponseBuilder.java:151) org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse(ResponseRendererImpl.java:33) $ResponseRenderer_117faf650df.renderResponse($ResponseRenderer_117faf650df.java) org.trails.engine.TrailsPagesService.service(TrailsPagesService.java:106) $IEngineService_117faf65150.service($IEngineService_117faf65150.java) org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72) org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:241) org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54) $WebRequestServicer_117faf6512b.service($WebRequestServicer_117faf6512b.java) $WebRequestServicer_117faf65127.service($WebRequestServicer_117faf65127.java) org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61) $ServletRequestServicer_117faf6510d.service($ServletRequestServicer_117faf6510d.java) org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55) $ServletRequestServicerFilter_117faf65109.service($ServletRequestServicerFilter_117faf65109.java) $ServletRequestServicer_117faf6510f.service($ServletRequestServicer_117faf6510f.java) org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52) $ServletRequestServicerFilter_117faf65107.service($ServletRequestServicerFilter_117faf65107.java) $ServletRequestServicer_117faf6510f.service($ServletRequestServicer_117faf6510f.java) org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53) $ServletRequestServicerFilter_117faf6510b.service($ServletRequestServicerFilter_117faf6510b.java) $ServletRequestServicer_117faf6510f.service($ServletRequestServicer_117faf6510f.java) $ServletRequestServicer_117faf650ff.service($ServletRequestServicer_117faf650ff.java) org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:126) org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:103) javax.servlet.http.HttpServlet.service(HttpServlet.java:740) javax.servlet.http.HttpServlet.service(HttpServlet.java:853) org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491) org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074) org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265) org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) org.trails.security.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:152) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:229) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:286) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149) org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065) org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365) org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185) org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689) org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391) org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146) org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) org.mortbay.jetty.Server.handle(Server.java:285) org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457) org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:751) org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:500) org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209) org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357) org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329) org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)

  • Options
    • Sort By Name
    • Sort By Date
    • Ascending
    • Descending
    • Download All

Attachments

  1. Text File
    trails.core.patch.txt
    18/Mar/08 3:46 PM
    63 kB
    Ken in nashua
  2. Text File
    trails.examples.roster.patch.txt
    18/Mar/08 3:46 PM
    71 kB
    Ken in nashua
  3. Text File
    trails.hibernate.patch.txt
    18/Mar/08 3:46 PM
    14 kB
    Ken in nashua
  4. Text File
    TRAILS-127.more.detailed.stack.trace.txt
    15/Feb/08 7:16 AM
    21 kB
    Ken in nashua

Issue Links

duplicates

Bug - A problem which impairs or prevents the functions of the product. TRAILS-142 OpenSessionInView - detached entities eventually comes apart after span 3 levels associations

  • Major - Major loss of function.
  • Resolved - A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.

Activity

Ascending order - Click to sort in descending order
  • All
  • Comments
  • Work Log
  • History
  • Activity
Hide
Permalink
Ken in nashua added a comment - 15/Feb/08 7:16 AM

Just more feedback on this issue.

I had suspected the inheritence in roster example originally and was not surprised by the scramble to smoke that out.

Hoping for the best.

Show
Ken in nashua added a comment - 15/Feb/08 7:16 AM Just more feedback on this issue. I had suspected the inheritence in roster example originally and was not surprised by the scramble to smoke that out. Hoping for the best.
Hide
Permalink
Ken in nashua added a comment - 20/Feb/08 7:09 AM

TRAILS does not support detached entity collections in OGNL

I changed the title to accurately reflect the seriousness of this issue.

This fundamental feature has never existed in the framework since day one.

I am performing research and will provide all I can including patch should I stumble on solution.

The short summary is ... collection becomes detached edit page cycle. All attempts to reattach, merge, refresh, flush either the parent (owner), association or even the actual collection for that matter have no effect. The pinpoint being the OGNL expression being executed appears as though the attempts to sync the detached collection had no effect as though the collection being operated on in OGNL is not the real detached collection.

Some psuedo snippet... operating instrumented persistenceservice

--->EditCollection.JAVA
public List<Boolean> buildSelectedList()
{
ArrayList<Boolean> selected = new ArrayList<Boolean>();
if (getCollection() != null)
{
selected = new ArrayList<Boolean>(getCollection().size());
for (Object o : getCollection())

{ selected.add(false); }

getPersistenceService().reattachCollection(getCollection().toArray());

--->EditPage.JAVA
public ILink saveAndReturn(IRequestCycle cycle)
{
if (save())
{
if (cameFromCollection())
{
getPersistenceService().reattach(getParent());
getPersistenceService().reattach(getModel());
IReferenceSupport referenceDescriptor = (IReferenceSupport) getAssociationDescriptor();
Utils.executeOgnlExpression(referenceDescriptor.getRemoveExpression(), getModel(), getParent());
Utils.executeOgnlExpression(referenceDescriptor.getAddExpression(), getModel(), getParent());
getPersistenceService().save(getParent());

The exceptions NonUniqueObject/LazyInitialization occur at every Utils.executeOgnlExpression attempt

This all happens on OGNL-2.7.1, OGNL-2.7.2, OGNL-2.7.3-SNAPSHOT, T-4.1.3, T-4.1.4 + with caching disabled/enabled although flakey things have shown to occur... it might even seem fair to state that OGNL is hosed, at least for collections.

All efforts for solution are appreciated.

Show
Ken in nashua added a comment - 20/Feb/08 7:09 AM TRAILS does not support detached entity collections in OGNL I changed the title to accurately reflect the seriousness of this issue. This fundamental feature has never existed in the framework since day one. I am performing research and will provide all I can including patch should I stumble on solution. The short summary is ... collection becomes detached edit page cycle. All attempts to reattach, merge, refresh, flush either the parent (owner), association or even the actual collection for that matter have no effect. The pinpoint being the OGNL expression being executed appears as though the attempts to sync the detached collection had no effect as though the collection being operated on in OGNL is not the real detached collection. Some psuedo snippet... operating instrumented persistenceservice --->EditCollection.JAVA public List<Boolean> buildSelectedList() { ArrayList<Boolean> selected = new ArrayList<Boolean>(); if (getCollection() != null) { selected = new ArrayList<Boolean>(getCollection().size()); for (Object o : getCollection()) { selected.add(false); } getPersistenceService().reattachCollection(getCollection().toArray()); --->EditPage.JAVA public ILink saveAndReturn(IRequestCycle cycle) { if (save()) { if (cameFromCollection()) { getPersistenceService().reattach(getParent()); getPersistenceService().reattach(getModel()); IReferenceSupport referenceDescriptor = (IReferenceSupport) getAssociationDescriptor(); Utils.executeOgnlExpression(referenceDescriptor.getRemoveExpression(), getModel(), getParent()); Utils.executeOgnlExpression(referenceDescriptor.getAddExpression(), getModel(), getParent()); getPersistenceService().save(getParent()); The exceptions NonUniqueObject/LazyInitialization occur at every Utils.executeOgnlExpression attempt This all happens on OGNL-2.7.1, OGNL-2.7.2, OGNL-2.7.3-SNAPSHOT, T-4.1.3, T-4.1.4 + with caching disabled/enabled although flakey things have shown to occur... it might even seem fair to state that OGNL is hosed, at least for collections. All efforts for solution are appreciated.
Hide
Permalink
Ken in nashua added a comment - 20/Feb/08 10:47 AM

It's worth noting that the entity being added to the collection gets persisted to the database prior to the actual execution of the OGNL expression responsible for the 'hitching-up' of the new entity to the collection. This explains why on subsequent renderings the new entity is never seen in the collection because the actual ADD never completed.

Show
Ken in nashua added a comment - 20/Feb/08 10:47 AM It's worth noting that the entity being added to the collection gets persisted to the database prior to the actual execution of the OGNL expression responsible for the 'hitching-up' of the new entity to the collection. This explains why on subsequent renderings the new entity is never seen in the collection because the actual ADD never completed.
Hide
Permalink
Ken in nashua added a comment - 21/Feb/08 1:06 PM

I went as far as operating OGNL to perform an explicit merge and/or reattach.

Utils.executeOgnlExpression(referenceDescriptor.getAddExpression(),
getModel(), getParent());

try
{
HashMap context = new HashMap();
context.put("model", getModel());
context.put("parent", getParent());
Ognl.getValue("reattachCollection(#parent." +
((CollectionDescriptor) referenceDescriptor).getName() +
")", context, getPersistenceService() );
} catch (OgnlException e)
{
throw new TrailsRuntimeException(e, getParent().getClass());
}

getPersistenceService().save(getParent());

All collections have been merged and Stack trace continues to persist.

I am beginning to think that the session object is getting nailed for this OpenSessionInView pattern implementation.

Show
Ken in nashua added a comment - 21/Feb/08 1:06 PM I went as far as operating OGNL to perform an explicit merge and/or reattach. Utils.executeOgnlExpression(referenceDescriptor.getAddExpression(), getModel(), getParent()); try { HashMap context = new HashMap(); context.put("model", getModel()); context.put("parent", getParent()); Ognl.getValue("reattachCollection(#parent." + ((CollectionDescriptor) referenceDescriptor).getName() + ")", context, getPersistenceService() ); } catch (OgnlException e) { throw new TrailsRuntimeException(e, getParent().getClass()); } getPersistenceService().save(getParent()); All collections have been merged and Stack trace continues to persist. I am beginning to think that the session object is getting nailed for this OpenSessionInView pattern implementation.
Hide
Permalink
Ken in nashua added a comment - 21/Feb/08 3:57 PM

The attached patch is draft but at least gets editCollection to produce editable entities.

I hope to qualify this for HardOneToOne early next week and clean it up for evaluation to svn.

Have a great weekend.

Show
Ken in nashua added a comment - 21/Feb/08 3:57 PM The attached patch is draft but at least gets editCollection to produce editable entities. I hope to qualify this for HardOneToOne early next week and clean it up for evaluation to svn. Have a great weekend.
Hide
Permalink
Ken in nashua added a comment - 27/Feb/08 10:13 AM

Status...

This effects flat collections and hierarchical collections that operate inheritence (Person<--Officer).

I will confirm but this is starting to look like a hibernate 109 issue.

If this gets past a trails developer how much more would a trails user be effected? Which inclines me to think about an interface and possibly a canned POJO that all trails POJO might need to derive off could help herd the user community into designing their domain equals/hashCode methods properly... the interface would operate businessKey and hibernateKey. Something to think about while I stabilize my instance.

Show
Ken in nashua added a comment - 27/Feb/08 10:13 AM Status... This effects flat collections and hierarchical collections that operate inheritence (Person<--Officer). I will confirm but this is starting to look like a hibernate 109 issue. If this gets past a trails developer how much more would a trails user be effected? Which inclines me to think about an interface and possibly a canned POJO that all trails POJO might need to derive off could help herd the user community into designing their domain equals/hashCode methods properly... the interface would operate businessKey and hibernateKey. Something to think about while I stabilize my instance.
Hide
Permalink
Ken in nashua added a comment - 29/Feb/08 2:44 PM

Current findings require the following code be implemented to resolve this issue...

HibernatePersistenceServiceImpl.JAVA
@Transactional
public void reattachCollection(Object[] models)

{ if ( models != null ) for ( int i = 0; i < models.length; i++) reattach (models[i]); }

EditCollection.JAVA
public List<Boolean> buildSelectedList()
{
ArrayList<Boolean> selected =
new ArrayList<Boolean>();
if (getCollection() != null)
{
selected = new ArrayList<Boolean>(getCollection().size());
for (Object o : getCollection())

{ selected.add(false); }

getPersistenceService().reattachCollection(getCollection().toArray());
}
return selected;
}

Show
Ken in nashua added a comment - 29/Feb/08 2:44 PM Current findings require the following code be implemented to resolve this issue... HibernatePersistenceServiceImpl.JAVA @Transactional public void reattachCollection(Object[] models) { if ( models != null ) for ( int i = 0; i < models.length; i++) reattach (models[i]); } EditCollection.JAVA public List<Boolean> buildSelectedList() { ArrayList<Boolean> selected = new ArrayList<Boolean>(); if (getCollection() != null) { selected = new ArrayList<Boolean>(getCollection().size()); for (Object o : getCollection()) { selected.add(false); } getPersistenceService().reattachCollection(getCollection().toArray()); } return selected; }
Hide
Permalink
Ken in nashua added a comment - 18/Mar/08 3:46 PM

Updated patch...

Seems to be clean now and for linked JIRA too.

The main solution was catch UniqueObjectException... the rest of the framwork seems to work as-is OK.

The patch includes other code though... that supplements other JIRA.

Show
Ken in nashua added a comment - 18/Mar/08 3:46 PM Updated patch... Seems to be clean now and for linked JIRA too. The main solution was catch UniqueObjectException... the rest of the framwork seems to work as-is OK. The patch includes other code though... that supplements other JIRA.
Hide
Permalink
Alejandro Scandroli added a comment - 07/Apr/08 10:56 AM

looks like TRAILS-142 to me

Show
Alejandro Scandroli added a comment - 07/Apr/08 10:56 AM looks like TRAILS-142 to me

People

  • Assignee:
    Unassigned
    Reporter:
    Ken in nashua
Vote (0)
Watch (0)

Dates

  • Created:
    11/Feb/08 4:55 PM
    Updated:
    07/Apr/08 10:56 AM
    Resolved:
    07/Apr/08 10:56 AM
  • Atlassian JIRA (v5.0.4#731-sha1:3aa7374)
  • Report a problem
  • Powered by a free Atlassian JIRA open source license for Codehaus. Try JIRA - bug tracking software for your team.