diff --git a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/DataProviderService.java b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/DataProviderService.java index 9081b55ae..2e8587876 100644 --- a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/DataProviderService.java +++ b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/DataProviderService.java @@ -1318,7 +1318,16 @@ public Response deleteDerivedProvider( if (configurator == null) { return Response.status(Status.NOT_FOUND).entity(NO_SUCH_PROVIDER).build(); } + + // Get all descriptors of all corresponding derived data providers + List allDerivedDps = manager.getAvailableProviders(experiment, derivedDescriptor.getConfiguration()); + + // Remove any derived data provider instances stored in the manager + allDerivedDps.forEach(desc -> manager.removeDataProvider(experiment, desc.getId())); + + // Clean-up configuration configurator.removeDataProviderDescriptor(experiment, derivedDescriptor); + return Response.ok(derivedDescriptor).build(); } catch (TmfConfigurationException e) { return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();