Hi all. 2011/5/27 Ikuo Yamasaki <[email protected]>
> BJ, > > I got what you mean. Thanks as always! > > Ikuo > > On Thu, 26 May 2011 22:24:46 -0400 > BJ Hargrave <[email protected]> wrote: > > BJ> Bundle.uninstall does not call Bundle.stop. It just says it stops the > BJ> bundle as described in Bundle.stop. First Bundle.uninstall must obtain > the > BJ> state change lock. Once this occurs, the bundle can be stopped. Any > BJ> exception thrown by BundleActivator.stop is published as a > FrameworkEvent, > BJ> but uninstall still completes normally. Only if the state change lock > BJ> cannot be obtained in a reasonable time, will uninstall terminate with > an > BJ> exception. > BJ> > BJ> So case 1 never happens during uninstall since uninstall does not call > BJ> stop. > BJ> -- > BJ> > BJ> BJ Hargrave > BJ> Senior Technical Staff Member, IBM > BJ> OSGi Fellow and CTO of the OSGi Alliance > BJ> [email protected] > BJ> > BJ> office: +1 386 848 1781 > BJ> mobile: +1 386 848 3788 > BJ> > BJ> > BJ> > BJ> > BJ> > BJ> From: Ikuo Yamasaki <[email protected]> > BJ> To: OSGi Developer Mail List <[email protected]> > BJ> Date: 2011/05/26 20:53 > BJ> Subject: Re: [osgi-dev] Q on Bundle#uninstall() > BJ> Sent by: [email protected] > BJ> > BJ> > BJ> > BJ> Hi BJ, > BJ> > BJ> On Thu, 26 May 2011 18:46:25 -0400 > BJ> BJ Hargrave <[email protected]> wrote: > BJ> > BJ> BJ> No. If stop completes with an exception, uninstall can still > proceed. > BJ> BJ> Uninstall can fail if the state change lock is held by another > thread > BJ> and > BJ> BJ> that thread does not release the lock in some reasonable time. > BJ> > BJ> Spec says: > BJ> -- quote ------------------------------------------------------- > BJ> public void stop( int options ) throws BundleException > BJ> > BJ> 2 If this bundle is in the process of being activated or deactivated > then > BJ> this > BJ> method must wait for activation or deactivation to complete before > BJ> continuing. > BJ> If this does not occur in a reasonable time, a BundleException is > BJ> thrown to indicate this bundle was unable to be stopped. > BJ> > BJ> -- quote ------------------------------------------------------- > BJ> > BJ> It seems to me there exists two cases: > BJ> > BJ> Case1: Bundle.stop() throws BundleException due to the above reason. > BJ> (Bundle#uninstall() does not throw BundleException) > BJ> > BJ> Case2: the state change lock is held by another thread and > BJ> that thread does not release the lock in some reasonable time. > BJ> (Bundle#uninstall() throws BundleException) > BJ> > BJ> Q1. Does Case2 include Case1 or not ? > BJ> > BJ> For me, yes. > BJ> > BJ> Q2. when should those check for Case2 be done in the following steps > BJ> described in "6.1.4.35 public void uninstall( )" > BJ> > BJ> --begin quote--- > BJ> The following steps are required to uninstall a bundle: > BJ> 1 If this bundle’s state is UNINSTALLED then an IllegalStateException > is > BJ> thrown. > BJ> 2 If this bundle’s state is ACTIVE, STARTING or STOPPING, this bundle > is > BJ> stopped as described in the Bundle.stop method. If Bundle.stop throws > BJ> an exception, a Framework event of type FrameworkEvent.ERROR is > BJ> fired containing the exception. > BJ> 3 This bundle’s state is set to UNINSTALLED. > BJ> 4 A bundle event of type BundleEvent.UNINSTALLED is fired. > BJ> 5 This bundle and any persistent storage area provided for this bundle > by > BJ> the Framework are removed. > BJ> --end quote--- > BJ> > BJ> Q3. Even in Case2, step 3-5 should be done. Is my understanding correct > ? > BJ> > BJ> ======= > BJ> Ikuo YAMASAKI > BJ> > BJ> > BJ> _______________________________________________ > BJ> OSGi Developer Mail List > BJ> [email protected] > BJ> https://mail.osgi.org/mailman/listinfo/osgi-dev > BJ> > > ======= > Ikuo YAMASAKI > > > _______________________________________________ > OSGi Developer Mail List > [email protected] > https://mail.osgi.org/mailman/listinfo/osgi-dev >
_______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
