Hello, after mongodb44 was replaced with mongodb50, my UniFi Controller wouldn't work anymore since MongoDB wasn't able to run due to my CPU lacking AVX instructions (signal 4 SIGILL on startup). The packages for mongodb50 (and newer) are built with AVX by default. I managed to get it working again by building the mongodb50 port with the NO_AVX option. Is it at all feasible to get a package flavor (for unifi and/or mongodb, I'm not sure which one it needs to be) without the AVX requirement? In addition, not sure if this should go in a separate report or not, but UniFi Controller 8.1 officially supports MongoDB 7, is it possible for the unifi8 port to be changed to use mongodb70 instead of mongodb50? MongoDB 5.0 will be end of life soon in October 2024, while MongoDB 7.0 will be end of life much later in August 2026. Since UniFi officially supports it, wouldn't it would be a good idea to change to MongoDB 7.0?
This is more for the mongodb maintainer. I've come across this in an installation in a VM running as Hyper-V guest. My solution was to reset NUMA settings and turning off the CPU compatibility for the VM affected.
(In reply to Juraj Lutter from comment #1) I have just now figured out a decent solution in my case that I'm happy with (building from source by first installing dependencies with pkg so I only need to build mongodb itself). It seems from the MongoDB website that they don't support CPUs without AVX officially, so it's probably a better idea to rather leave this alone, especially being unsupported upstream. Apologies for only finding this out now. Just the mongodb50 -> mongodb70 thing remains, would it be recommended to close this and open a new bug for that?
(In reply to bllcha013 from comment #2) Do you have a pointer to the MongoDB doc about AVX support? It is pretty easy to add a mongodb50-avx flavor. That is why unifi has an unifi8-externaldb flavor. Than unifi does not depend directly on the DB and you can do the setup yourself. As for dependency on mongodb70. Mongodb supports upgrades between 1 major version. So taking care of the quarterly ports branches I propose: Q2 has mongodb50 as dependency in unifi8. During Q2 (e.g. the start of April) we change unifi8 to use mongodb60. That will get some QA before Q3. Q3 has mongodb60 as dependency in unifi8. So everybody is running supported versions until July 2025. BTW: you can always install unifi8-externaldb and setup the DB yourself. I don't have the documentation about this available now, but that shouldn't be hard to find.
Found some documentation about using a separate MongoDB with Unifi. https://community.ui.com/questions/External-MongoDB-Server/d311a8f8-43b6-4aeb-859d-eefec9dc1bbc#answer/b8a080b0-d05a-493c-914c-c804709c8d4a In your system.properties file: db.mongo.local=false db.mongo.uri=mongodb://ubnt:password@IP_ADDRESS:PORT/unifi-test statdb.mongo.uri=mongodb://ubnt:password@IP_ADDRESS:PORT/unifi-test_stat unifi.db.name=unifi-test
(In reply to Ronald Klop from comment #3) MongoDB documentation: https://www.mongodb.com/docs/manual/administration/production-notes/ "...requires use of the AVX instruction set..." Knowing this, if "noavx" package flavors were to be introduced (mongodb50-noavx, mongodb60-noavx, mongodb70-noavx), maybe there should be a warning that it is not officially supported upstream. For the dependency upgrade, that seems like a good plan to avoid situations where someone does an upgrade and it jumps 3 versions ahead and breaks their database (rather ease everyone over).
Can we either close or transfer this PR to someone more apropriate as this is not essentually a unifi problem?
(In reply to Juraj Lutter from comment #6) I took over the issue. You can unsub from cc lists yourself if you need to.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=1707c0aac83aaf892c07bfc05573d1efa8ec5724 commit 1707c0aac83aaf892c07bfc05573d1efa8ec5724 Author: Ronald Klop <ronald@FreeBSD.org> AuthorDate: 2024-04-25 11:44:44 +0000 Commit: Ronald Klop <ronald@FreeBSD.org> CommitDate: 2024-04-25 11:54:45 +0000 databases/mongodb50: enable non-AVX CPUs by default By popular demand as this port is used by net-mgmt/unifi8. I couldn't find any information on the internet that the binary really does something which requires AVX. For example this discussion: https://github.com/turnkeylinux/tracker/issues/1724 PR: 277990 Requested by: glebius@ databases/mongodb50/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fix is committed I don't run this on non-AVX so please report back if this does not work. Thanks for your report.
This page also describes that AVX is not necessary for correct working of MongoDB. https://www.mongodb.com/community/forums/t/one-more-time-about-mongo-5-cpu-requirements/168858/2
A commit in branch 2024Q2 references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=f089e36748836048479ac8488bbbf7d8d98383f3 commit f089e36748836048479ac8488bbbf7d8d98383f3 Author: Ronald Klop <ronald@FreeBSD.org> AuthorDate: 2024-04-25 11:44:44 +0000 Commit: Ronald Klop <ronald@FreeBSD.org> CommitDate: 2024-04-29 13:33:00 +0000 databases/mongodb50: enable non-AVX CPUs by default By popular demand as this port is used by net-mgmt/unifi8. I couldn't find any information on the internet that the binary really does something which requires AVX. For example this discussion: https://github.com/turnkeylinux/tracker/issues/1724 (cherry picked from commit 1707c0aac83aaf892c07bfc05573d1efa8ec5724) PR: 277990 Requested by: glebius@ databases/mongodb50/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
(In reply to Ronald Klop from comment #9) I recently received the updated mongob50 package from pkg (latest repository) and it's working perfectly fine for me. Thank you.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=4fef70600b94dfdd232606bac2a52f11262e27b1 commit 4fef70600b94dfdd232606bac2a52f11262e27b1 Author: Ronald Klop <ronald@FreeBSD.org> AuthorDate: 2024-05-16 10:33:35 +0000 Commit: Ronald Klop <ronald@FreeBSD.org> CommitDate: 2024-05-16 10:33:35 +0000 databases/mongodb60: enable non-AVX CPUs by default Similar to the change in mongodb50. Preparation so this can become the default mongodb port for net-mgmt/unifi8. PR: 277990 databases/mongodb60/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=fe16603f4f07239e1bca8a2b582f3bae088f0e96 commit fe16603f4f07239e1bca8a2b582f3bae088f0e96 Author: Ronald Klop <ronald@FreeBSD.org> AuthorDate: 2024-05-16 10:46:58 +0000 Commit: Ronald Klop <ronald@FreeBSD.org> CommitDate: 2024-05-16 10:46:58 +0000 databases/mongodb70: enable non-AVX CPUs by default Similar to the change in mongodb50. People use these CPUs with MongoDB. PR: 277990 databases/mongodb70/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
(In reply to Ronald Klop from comment #9) Thanks for the fix! We should create a new flavor of this port with AVX enabled by default (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=279037).