erlang / otp

Erlang/OTP
http://erlang.org
Apache License 2.0
11.15k stars 2.92k forks source link

Lift 32-bit limit of ETS hash table size limit #8589

Closed sverker closed 6 days ago

sverker commented 2 weeks ago

Fix #8198

The PR also includes a commit that introduces C99 type bool with values true and false in the ETS code base.

github-actions[bot] commented 2 weeks ago

CT Test Results

    3 files    143 suites   49m 39s :stopwatch: 1 591 tests 1 541 :white_check_mark: 49 :zzz: 1 :x: 2 330 runs  2 255 :white_check_mark: 74 :zzz: 1 :x:

For more details on these failures, see this check.

Results for commit 77554587.

:recycle: This comment has been updated with latest results.

To speed up review, make sure that you have read Contributing to Erlang/OTP and that all checks pass.

See the TESTING and DEVELOPMENT HowTo guides for details about how to run test locally.

Artifacts

// Erlang/OTP Github Action Bot

sverker commented 6 days ago

This PR has now been merged to master for OTP 28.0.

@UlrikVendelbo @mikpe

What has not been done is testing the API on a table with more than 2^31 keys. That would not only take a machine with enough memory but also some suitable tests to get some code coverage without spending too much time and memory.

I tried to create a big table on my laptop and got

That is only 1/8 on the way to a 2 billion keys table.

sverker commented 6 days ago

To be clear: We do not have easy access to such capable machines. So, I'm fishing for some test assistance.

mikpe commented 5 days ago

I managed this far before killing a 128GB test node:

size: 1546649600, memory 13055561606

That's with arity-1 tuples and fixnums 0... as keys. I'll see if I can find a beefier one, but no promises. Since we migrated from Mnesia to Aurora we've downscaled all of our production Erlang nodes, long gone are the days of 2TB RAM :-(