[SERVER-42813] 4.2.0 regression (vs 4.0.12): Build failure with --use-system-wiredtiger Created: 13/Aug/19  Updated: 27/Oct/23  Resolved: 08/Sep/20

Status: Closed
Project: Core Server
Component/s: Build
Affects Version/s: 4.2.0
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: James Harvey Assignee: Brian Lane
Resolution: Gone away Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Operating System: ALL
Steps To Reproduce:

Install wiredtiger commit 1a1197, configure mongoDB with "--use-system-wiredtiger", and attempt to build mongoDB.

Sprint: Storage Engines 2019-08-26
Participants:

 Description   

I'm the maintainer of the mongoDB package in the Arch Linux AUR repository.  We've always built wiredtiger as a separate package, and given the "--use-system-wiredtiger" build option for mongoDB.  This works through 4.0.12.

We always check the git repo of the tag of the mongoDB release, for the latest commit in "mongo/src/third_party/wiredtiger" which as of tag "r4.2.0" is "Import wiredtiger: 1a1197ef3c891458cd73290ad9b01c1e969f7e86..."  We then package that wiredtiger commit.

Wiredtiger 1a1197 properly builds, and only contains "libwiredtiger-3.2.0.so", "libwiredtiger.so", and "libwiredtiger_lz4.so".

But, when attempting to build mongoDB 4.2.0 with the "--use-system-wiredtiger" option, it fails with this error:

build/opt/mongo/mongo failed: Implicit dependency `src/third_party/wiredtiger/libwiredtiger_checksum.a' not found, needed by target `build/opt/mongo/mongo'.

I don't know if "libwiredtiger-3.2.0.so" has what it needs.  "nm -D | grep checksum" only shows "__wt_checksum_sw".  Maybe that's all it needs, and this part of the mongoDB build doesn't know to use the system library.

Maybe a new configure option is needed for wiredtiger.  We currently use:

 

./configure --prefix=/usr --enable-leveldb --enable-lz4 --enable-tcmalloc --enable-verbose --with-builtins=snappy,zlib

"./configure --help" doesn't show me any new option that might be needed like "--enable-checksum".  I see only: "--with-berkeleydb", "--with-helium", and "--enable-leveldb" were removed (so I'll remove the leveldb); and, "--enable-page-version-ts" was added.

 

Maybe wiredtiger's "make install" doesn't contain a new .so?

 



 Comments   
Comment by Brian Lane [ 20/Aug/19 ]

Hi jamespharvey20@gmail.com,

The best way forward now is to stop building a separate WiredTiger package and use the one that is part of the specific MongoDB version. There is a tight coupling between WiredTiger and MongoDB versions, and this is not surfaced in standalone WiredTiger release. This will guarantee that you will always build using the correct versions.

We will keep this issue open to determine the future of the flag, and we may switch it internal-only in a future release.

Let me know if you have any other questions or if you run into issues with the suggested approach.

-Brian

Comment by James Harvey [ 16/Aug/19 ]

I see "Fix Version/s" has been set to "4.3 Required". Wondering if that means it's unlikely for a patch to be made soon fixing this for 4.2. Holding off on releasing 4.2 for this issue, and if a fix won't be coming to stable until 4.4, I'd drop using a separate package for wiredtiger to release it, which will increase users' required space to build the package from about 180GB to 260GB (including running tests.)

Comment by Andrew Morrow (Inactive) [ 14/Aug/19 ]

jamespharvey20@gmail.com - Escape the dashes with backslashes.

Comment by James Harvey [ 13/Aug/19 ]

More strikethrough from "--". None of that is intended to be striked out. Not sure if there's a way to indicate inline code.

Generated at Thu Feb 08 05:01:29 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.