Package Details: mongodb 4.0.10-1

Git Clone URL: https://aur.archlinux.org/mongodb.git (read-only)
Package Base: mongodb
Description: A high-performance, open source, schema-free document-oriented database
Upstream URL: https://www.mongodb.com/
Keywords: database document-oriented
Licenses: custom:SSPL
Submitter: felixonmars
Maintainer: jamespharvey20 (chrbayer)
Last Packager: jamespharvey20
Votes: 17
Popularity: 2.024321
First Submitted: 2019-01-18 22:08
Last Updated: 2019-05-30 02:26

Pinned Comments

jamespharvey20 commented on 2019-02-22 03:50

READ ME

If pacman alerts you that a new configuration file is saved at /etc/mongodb.conf.pacnew, you must switch to it, or at least modify your existing one to enable forking.

Among other cleanups, 4.0.6-2 switches to:

  1. Upstream's systemd service file, which uses a systemd service type of forking, versus the old Arch-specific type of simple.

  2. Upstream's configuration file, which uses the YAML format introduced back in 2.6, versus the old Arch-specific configuration file using the 2.4 format.

If you never modified /etc/mongodb.conf, there is nothing you need to do, as pacman will install the new configuration file for you.

If you had modified it, pacman will of course install the new one to /etc/mongodb.conf.pacnew. So, you will either need to: switch to the new one, and duplicate changes you made to the old one that you still need, considering the new file is now in the YAML format; or modify your existing one to enable forking. (Using the old 2.4 file format, adding fork: true should be what is needed.)

jamespharvey20 commented on 2019-02-15 09:58

READ ME

You should have 180GB available just to build this. If you have less, you will run into various errors while building, and only some will reference disk space.

It takes a lot of time to build this. A user reported it took 6.5 hours on an Intel i7. 32 Xeon cores with a high-end NVMe takes an hour.

How much memory you need to build this is untested, but I'd guess having a low amount of memory could cause compilation errors.

If you have compilation problems, please use makepkg, or extra-x86_64-build from devtools, as AUR helpers are not officially supported.

Alternatively, there is the mongodb-bin package, which converts the pre-compiled Ubuntu package into one for Arch. Note Ubuntu's package may use different compilation options.

Latest Comments

1 2 3 Next › Last »

yaron commented on 2019-05-22 11:47

RequestsDependencyWarning: urllib3 (1.25.2) or chardet (3.0.4) doesn't match a supported version!

