nspcc-dev/neofs-node

Refactor IR

Open

#2,410 opened on Jun 28, 2023

 (2 comments) (0 reactions) (0 assignees)Go (49 forks)auto 404
I4S1U4discussionenhancementhelp wantedneofs-ir

Repository metrics

Stars
 (36 stars)
PR merge metrics
 (PR metrics pending)

Description

Some questions:

  1. Why does it have workers, starters and runners? Also, all of them are anonymous, it makes it difficult to understand what "services" (well, just func ()) are running/will be running.
  2. Why does it read config everywhere, everywhere, everywhere, etc it wants? SN has been using a separate place for config reading for years already. After config is parsed it passes (and modifies its types if need be) in every component that requires it.
  3. Its constructor is 650+ lines long. It does many things (converting types, creating new types, reading configs, making some RPC, logging, filling DB, deciding the full IR work mode in a huge if ... else, etc). I mean that is not bad that everything is happening at the New step, I mean that most of that is done literally inside that func.
  4. https://github.com/nspcc-dev/neofs-node/issues/2309 will require changes that should drop processors, listeners all related things. #2309 says "Each service can do Receive* for things it needs..." but IR has only two services in fact: timers (not services TBH, they only can accept Tick calls and be Reseted), and a Listener that should be dropped. It also makes anything related to https://github.com/nspcc-dev/neofs-node/issues/1337 hard to implement easily.

Contributor guide