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

refactor: CNS-1008 - Optimizer Refactor Part 1: provider optimizer refactor #1784

Open
wants to merge 33 commits into
base: main
Choose a base branch
from

Conversation

oren-lava
Copy link
Collaborator

Description

Closes: #XXXX

I refactored the provider optimizer and fixed various bugs it had. I did the refactor in files with "_refator" suffix to be able to test the new optimizer while not hurting the current one


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • read the contribution guide
  • included the correct type prefix in the PR title, you can find examples of the prefixes below:
  • confirmed ! in the type prefix if API or client breaking change
  • targeted the main branch
  • provided a link to the relevant issue or specification
  • reviewed "Files changed" and left comments if necessary
  • included the necessary unit and integration tests
  • updated the relevant documentation or specification, including comments for documenting Go code
  • confirmed all CI checks have passed

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic, API design and naming, documentation is accurate, tests and test coverage

Copy link

github-actions bot commented Nov 20, 2024

Test Results

1 043 tests   1 037 ✅  11m 17s ⏱️
   49 suites      0 💤
    4 files        5 ❌  1 🔥

For more details on these failures and errors, see this check.

Results for commit 62048d5.

♻️ This comment has been updated with latest results.

@oren-lava oren-lava requested a review from ranlavanet November 21, 2024 12:09
@oren-lava oren-lava changed the title refactor: CNS-1008 provider optimizer refactor refactor: CNS-1008 - Optimizer Refactor Part 2: provider optimizer refactor Nov 26, 2024
@oren-lava oren-lava changed the title refactor: CNS-1008 - Optimizer Refactor Part 2: provider optimizer refactor refactor: CNS-1008 - Optimizer Refactor Part 1: provider optimizer refactor Nov 26, 2024
Copy link
Collaborator

@omerlavanet omerlavanet left a comment

Choose a reason for hiding this comment

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

this code is a piece of art, taking something so complex and making it so clear

//
// Important: when using this function from the node's code, do not configure the block error probability
// (in default mode, it's unused)
func (qos *QualityOfServiceReport) ComputeQoSExcellence(opts ...Option) (sdk.Dec, error) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

need to merge latest reputation here

utils.LogAttr("provider", providerAddress),
utils.LogAttr("requested_block", requestedBlock),
)
return NewSelectionTier(), Exploration{}, nil
Copy link
Collaborator

Choose a reason for hiding this comment

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

this will error out on earliest requests etc, let's treat them as latest in that case

AvailabilityScore: providerData.Availability.Num / providerData.Availability.Denom,
LatencyScore: latencyScoreCurrent,
GenericScore: providerScore,
SyncScore: qos.Sync.MustFloat64(),
Copy link
Collaborator

Choose a reason for hiding this comment

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

if case this panics the entire service will go down due to some error, this is very strict
in general we hardly panic and FATAL on code that isnt performed on startup

the correct approach is to do a severe error, and return default values that allow you to move on

syncScore = sdk.OneDec()
if sync == 0 {
// if our sync score is uninitialized due to lack of providers
sync = 1
Copy link
Collaborator

Choose a reason for hiding this comment

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

in general this is penalising perfect providers but 1 is a very low number so i am okay with this, can add a comment explaining that this is 1ms delay

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

Successfully merging this pull request may close these issues.

3 participants