Failed :(

jamespharvey20 commented on 2019-03-30 23:45

Please keep all comments on this package about mongodb only, not the mongodb-bin variant or upstream tarballs. Questions specifically about those need to go elsewhere, like on the mongodb-bin package.

I'm having a bit of a hard time following the last 3 comments, in part because I can't see the original non-edited question. But, I think other than build diskspace usage, that all other discussion was really regarding upstream's tarballs and the mongodb-bin package. In case I'm wrong, please let me know. This mongodb package should build and install /usr/share/man/man1/mongo{d,s}.1.gz. If it doesn't, please say how you're building it. I'm using devtools.

Regarding why this needs 180GB of diskspace, that's only to build it, not install it. As for why, you'd want to ask upstream. There's been a thread discussing this here: https://groups.google.com/forum/#!searchin/mongodb-user/space%7Csort:date/mongodb-user/cHMbYPyD6f0/2dhGXqxsBwAJ

The majority of the time and space usage is in check(). They appear to be using an awful lot of data during their tests. If you don't run these tests, on my 32 Xeon cores, it finishes in 15 minutes instead of 60, and uses 10GB of diskspace instead of 165GB. I can't advocate skipping the tests, but I will note that if you install mongodb-bin, you're only getting testing on upstream's machine with its dependencies, not yours. So, maybe skipping the tests here is the same thing, since I always run them before pushing an updated version. But, I still recommend running them, as it's a database and integrity is paramount.

fkl commented on 2019-03-28 12:47

[Original Message Timestamp: 2019-03-28 07:39] I failed to build this thing because of the disk space requirement. Before I take another stab at trying to build, does this AUR package or https://aur.archlinux.org/packages/mongodb-bin/ come with (i.e. installs) the manpages? I had no issues with installing the community server (mongodb-linux-x86_64-4.0.7.tgz) but this tarball does not ship with manpages.

Can someone briefly explain why this thing needs 180GB of diskspace?

Note: the [X] "Delete comment" deletes w/o asking for confirmation. The webmaster needs to fix this feature.

fkl commented on 2019-03-28 12:04

@navarroaxel Thank you for the quick response. This is actually my first-ever AUR package-building attempt, and it was a rough one. Can we ask the maintainers of this AUR to use a non-'all' build? (unless there is a real reason for 'all')

I think I will just go with the mongodb-bin option for now.

navarroaxel commented on 2019-03-28 11:46

Hi @fkl, Sounds like this package is using the 'all' build variant. That will build everything in the source tree. The mongodb-bin package comes with man pages, you can use the command man mongo or man mongod. You should not use the Linux legacy tgz package from mongodb website because of this: https://www.mongodb.com/blog/post/a-proposal-to-endoflife-our-generic-linux-tar-packages

jamespharvey20 commented on 2019-03-26 21:42

I wouldn't use 4.0.7-1. It doesn't require wiredtiger commit db5942dc, as upstream expects. See https://github.com/mongodb/mongo/commit/0a201aa5bff44f490b970727587b60066c3ce1a7

As separate packages, mongodb and wiredtiger almost always need to be upgraded at the same time.

I'm wondering if it makes continued sense for mongodb to have wiredtiger as a separate dependency. By default, it pulls in its dependencies' source by the specified commit in its mongodb git repo. Haivng it use the system wiredtiger is from when they were in community.

Some if its dependencies can be specified to use the system-installed packages, but can't, because they either require older versions than Arch has, or have their own in-repo patches they didn't submit upstream. Like, asio, icu, boost, and strangely even mongo-c.

Since if you're going to use mongodb, you have to have wiredtiger by one of these methods, and wiredtiger isn't used for anything other than mongodb, having them separate seems like it's just adding extra steps for users to build. (mongodb-3.4 does of course depend on wiredtiger, but that conflicts with this package, and I'm not sure it's safe for it to be given the commit that current stable mongodb requires anyway.)

EDIT: I'm now leaning toward keeping wiredtiger separate. Statically building it in-tree doesn't provide the files wiredtiger does, and users could be using its headers and libraries. Additionally, we'd have to look into the other wiredtiger configure options (leveldb, lz4, tcmalloc, builtin zlib) can/should be added when building within mongo. Probably not worth investing time in, easier for the 3 involved maintainers to just become maintainers of both packages.

jamespharvey20 commented on 2019-02-25 01:05

@chrbayer, I think there's either something off with your DNS configuration, or there's something off with MongoDB's DNS entries.

How do you have DNS setup? I use systemd-resolved, /etc/resolv/confis a symlink to /run/systemd/resolve/resolv.conf, and I'm using DNS server 8.8.8.8.

What are you using to build?

The failure you're having is in mongo/client/mongo_uri_test, specifically in its subtest srvRecordTest. I originally was wondering if they had just messed up their DNS records, but I just re-built 4.0.6-3, and check() passes, including on this test.

Starting with 4.0.6-2, check() is required to pass. Community 3.6.0-1 through 4.0.5-1, and AUR 4.0.6-1 included || warning "Tests failed" in check(), on the line that runs the unittests suite. This meant 3.6.0-1 through 4.0.6-1 ran the unittests suite, but if it errored, it would print a warning and continue. Because MongoDB's test suites are setup so when a single test fails, the rest are skipped, that seems to me like that suite may as well not have been run. In 3.6.0-1, this was changed because some tests required mlock(), which fails within systemd-nspawn, part of the devtools build process. So, in 4.0.6-2, I took a different approach of checking if it's running under systemd-nspawn, and if so, disable all the tests that use mlock(). So, I'm now not thinking they messed up their DNS records, but that this test was failing for you in the past, but it continued building the package. (Or, you're running through devtools, and it was failing on an earlier test and never getting to this one.)

