Skip to content

Remove gpcontrib/gpmapreduce from the core - #2151

Merged
tuhaihe merged 1 commit into
apache:mainfrom
tuhaihe:remove-gpmapreduce
Oct 20, 2026
Merged

tuhaihe merged 1 commit into
apache:mainfrom
tuhaihe:remove-gpmapreduce

Conversation

@tuhaihe

@tuhaihe tuhaihe commented Oct 19, 2026

Copy link
Copy Markdown
Member

gpmapreduce has had no regression coverage since commit 4d926ed (2024-09-19) disabled its test in gpcontrib/Makefile, with the rationale that the functionality "is no longer need now". Only the test was turned off there; the build was not, so every release since has compiled and installed a 13.5k-line frontend binary that nothing tests. Greenplum deleted the same code in Jul 2023
(greenplum-db/gpdb-archive@6bc9129), stating it would not be provided for GPDB 7 and forward, so no upstream fix will ever reach us again.

Remove the source along with everything that only existed for it:

  • the --enable-mapreduce configure option, the USE_MAPREDUCE define that no C file ever referenced, and enable_mapreduce in Makefile.global.in
  • the mapreduce targets in gpcontrib/Makefile
  • the mapreduce flag in the devops build script and in the seven platform CONFIGFLAGS lines in gpAux/Makefile
  • gpMgmt/doc/gpmapreduce_help and its entry in the doc Makefile
  • the @gpwhich_gpmapreduce@ token in gptokencheck, in both src/test/regress and the contrib/pax_storage copy
  • the pom.xml RAT exclude for gpcontrib/gpmapreduce, which was the only whole-directory exclude under gpcontrib

libyaml stays a dependency: src/bin/gpfdist/transform.c uses it for gpfdist's transformation feature, and the enable_gpfdist branch has its own AC_SEARCH_LIBS and AC_CHECK_HEADERS, so have_yaml, YAML_LIBS and HAVE_YAML_H are all still set and no packaging or build image changes are needed. A missing libyaml is now only the gpfdist warning that disables transformations, rather than also being a hard configure error.

$GPHOME/bin/gpmapreduce is no longer built or installed. Passing --enable-mapreduce to configure now only prints an unrecognized option warning. Users who still need gpmapreduce should stay on 2.x, which keeps it for the supported life of that line.

configure was regenerated with autoconf 2.69. The committed configure was generated by a vanilla 2.69 while the 2.69 available here is Red Hat's, which adds --runstatedir, so rather than regenerating wholesale the diff between a before and after autoconf run was applied to the committed file; the result is 120 deleted lines in six hunks and no other change.

Discussion: #2030
Issue: #2136

Assisted-by: Claude Code

Fixes #ISSUE_Number

What does this PR do?

Type of Change

  • Bug fix (non-breaking change)
  • New feature (non-breaking change)
  • Breaking change (fix or feature with breaking changes)
  • Documentation update

Breaking Changes

Test Plan

  • Unit tests added/updated
  • Integration tests added/updated
  • Passed make installcheck
  • Passed make -C src/test installcheck-cbdb-parallel

Impact

Performance:

User-facing changes:

Dependencies:

Checklist

Additional Context

CI Skip Instructions


@tuhaihe
tuhaihe requested a review from leborchuk October 19, 2026 03:44
tuhaihe added a commit to tuhaihe/cloudberrydb that referenced this pull request Oct 19, 2026
Both are being removed from the core for 3.0 (apache#2150 and
apache#2151), so the full configuration stops building them. pxf is on by
default on both sides, so it is turned off explicitly: -Dpxf=disabled, and
--disable-pxf on the configure line the parity check runs. mapreduce is off
by default, so its flags simply go. The meson options themselves stay until
those PRs land; whichever lands second drops them, and the smoke test fails
on an option meson does not know rather than skipping its check, so that
cannot be missed.

The rest tidies the workflow:

  The cache of the gpMgmt Python tarballs goes. It saved a download of
  under a megabyte that the next step makes anyway, and skips when the
  files are already there, on a key that changed with every edit of
  gpMgmt/bin/Makefile. build-cloudberry.yml fetches the same files
  uncached.

  build and cluster-test get time limits, 90 and 30 minutes, as test
  already had one: a hung step would otherwise hold a runner for GitHub's
  six-hour default.

  BUILD_IMAGE was declared and never used -- a job's container image cannot
  read the env context -- so it goes.

  MESON_VERSION's comment called it a pin. It is a floor, and the comment
  now says how the floor is actually held.

Assisted-by: Claude Code
@tuhaihe tuhaihe added this to the 3.0 milestone Oct 20, 2026
@tuhaihe

tuhaihe commented Oct 20, 2026

Copy link
Copy Markdown
Member Author

We can apply this PR from Cloudberry 3.0

@tuhaihe
tuhaihe enabled auto-merge (rebase) October 20, 2026 01:47
gpmapreduce has had no regression coverage since commit 4d926ed
(2024-09-19) disabled its test in gpcontrib/Makefile, with the rationale
that the functionality "is no longer need now".  Only the test was
turned off there; the build was not, so every release since has
compiled and installed a 13.5k-line frontend binary that nothing tests.
Greenplum deleted the same code in Jul 2023
(greenplum-db/gpdb-archive@6bc9129), stating it would not be provided
for GPDB 7 and forward, so no upstream fix will ever reach us again.

Remove the source along with everything that only existed for it:

- the --enable-mapreduce configure option, the USE_MAPREDUCE define
  that no C file ever referenced, and enable_mapreduce in
  Makefile.global.in
- the mapreduce targets in gpcontrib/Makefile
- the mapreduce flag in the devops build script and in the seven
  platform CONFIGFLAGS lines in gpAux/Makefile
- gpMgmt/doc/gpmapreduce_help and its entry in the doc Makefile
- the @gpwhich_gpmapreduce@ token in gptokencheck, in both
  src/test/regress and the contrib/pax_storage copy
- the pom.xml RAT exclude for gpcontrib/gpmapreduce, which was the only
  whole-directory exclude under gpcontrib

libyaml stays a dependency: src/bin/gpfdist/transform.c uses it for
gpfdist's transformation feature, and the enable_gpfdist branch has its
own AC_SEARCH_LIBS and AC_CHECK_HEADERS, so have_yaml, YAML_LIBS and
HAVE_YAML_H are all still set and no packaging or build image changes
are needed.  A missing libyaml is now only the gpfdist warning that
disables transformations, rather than also being a hard configure
error.

$GPHOME/bin/gpmapreduce is no longer built or installed.  Passing
--enable-mapreduce to configure now only prints an unrecognized option
warning.  Users who still need gpmapreduce should stay on 2.x, which
keeps it for the supported life of that line.

configure was regenerated with autoconf 2.69.  The committed configure
was generated by a vanilla 2.69 while the 2.69 available here is Red
Hat's, which adds --runstatedir, so rather than regenerating wholesale
the diff between a before and after autoconf run was applied to the
committed file; the result is 120 deleted lines in six hunks and no
other change.

Discussion: apache#2030
Issue: apache#2136

Assisted-by: Claude Code
@tuhaihe
tuhaihe force-pushed the remove-gpmapreduce branch from 061b8cd to 087d65f Compare October 20, 2026 01:52
@tuhaihe
tuhaihe merged commit 5d03c2c into apache:main Oct 20, 2026
118 of 119 checks passed
@tuhaihe
tuhaihe deleted the remove-gpmapreduce branch October 22, 2026 03:46
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.

3 participants