Skip to content

(DOCSP-2738): Updated MMAP caution and stable packages table. #3403

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 3 commits into from

Conversation

atsansone
Copy link
Contributor

@rkumar-mongo : This updates the warning at the bottom of this section and updates the table in this section. Links have been checked.

Copy link
Contributor

@kay-kim kay-kim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't use the icon. Leave as |checkmark|

@atsansone
Copy link
Contributor Author

@kay-kim : Fixed.

Copy link
Contributor

@ravindk89 ravindk89 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs another pass, especially around big/little endianness and the architecture support.

MMAPv1 is not supported on big-endian architectures such as s390x.
MongoDB returns an error if you set MMAPv1 as the
storage engine on a big-endian system.
MMAPv1 is unsupported on big-endian and certain bi-endian
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ppc64le is specifically little-endian, not bi-endian. s390x appears to be big endian as well. Structuring things this way makes it seem like s390x and PowerPC is bi-endian. Saying bi-endian implies we wouldn't support an OS built for Big Endian. As I understand it, the Power8 processors support either big or little endian, but not both at the same time.

Suggestion: "MMAPv1 is not supported on any big-endian architecture. MMAPv1 also does not support PowerPC." Unless we have a definitive list of other bi-endian or little-endian architectures we don't support, 'certain' casts too wide a net.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made some revisions. Made it clear that ppc64le is bi-endian. Bi-endian does mean either/or and not both.

MMAPv1 is unsupported on big-endian and certain bi-endian
architectures. This includes the IBM z/Architecture (``s390x``) and
PowerPC (``ppc64le``) platforms. MongoDB returns an error if you
set MMAPv1 as the storage engine on ``s390x`` and ``ppc64le``
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does MongoDB return for all the other big-endian architectures? This should still be generic.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which other architectures can you install this on? None, to my understanding. I don't feel right getting into platforms we don't support just as CYA.


* - Product
- x86_64/amd64
- x86_64
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was amd64 removed? Did we drop support for it? I don't see that indicated in the source ticket. Our documentation still lists amd64 as a supported arch.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because it is a synonym: https://en.wikipedia.org/wiki/X86-64

- s390x
- POWER8 (little endian)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question - why was POWER8 removed? as far as I can tell, ppc64le was introduced with POWER8. It's feasible users will recognize one over the other.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One is the chipset, the other is the os compatibility. If we say POWER8, we should switch the others to Intel/AMD, zSeries and ARM. I'd leave this be. We use ppc64le in many other places, including the filenames of the binaries.

- s390x
- POWER8 (little endian)
- ARMv8-A

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggest + -> and later.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Fixed.

@ravindk89
Copy link
Contributor

Note that the entire mmapv1 section is only valid for master. There is upcoming-4.2 wherein mmapv1 is toasted. Once we get through the cleanups, you'll need to 'forward-port' this ticket removing the mmapv1 references.

Copy link
Contributor Author

@atsansone atsansone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rkumar-mongo : Updated and back to you.


* - Product
- x86_64/amd64
- x86_64
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because it is a synonym: https://en.wikipedia.org/wiki/X86-64

MMAPv1 is unsupported on big-endian and certain bi-endian
architectures. This includes the IBM z/Architecture (``s390x``) and
PowerPC (``ppc64le``) platforms. MongoDB returns an error if you
set MMAPv1 as the storage engine on ``s390x`` and ``ppc64le``
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which other architectures can you install this on? None, to my understanding. I don't feel right getting into platforms we don't support just as CYA.

MMAPv1 is not supported on big-endian architectures such as s390x.
MongoDB returns an error if you set MMAPv1 as the
storage engine on a big-endian system.
MMAPv1 is unsupported on big-endian and certain bi-endian
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made some revisions. Made it clear that ppc64le is bi-endian. Bi-endian does mean either/or and not both.

- s390x
- POWER8 (little endian)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One is the chipset, the other is the os compatibility. If we say POWER8, we should switch the others to Intel/AMD, zSeries and ARM. I'd leave this be. We use ppc64le in many other places, including the filenames of the binaries.

- s390x
- POWER8 (little endian)
- ARMv8-A

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Fixed.

Copy link
Contributor

@ravindk89 ravindk89 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few more things to tighten up. I'd also like someone from the Platforms (?) team to make sure we're clear on this.

storage engine on a big-endian system.
MMAPv1 is unsupported on big-endian architectures like the IBM
z/Architecture (``s390x``) and certain bi-endian architectures like
the PowerPC (``ppc64le``) platform. MongoDB returns an error if you
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should keep this second section generic as well. Otherwise it implies MongoDB does not return errors for any other big-endian architecture, even if MMAPv1 isn't supported.

"MongoDB returns an error when starting a {{mongod}} using MMAPv1 on an unsupported architecture."

z/Architecture (``s390x``) and certain bi-endian architectures like
the PowerPC (``ppc64le``) platform. MongoDB returns an error if you
set ``MMAPv1`` as the storage engine for either the ``s390x`` or
``ppc64le`` platforms. MMAPv1 was deprecated in MongoDB 4.0.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I realised that this include is also brought in to /core/mmapv1. Having this note here is kind of redundant as that page has a big deprecation notice at the top. I think it's OK to remove it. There shouldn't be any surprises w.r.t. MMAPv1 at this point.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed.

MongoDB returns an error if you set MMAPv1 as the
storage engine on a big-endian system.
MMAPv1 is unsupported on big-endian architectures like the IBM
z/Architecture (``s390x``) and certain bi-endian architectures like
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this ultimately begs the question of what other bi-endian or little-endian archs we throw errors on (vs archs we simply don't test against for official support). If it's only ppc64le that we throw errors for, we should just state that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed but forgot to push.

Copy link
Contributor Author

@atsansone atsansone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Back to you, @rkumar-mongo

MongoDB returns an error if you set MMAPv1 as the
storage engine on a big-endian system.
MMAPv1 is unsupported on big-endian architectures like the IBM
z/Architecture (``s390x``) and certain bi-endian architectures like
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed but forgot to push.

z/Architecture (``s390x``) and certain bi-endian architectures like
the PowerPC (``ppc64le``) platform. MongoDB returns an error if you
set ``MMAPv1`` as the storage engine for either the ``s390x`` or
``ppc64le`` platforms. MMAPv1 was deprecated in MongoDB 4.0.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed.

- ARMv8-A

* - MongoDB 3.4
* - MongoDB Community (3.4+)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NP] this reverted to +. Change to "3.4 and later"

Copy link
Contributor

@ravindk89 ravindk89 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM mod a few nits. Please pass to platforms to confirm we're clear here.

@atsansone
Copy link
Contributor Author

@acmorrow : Finally got you access to this repo. Can you have a look at this change? The staged versions are noted in the first comment.

Copy link

@acmorrow acmorrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This LGTM for the part about MMAPv1 with a suggestion.

MMAPv1 is not supported on big-endian architectures such as s390x.
MongoDB returns an error if you set MMAPv1 as the
storage engine on a big-endian system.
:doc:`MMAPv1 </core/mmapv1>` is unsupported on all big-endian

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than trying to state where it isn't supported, why not just state that it is only supported on Intel x86 processors?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For instance, you don't state here that it isn't supported on ARM64. The actual logic that determines whether mmapv1 is here:

https://github.com/mongodb/mongo/blob/666545a2c01ad724912391ca44be36981d3ed0d2/SConstruct#L1829-L1836

Copy link

@acmorrow acmorrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MMAP changes LGTM.

@atsansone atsansone added RFM and removed Tech Review labels Oct 1, 2018
@atsansone atsansone assigned ravindk89 and unassigned acmorrow Oct 1, 2018
@ravindk89
Copy link
Contributor

merged in by hand to avoid some merge conflicts: b01adfc

@ravindk89 ravindk89 closed this Oct 11, 2018
mongo-cr-bot pushed a commit that referenced this pull request Jun 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants