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 using dispose(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:
  • Constructor Details

    • AsyncResourceDisposer

      public AsyncResourceDisposer()
  • Method Details

    • 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 interface ModelObject
      Overrides:
      getDisplayName in class AdministrativeMonitor
    • isActivated

      public boolean isActivated()
      Specified by:
      isActivated in class AdministrativeMonitor
    • 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.StaplerResponse2 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()