Skip to content

Parallelize DC discovery and improve diagnostics and UI reliability#26

Open
zbalkan wants to merge 26 commits into
ryanries:masterfrom
zbalkan:master
Open

Parallelize DC discovery and improve diagnostics and UI reliability#26
zbalkan wants to merge 26 commits into
ryanries:masterfrom
zbalkan:master

Conversation

@zbalkan

@zbalkan zbalkan commented Jun 15, 2026

Copy link
Copy Markdown

Summary

This PR delivers a major reliability and performance update for domain controller discovery and replication checks. It parallelizes long-running discovery operations, improves progress reporting, routes DC-override discovery through the selected domain controller, and strengthens diagnostics across the UI.

It also upgrades the project to .NET Framework 4.8.1, cleans up the WinForms implementation, and reorganizes supporting code and project structure.

Key changes

Discovery and replication

  • Parallelized domain controller discovery and replication checks.
  • Added progress updates during long-running discovery operations.
  • Updated forest discovery so that, when DC override is enabled, discovery is routed through the user-selected domain controller instead of DNS-based discovery.
  • Added guards for empty domain controller input.
  • Marked DC-override globals as volatile to reduce stale-state risk across worker-thread usage.
  • Added preflight checks and timeouts for unreachable DCs, solving Discovery can be slow in environments where DCs are offline or unreachable #3.

UI reliability

  • Moved TreeListView updates to RunWorkerCompleted to avoid cross-thread UI access.
  • Replaced ActiveForm usage with the current form instance.
  • Fixed a TreeListView expansion crash by defining explicit AspectGetter and ChildrenGetter handlers.
  • Used Close() where appropriate for more predictable dialog behavior.
  • Improved dark-mode consistency across dialogs.

Diagnostics

  • Updated the Ping dialog to support both IPv4 and IPv6.
  • Cleaned up the Port Tester implementation.
  • Added support for multi-port test runs.

Housekeeping

  • Added basic unit tests for extracted business logic classes
  • Extracted the AD domain controller object model into ADREPLDC.
  • Migrated the project to .NET Framework 4.8.1.
  • Enabled the WinForms out-of-process designer.
  • Added .editorconfig.
  • Simplified the folder layout.
  • Updated README and resource files.
  • Bumped the version to 1.4.0.0.
  • Applied general code-style cleanup.

zbalkan added 24 commits June 14, 2026 18:44
Signed-off-by: Zafer Balkan <zafer@zaferbalkan.com>
@zbalkan zbalkan changed the title Parallelize DC discovery and improve diagnostics Parallelize DC discovery and improve diagnostics and UI reliability Jun 15, 2026
@zbalkan

zbalkan commented Jun 15, 2026

Copy link
Copy Markdown
Author

This PR became larger than I expected. I screwed up with parallelization and over-engineered and started from scratch, then quit. Thanks to LLMs, I get my old branches reviewed and merged them into this but it does a lot for a single PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant