Uploaded image for project: 'Apache NiFi'
  1. Apache NiFi
  2. NIFI-8054

When components are removed from flow, their class loaders are not cleaned up

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 1.13.0
    • Core Framework
    • None

    Description

      When a component is removed from the flow, its corresponding classes/classloaders are not removed from the JVM's count of loaded classes. This can be seen by creating a Process Group with several processors that use the @RequiresInstanceClassLoading annotation (GetHDFS, for example). Then use a profiler/JConsole/etc. to see how many classes are loaded into memory. After the Process Group is deleted and GC is performed, the number of classes loaded should drop significantly. Currently, it does not. So if instantiate a template, delete the Process Group, instantiate it again, delete it again, etc. then I get into a situation where I run out of memory and see OutOfMemoryError: GC overhead limit exceeded.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            markap14 Mark Payne
            markap14 Mark Payne
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 20m
                20m

                Slack

                  Issue deployment