Anyways, your error message looks like this test is attempting to resolve a DNS entry and failing. I found an upstream bugreport indicating these tests require working name resolution at: https://jira.mongodb.org/browse/SERVER-34117

I think it's trying to resolve _mongodb._tcp.test1.test.build.10gen.cc or test1.test.build.10gen.cc. I know enough about DNS to get by, but their records are confusing me a bit. Running dig <either .cc>, I only get back a SOA record with ns1.p09.dynect.net. or hostmaster.10gen.com.. It doesn't contain anything really useful, like an IP resolution, but I guess maybe it's still considered a valid response. Except in this case of testing a lookup but not wanting anyone to do something with it, I doubt only giving back an SOA record happens often.

If you're using a different DNS resolving method, it's possible there's a bug where only having an SOA record trips it up. Once I know what you're using, I'll try to reproduce.

chrbayer commented on 2019-02-23 07:39

Hi, I tried two times building the new version and both time it fails now. I have enough space. I have enough free space and I had no problems building version 4.0.5-1 and 4.0.6-1.

Now it fails in the check phase:

[cpp_unit_test:mongo_uri_test] 2019-02-22T23:19:18.552+0100 2019-02-23T00:19:18.552+0100 E -        [main] Throwing exception: Expected ::mongo::Status::OK() == (rs.getStatus()) (OK  == DNSHostNotFound Failed to look up service "_mongodb._tcp.test1.test.build.10gen.cc": Success) Failed on URI: mongodb+srv://test1.test.build.10gen.cc/ data on line: 652 @src/mongo/client/mongo_uri_test.cpp:845
[cpp_unit_test:mongo_uri_test] 2019-02-22T23:19:18.552+0100 2019-02-23T00:19:18.552+0100 I -        [main] FAIL: srvRecordTest  Expected ::mongo::Status::OK() == (rs.getStatus()) (OK  == DNSHostNotFound Failed to look up service "_mongodb._tcp.test1.test.build.10gen.cc": Success) Failed on URI: mongodb+srv://test1.test.build.10gen.cc/ data on line: 652 @src/mongo/client/mongo_uri_test.cpp:845 in test srvRecordTest

After disabling unit tests, it works again. Does someone else have the same problem?

jamespharvey20 commented on 2019-02-22 03:50

READ ME

If pacman alerts you that a new configuration file is saved at /etc/mongodb.conf.pacnew, you must switch to it, or at least modify your existing one to enable forking.

Among other cleanups, 4.0.6-2 switches to:

  1. Upstream's systemd service file, which uses a systemd service type of forking, versus the old Arch-specific type of simple.

  2. Upstream's configuration file, which uses the YAML format introduced back in 2.6, versus the old Arch-specific configuration file using the 2.4 format.

If you never modified /etc/mongodb.conf, there is nothing you need to do, as pacman will install the new configuration file for you.

If you had modified it, pacman will of course install the new one to /etc/mongodb.conf.pacnew. So, you will either need to: switch to the new one, and duplicate changes you made to the old one that you still need, considering the new file is now in the YAML format; or modify your existing one to enable forking. (Using the old 2.4 file format, adding fork: true should be what is needed.)

jamespharvey20 commented on 2019-02-15 09:58

READ ME

You should have 180GB available just to build this. If you have less, you will run into various errors while building, and only some will reference disk space.

It takes a lot of time to build this. A user reported it took 6.5 hours on an Intel i7. 32 Xeon cores with a high-end NVMe takes an hour.

How much memory you need to build this is untested, but I'd guess having a low amount of memory could cause compilation errors.

If you have compilation problems, please use makepkg, or extra-x86_64-build from devtools, as AUR helpers are not officially supported.

Alternatively, there is the mongodb-bin package, which converts the pre-compiled Ubuntu package into one for Arch. Note Ubuntu's package may use different compilation options.