apache / apache/pinot

PluginManager has fragile dependency on singleton and system properties

Open
#7,457 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
6.1k
Forks
1.5k
Avg merge
1d 21h
Merged PRs (30d)
189

Description

There's an issue with how the PluginManager (the only class using PluginClassLoader) gets initialized. It has a static PluginManager variable that uses system properties to locate classes to load, which is fragile as code that sets up this system property must run before the PluginManager class gets loaded. One example of this is `HadoopSegmentCreationMapper`.

In general having a singleton is problematic in an environment like Hadoop/Spark/Flink, where multiple task threads are running in the same JVM.

Contributor guide

Open the contributing guide

Research direction

Start by reading PluginManager and PluginClassLoader, then inspect how HadoopSegmentCreationMapper sets the relevant system property before PluginManager loads. Trace initialization in Hadoop, Spark, and Flink-style multi-task JVM usage. Done means removing the fragile singleton and initialization-order dependency while preserving plugin loading for these environments.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, distributed-systems
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.