-
Notifications
You must be signed in to change notification settings - Fork 89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lifecycle Management of RemoteServiceAdmin #653
Comments
I've verified that adding size = celix_arrayList_size(stopEntries);
for (int i = size-1; i >= 0; --i) { //note loop in reverse order -> stop later installed bundle first
celix_framework_bundle_entry_t *entry = celix_arrayList_get(stopEntries, i);
//NOTE possible starvation.
// fw_bundleEntry_waitTillUseCountIs(entry, 1); //note this function has 1 use count.
//note race between condition (use count == 1) and bundle stop, meaning use count can be > 1 when
//celix_framework_stopBundleEntry is called.
bundle_state_e state = celix_bundle_getState(entry->bnd);
if (state == CELIX_BUNDLE_STATE_ACTIVE || state == CELIX_BUNDLE_STATE_STARTING) {
celix_framework_stopBundleEntry(fw, entry);
}
}
for (int i = size-1; i >= 0; --i) { //note loop in reverse order -> uninstall later installed bundle first
celix_framework_bundle_entry_t *entry = celix_arrayList_get(stopEntries, i);
celix_framework_uninstallBundleEntry(fw, entry, false);
}
celix_arrayList_destroy(stopEntries); And it can be narrowed down to the consumer bundle. The following can manifest the issue: TEST_F(RemoteServicesIntegrationTestSuite, StartStopFrameworks) {
// installProviderBundles();
installConsumerBundles();
}
|
I suspect this is a lifecycle management bug of Note that Note also that any bundle should be able to be uninstalled independent of other bundles. This shows that any object passing through Celix service should be managed by the object owner bundle some way. |
Currently, |
The text was updated successfully, but these errors were encountered: