Class AsyncResourceDisposer
- java.lang.Object
-
- hudson.model.AbstractModelObject
-
- hudson.model.AdministrativeMonitor
-
- org.jenkinsci.plugins.resourcedisposer.AsyncResourceDisposer
-
- All Implemented Interfaces:
ExtensionPoint
,ModelObject
,SearchableModelObject
,SearchItem
,Serializable
,org.kohsuke.stapler.StaplerProxy
@Extension public class AsyncResourceDisposer extends AdministrativeMonitor implements Serializable
Track resources to be disposed asynchronously. In order to have resource disposed safely and eventual failures tracked for Jenkins admins to see, register wrapped resources usingdispose(org.jenkinsci.plugins.resourcedisposer.Disposable...)
. Implementation details: The disposer can be quite loaded during massive resource eviction. Therefore, the persisted state is guaranteed to be preserved only for purposes of resource tracking but not necessarily with their individual state. IOW, tracking adding and removing disposables is critical while tracking their state is not performed as it is cheap to recalculate. Resource set is persisted when disposables are registered/unregistered and periodically to capture successful resource removals. The last state is not part of the persisted data at all.- Author:
- ogondza
- See Also:
Disposable
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AsyncResourceDisposer.Scheduler
Reschedule failed attempts.static class
AsyncResourceDisposer.WorkItem
Disposable wrapper to be run in threadpool and track success/failure.-
Nested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudson
-
-
Field Summary
-
Fields inherited from class hudson.model.AdministrativeMonitor
id
-
-
Constructor Summary
Constructors Constructor Description AsyncResourceDisposer()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
dispose(Iterable<? extends Disposable> disposables)
Schedule resource to be disposed.void
dispose(Disposable... disposables)
Schedule resource to be disposed.Future<AsyncResourceDisposer.WorkItem>
disposeAndWait(Disposable disposable)
Only exposed for testing.org.kohsuke.stapler.HttpResponse
doStopTracking(int id, org.kohsuke.stapler.StaplerResponse rsp)
static AsyncResourceDisposer
get()
Set<AsyncResourceDisposer.WorkItem>
getBacklog()
Get list of resources do be disposed.String
getDisplayName()
boolean
isActivated()
void
reschedule()
Force rescheduling of all tracked tasks.void
reset()
-
Methods inherited from class hudson.model.AdministrativeMonitor
all, disable, doDisable, getRequiredPermission, getSearchUrl, getTarget, getUrl, isEnabled, isSecurity
-
Methods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, makeSearchIndex, requirePOST, sendError, sendError, sendError, sendError, sendError
-
-
-
-
Method Detail
-
get
@NonNull public static AsyncResourceDisposer get()
-
getBacklog
@NonNull public Set<AsyncResourceDisposer.WorkItem> getBacklog()
Get list of resources do be disposed.- Returns:
- Entries to be processed.
-
getDisplayName
public String getDisplayName()
- Specified by:
getDisplayName
in interfaceModelObject
- Overrides:
getDisplayName
in classAdministrativeMonitor
-
isActivated
public boolean isActivated()
- Specified by:
isActivated
in classAdministrativeMonitor
-
dispose
public void dispose(@NonNull Disposable... disposables)
Schedule resource to be disposed.- Parameters:
disposables
- Resource wrappers to be deleted.
-
dispose
public void dispose(@NonNull Iterable<? extends Disposable> disposables)
Schedule resource to be disposed.- Parameters:
disposables
- Resource wrappers to be deleted.
-
doStopTracking
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public org.kohsuke.stapler.HttpResponse doStopTracking(@QueryParameter int id, org.kohsuke.stapler.StaplerResponse rsp)
-
reschedule
public void reschedule()
Force rescheduling of all tracked tasks.
-
disposeAndWait
public Future<AsyncResourceDisposer.WorkItem> disposeAndWait(Disposable disposable)
Only exposed for testing. Dispose providing Future to wait for first dispose cycle to complete.
-
reset
public void reset()
-
-