Skip to content
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

Proposed 1.8.0-b3 #3858

Merged
merged 38 commits into from
Jun 4, 2021
Merged

Proposed 1.8.0-b3 #3858

merged 38 commits into from
Jun 4, 2021

Conversation

manojsdoshi
Copy link
Contributor

If merged this PR will:

close: #3855
close: #3709
close: #3811
close: #3726
close: #3827
close: #3819
close: #3818
close: #3781
close: #3833
close: #3789
close: #3817
close: #3804
close: #3822
close: #3828
close: #3796
close: #3853
close: #3854
close: #3829
close: #3830
close: #3820
close: #3799
close: #3805
close: #3814
close: #3840
close: #3821
close: #3832
close: #3753
close: #3741
close: #3856

mtrippled and others added 22 commits April 1, 2021 10:40
Typically, an RPC response contains a `result` field, which
contains details about the operation performed. For ease of
parsing, forwarded responses must look like a non-forwarded
response.

In some instances the response was incorrectly composed, so
that the actual `result` object would be encapsulated by an
outer `result` object, breaking existing code.

This commit, addresses this issue and correctly "folds" the
`result` field, ensuring a consistent schema for responses.
The `tx` command supports output in both "text" and "binary" modes,
controlled by the binary flag. For more details on the command and
the possible arguments, please see: https://xrpl.org/tx.html.

The existing handler would incorrectly deal with metadata when in
binary mode. This commit corrects this issue, ensuring that the
metadata is properly encoded, depending on the mode.
In order to effectively mitigate CVE-2021-3499 even when compiling
against versions of OpenSSL prior to 1.1.1k, this commit:

1) requires use of TLS 1.2 or later. Note that both TLS 1.0 and
   TLS 1.1 have been officially deprecated for over a year.
2) disables renegotiation support for TLS 1.2 connections.

Lastly, this commit also changes the default list of ciphers that
the server offers, limiting it only to ciphers that are part of
TLS 1.2.
* load_factor was missing from server_info when the server was running in
  reporting mode. Now, the reporting mode server calls server_info on the p2p
  node, and propagates the load_factor back to the client.
Substantial reductions in an offer's effective quality from its
initial quality may clog offer books.
* The std::less and std::equal_to comparators have [[nodiscard]], which
  conflicts with boost::bimap validations.
* Run the import process in a background thread
* Prevent online_delete from removing ledgers pending import
* Create SQLite database for mapping transaction IDs to shard indexes
* Create SQLite database for mapping ledger hashes to shard indexes
* Create additional test cases for the shard database
* resolves XRPLF#3782
* gcc 8 is required for the charconv include file
* remove unused `std::hash` specialization
* Use `std::chrono::floor` instead of `floor`
@manojsdoshi manojsdoshi force-pushed the develop-next branch 2 times, most recently from fa93cbe to 5531723 Compare June 3, 2021 17:45
CJ Cobb and others added 6 commits June 3, 2021 10:58
* Add isCaughtUp() as a member function of RelationalDBInterfacePostgres
A recent version of clang notes a number of places in range
for loops where the code base was making unnecessary copies
or using const lvalue references to extend lifetimes.  This
fixes the places that clang identified.
scottschurr and others added 10 commits June 3, 2021 10:58
Replace explicit construction of OfferCancel transactions in unit
tests with calls to jtx::offer_cancel().
The `[node_size]` configuration parameter is used to tune various
parameters based on the hardware that the code is running on. The
parameter can take five distinct values: `tiny`, `small`, `medium`,
`large` and `huge`.

The default value in the code is `tiny` but the default configuration
file sets the value to `medium`. This commit attempts to detect the
amount of RAM on the system and adjusts the node size default value
based on the amount of RAM and the number of hardware execution
threads on the system.

The decision matrix currently used is:

|         |   1  | 2 or 3 |   ≥ 4  |
|:-------:|:----:|:------:|:------:|
|  > ~8GB | tiny |   tiny |   tiny |
| > ~12GB | tiny |  small |  small |
| > ~16GB | tiny |  small | medium |
| > ~24GB | tiny |  small |  large |
| > ~32GB | tiny |  small |   huge |

Some systems exclude memory reserved by the the hardware, the kernel
or the underlying hypervisor so the automatic detection code may end
up determining the node_size to be one less than "appropriate" given
the above table.

The detection algorithm is simplistic and does not take into account
other relevant factors. Therefore, for production-quality servers it
is recommended that server operators examine the system holistically
and determine what the appropriate size is instead of relying on the
automatic detection code.

To aid server operators, the node size will now be reported in the
`server_info` API as `node_size` when the command is invoked in
'admin' mode.
Copy link
Collaborator

@scottschurr scottschurr left a comment

Choose a reason for hiding this comment

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

Looks good to me. 👍 once this passes CI.

@manojsdoshi manojsdoshi merged commit 7bd5d51 into XRPLF:develop Jun 4, 2021
Copy link

@SirJosh1987 SirJosh1987 left a comment

Choose a reason for hiding this comment

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

Right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.