Denis, you are right. I was able to reproduce your problem. Good catch. Thank you for reporting the issue.
On Thu, Dec 1, 2011 at 12:08 PM, Denis Stepanov <[email protected]>wrote: > Igor, problem is that it doesn't work how it should, it is hard to explain > :) btw I can tell a difference between proxy and real instance. > > see steps to reproduce it https://issues.apache.org/jira/browse/TAP5-1765 > > I hope nobody has an upload component in production, interrupted file > upload and every component event throws an exception. :) > > Denis > > Nov 30, 2011 v 6:21 PM, Igor Drobiazko: > > > I'm sorry but I still don't get where the problem is. MultipartDecoder is > > per-thread service; there is not problem with @Autobuild in the builder > > method. UploadExceptionFilter holds the old instance because it holds the > > proxy which delegates to per-thread instances of MultipartDecoderImpl. > > > > On Wed, Nov 30, 2011 at 2:56 PM, Denis Stepanov < > [email protected]>wrote: > > > >> There is no problem with the code, problem is that it doesn't work how > it > >> should since 5.3. MultipartDecoder is recreated I can see code beeing > >> invoked but UploadExceptionFilter still has the old instance an it will > >> throw an upload exception every component event. > >> > >> Problem it seems to be related to the using of Autobuild in a build > >> method, if I replace it with a constructor call MultipartDecoder will > >> became perthread again. > >> > >> Denis > >> > >> Nov 30, 2011 v 1:42 PM, Igor Drobiazko: > >> > >>> Hi, > >>> > >>> it works as expected. @Autobuild is a convenient way to invoke > >>> ObjectLocator#autobuild. As mentioned in the Javadocs, autobuild > >>> instantiates an object by invoking the public constructor with the most > >>> parameters. No scopes are mentioned there. > >>> > >>> Because the buildMultipartDecoder is annotated > >>> with @Scope(ScopeConstants.PERTHREAD), it's invoked for every new > thread. > >>> The consequence is that the injected MultipartDecoderImpl instance is > >>> autobuild for every new request. > >>> > >>> I see no problems with that code. > >>> > >>> On Wed, Nov 30, 2011 at 1:27 PM, Denis Stepanov < > >> [email protected]>wrote: > >>> > >>>> Hi, > >>>> > >>>> It seems that instance created with @Autobuild will have default > scope, > >>>> perthread is not honored at all, see folowing code from Upload > project: > >>>> > >>>> @Scope(ScopeConstants.PERTHREAD) > >>>> public static MultipartDecoder buildMultipartDecoder(PerthreadManager > >>>> perthreadManager, > >>>> > >>>> > >>>> RegistryShutdownHub shutdownHub, > >>>> > >>>> @Autobuild > >>>> > >>>> MultipartDecoderImpl multipartDecoder) > >>>> { > >>>> // This is proabably overkill since the FileCleaner should catch > >>>> temporary files, but lets > >>>> // be safe. > >>>> perthreadManager.addThreadCleanupListener(multipartDecoder); > >>>> > >>>> if (needToAddShutdownListener.getAndSet(false)) > >>>> { > >>>> shutdownHub.addRegistryShutdownListener(new Runnable() > >>>> { > >>>> public void run() > >>>> { > >>>> FileCleaner.exitWhenFinished(); > >>>> } > >>>> }); > >>>> } > >>>> > >>>> return multipartDecoder; > >>>> } > >>>> > >>>> MultipartDecoder should be perthread but it isn't, if there is an > upload > >>>> exception every component event will throw that upload exception > because > >>>> service have not been recreated perthread. > >>>> > >>>> Everything start to work correctly when I change build method to not > >> have > >>>> the autobuild implementation. > >>>> > >>>> Denis > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: [email protected] > >>>> For additional commands, e-mail: [email protected] > >>>> > >>>> > >>> > >>> > >>> -- > >>> Best regards, > >>> > >>> Igor Drobiazko > >>> http://tapestry5.de > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [email protected] > >> For additional commands, e-mail: [email protected] > >> > >> > > > > > > -- > > Best regards, > > > > Igor Drobiazko > > http://tapestry5.de > > -- Best regards, Igor Drobiazko http://tapestry5.de
