Skip to content

feat(hbase): add universal foreground process management - #209

Open
whg517 wants to merge 1 commit into
zncdatadev:mainfrom
whg517:feat/hbase-entrypoint-framework
Open

whg517 wants to merge 1 commit into
zncdatadev:mainfrom
whg517:feat/hbase-entrypoint-framework

Conversation

@whg517

@whg517 whg517 commented Oct 14, 2026

Copy link
Copy Markdown
Member

Summary

  • Add product-local universal container lifecycle and checksum-pinned Tini, preserving UID 1001 and the native hbase master start CMD.
  • Preserve original HBase/native daemon launchers. Foreground paths already exec Java; no source launcher rewrites or operator changes.
  • Root-owned sticky HOME permits user cache writes while protecting framework paths. Root-owned projected hooks, stdin retention, stderr-only framework diagnostics, exit propagation, bounded TERM/INT shutdown, repeated cleanup signals and orphan reaping.
  • Preserve both HBase versions, operator tools, Hadoop AWS libraries, JMX, async-profiler and oauth2-proxy. No shared/base or sibling feature commits.
  • Fail fast on source download/archive errors and bound product/operator-tools download retries; validate gzip integrity before extraction so network truncation cannot become a misleading missing-POM failure.

Validation

  • Full local source/dependency builds for both 2.6.1 and 2.6.2, followed by all four suites against current source-built runtimes. The local Hadoop build uses a verification-only, certificate-validated HTTPS transport adapter to official Maven Central after native Java HTTP reads timed out. Original source, patches, SDKs, dependency versions and compile/native goals are unchanged. No published product distribution is used for final source acceptance. Upstream CI runs the unmodified production build.
  • Generic source regressions including root-owned hook checks, Bash syntax, ShellCheck cross-source/intentional child-shell exclusions SC1091/SC2016/SC2034/SC2329, actionlint and diff-check.
  • Runtime metadata/UID, exact current script hashes, writable HOME/protected framework paths, projected hooks, retained stdin/clean stdout, statuses 7/127/42, TERM/INT, bounded KILL, repeated cleanup signals, orphan reaping and confidential framework argv.
  • Six actual native roles (master, regionserver, rest, thrift, thrift2, zookeeper) with an instrumented JVM verify class/general and role-specific options/argv, managed exec PID identity and normal/signal status.
  • Real default HMaster standalone creates/writes/reads/flushes a table, restarts the same container, preserves table bytes and cluster identity and handles TERM/INT with exactly-once hooks and no surviving service JVM.
  • CI runs all four suites after every native version/amd64/arm64 build. Local architecture is amd64; arm64 proof comes from CI.

Deployment and test boundaries

Supply appropriate deployment configuration. Test-only standalone mode uses embedded ZooKeeper/RegionServer and local filesystem settings exclusively in disposable containers; no host data or ports are exposed. Production configuration and deployment/bootstrap policies are untouched. No distributed HDFS, HA failover, Kerberos, REST/Thrift protocol or Phoenix integration acceptance is claimed.

Do not use background daemon start scripts or set HBASE_NOEXEC for the managed container main command. Native daemon administration remains unchanged. Native HBase DEBUG can print options; the framework's debug privacy guarantee does not modify native explicit DEBUG behavior.

Kubernetes command overrides ENTRYPOINT and bypasses the framework. Existing HBase operator custom bash/trap commands remain unchanged and keep their prior lifecycle. Use args or explicitly invoke the universal entrypoint for image-managed hooks.

No operator-go promotion or framework defect is introduced: no Go framework/operator APIs are changed. No merge, release or public image publishing is part of this workflow.

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