Zum Hauptinhalt springen
Echtzeit-Radar & Feeds
Alle RSS Feeds ➔
👥 Community & Social
Windows Tipps & SecurityGrafikkarte vor Überhitzung schützen: So geht’s(25.09.2026 um 08:00 Uhr)
••••••••••
Windows Tipps & SecurityGrafikkarte vor Überhitzung schützen: So geht’s(25.09.2026 um 08:00 Uhr)
••••••••••
Intelligence View
⚡ tsecurity.de Intelligence

(II)A Comprehensive Code Analysis of the Worker Service Startup of DolphinScheduler 3.1.9

In modern data-driven enterprises, workflow scheduling systems are the "central nervous system" of data pipelines. From ETL tasks to machine learning training, report generation to real-time monitoring, nearly all critical business…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

In modern data-driven enterprises, workflow scheduling systems are the "central nervous system" of data pipelines. From ETL tasks to machine learning training, report generation to real-time monitoring, nearly all critical business processes rely on a stable, efficient, and scalable scheduling engine.



I believe Apache DolphinScheduler 3.1.9 is a stable and widely used version. Therefore, this series of articles will delve into its core source code, analyzing its architecture design, module division, and key implementation mechanisms to help developers understand how the Master and Worker "work" and lay a foundation for further secondary development or performance optimization.



Previously, we analyzed the Apache DolphinScheduler 3.1.9 Master server startup process source code, which you can check if interested. This article is the second in the Apache DolphinScheduler 3.1.9 source code analysis series: Worker Server startup process source code interpretation and related process design. Flowcharts are provided at the end for reference.






2. Worker Server Startup Core Overview




  • Code entry point: org.apache.dolphinscheduler.server.worker.WorkerServer#run




public void run() {
// 1. rpc start
this.workerRpcServer.start();
// Ignore, as workerRpcServer initialization includes workerRpcClient initialization
this.workerRpcClient.start();
// 2. Task plugin initialization
this.taskPluginManager.loadPlugin();

this.workerRegistryClient.setRegistryStoppable(this);
// 3. Worker registration
this.workerRegistryClient.start();

// 4. Worker management thread, continuously fetch tasks from the waitSubmitQueue and submit them to the thread pool
this.workerManagerThread.start();

// 5. Message retry thread, responsible for polling and sending services via RPC
this.messageRetryRunner.start();
...
}









2.1 RPC Start:




  • Description: Registers processors for relevant commands such as task request, task stop request, etc.

  • Code entry point: org.apache.dolphinscheduler.server.worker.rpc.WorkerRpcServer#start




    public void start() {
LOGGER.info("Worker rpc server starting");
NettyServerConfig serverConfig = new NettyServerConfig();
serverConfig.setListenPort(workerConfig.getListenPort());
this.nettyRemotingServer = new NettyRemotingServer(serverConfig);
// Receives and dispatches task requests, putting tasks into the waitSubmitQueue for later processing
this.nettyRemotingServer.registerProcessor(CommandType.TASK_DISPATCH_REQUEST, taskDispatchProcessor);
...
this.nettyRemotingServer.start();
LOGGER.info("Worker rpc server started");
}









2.2 Task Plugin Initialization:




  • Description: Initializes task-related templates, such as task creation, parameter parsing, and resource information retrieval.






2.3 Worker Registration:




  • Description: Registers worker information with a registry center (Zookeeper in this example) and listens for connection state changes.

  • Code entry point: org.apache.dolphinscheduler.server.worker.registry.WorkerRegistryClient#start




    public void start() {
try {
// Register worker info with the registry center
registry();
// Listen for connection state changes
registryClient.addConnectionStateListener(new WorkerConnectionStateListener(workerConfig, registryClient, workerConnectStrategy));
} catch (Exception ex) {
throw new RegistryException("Worker registry client start-up error", ex);
}
}









2.4 Worker Management Thread:




  • Description: Continuously retrieves tasks from the waitSubmitQueue and submits them to the thread pool for processing.

  • Code entry point: org.apache.dolphinscheduler.server.worker.runner.WorkerManagerThread#run




    public void run() {
Thread.currentThread().setName("Worker-Execute-Manager-Thread");
while (!ServerLifeCycleManager.isStopped()) {
try {
if (!ServerLifeCycleManager.isRunning()) {
Thread.sleep(Constants.SLEEP_TIME_MILLIS);
}
// If thread pool resources are sufficient, process the task
final WorkerDelayTaskExecuteRunnable workerDelayTaskExecuteRunnable = waitSubmitQueue.take();
workerExecService.submit(workerDelayTaskExecuteRunnable);
...
} catch (Exception e) {
logger.error("An unexpected interrupt happened", e);
}
}
}









2.5 Message Retry Thread:




  • Description: If the worker doesn't receive an acknowledgment (ack) for a task request from the master, this thread retries the message at intervals, typically every 5 minutes.





Official documentation provides various flowcharts, such as fault-tolerance mechanisms and distributed lock implementation flowcharts. For more details, visit Architecture Design and Design Documentation.



This article supplements the task dispatch and task stop flowcharts, and only describes the normal process of instance startup and shutdown. It does not include fault-tolerant recovery scenarios, nor does it cover related locking or concurrency scenarios.




  • Task Dispatch Flow:

    1


  • Task Stop Flow:




2






Conclusion



This is an initial understanding of Apache DolphinScheduler 3.1.9 features and architecture based on personal learning and practice. There might be misunderstandings or omissions in the article, so feedback is welcome. If you're interested in the source code, you can dive deeper into the task scheduling strategy or develop secondary applications based on your business scenarios.

1. Sofort-Triage & Abwehrmaßnahmen

SOC Incident Playbook: Remote Code Execution (RCE) Defense
Syntax validiert (0 Fehler)
title: Detect Exploitation - (II)A Comprehensive Code Analysis of the Worker Service Startup of DolphinScheduler 3.1.9
id: 52f29835-5dd0-438c-8117-40e38becb6ec
status: experimental
description: Automatisch generierte SIEM-Erkennungsregel basierend auf CTI Intelligence
references:
  - https://tsecurity.de/
author: iShareStuff CTI Automated Detection Engine
date: 2026-09-25
logsource:
  category: network_connection
  product: any
detection:
  selection:
      CommandLine|contains:
        - 'exploit'
  condition: selection
falsepositives:
  - Legitime administrative Zugriffe oder Penetrationstests
level: high
tags:
  - attack.initial_access
Syntax validiert (0 Fehler)
rule CTI_Threat_Indicator {
    meta:
        author = "iShareStuff CTI Automated Detection Engine"
        date = "2026-09-25"
        description = "YARA Signature for "
    strings:
        $str = "(II)A Comprehensive Code Analy" ascii wide
    condition:
        any of them
}
Syntax validiert (0 Fehler)
index=security sourcetype IN ("cisco:asa", "pan:traffic", "zeek_conn", "suricata", "WinEventLog:Security")
("IIA Comprehensive Code Analysis of the W")
| stats count earliest(_time) as first_seen latest(_time) as last_seen by src_ip, dest_ip, dest_host, signature
| eval first_seen=strftime(first_seen, "%Y-%m-%d %H:%M:%S"), last_seen=strftime(last_seen, "%Y-%m-%d %H:%M:%S")
| sort - count
Syntax validiert (0 Fehler)
message: "*IIA Comprehensive Code Analysis of the W*"
Syntax validiert (0 Fehler)
CommonSecurityLog
| where Message has "IIA Comprehensive Code Analysis of the W"
| summarize EventCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by SourceIP, DestinationIP, DestinationPort, Activity
| extend DetectionRule = "iShareStuff-CTI-Compiled"
| sort by EventCount desc

2. Cyber Threat Intelligence & Forensik

CTI Threat Relationship Graph3 Knoten / 2 Relationen
CVE / Incident Software MITRE ATT&CK CWE Weakness IoC
🎯
MITRE ATT&CK Matrix Navigator 14 Taktiken
Reconnaissance
-
Resource Development
-
Initial Access
Execution
Persistence
-
Privilege Escalation
Defense Evasion
Credential Access
-
Discovery
-
Lateral Movement
-
Collection
-
Command and Control
Exfiltration
-
Impact
tsecurity.de Cognitive Threat RAG
Fokus-Vektor:

Kognitive Analyse für identifizierte Bedrohung: Erhöhte Bedrohungslage im Bereich (II)A Comprehensive Code Analysis of the.... Basierend auf 368k Vektor-Korrelationen werden sofortige Isolationsmaßnahmen für betroffene Endpunkte empfohlen.

🛡️ Angriffsfläche & Exposure

Netzwerk/Remote-Zugriff ohne Vorauthentifizierung möglich.

⚡ Empfohlene Sofortmaßnahmen
  • 1. Perimeter-Inspektion: Relevante Portfreigaben und exponierte Endpunkte unverzüglich scannen.
  • 2. Patch-Applikation: Hersteller-Hotfix einspielen oder betroffene Daemons in isolierte DMZ-Segmente überführen.
  • 3. Telemetrie & EDR-Alerts: Prozessaufrufe und Child-Processes auf anomale Shell-Spawns überwachen.
🔗 Semantisch verwandte Zero-Days MariaDB 11.7 VEC
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten (II)A Comprehensive Code Analysis of the Worker Service Startup of DolphinScheduler 3.1.9

Thematisch verwandte Begriffe: Comprehensive, Code, Analysis, Worker · 6 Treffer

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-100372 | ClipBucket v5 before 5.5.3-#197 contains a path traversal vulnerability…
Advisory →
tsecurity.de Icon
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag