Skip to content

Introduce ROP to RD Domain (part 4 - Workspace Reconcile)

Chad Woolley requested to merge caw-rd-rop4 into master

Issue: Remote Development Railway Oriented Programming... (#418738 - closed)

NOTE: DONE - This MR is currently rebased on top of Introduce Remote Dev fast_spec_helper (!127939 - merged) - that must be merged first.

NOTE 2: DONE - This should be considered blocked by Properly handle Devfile::CliError (!127289 - merged), so that any exceptions from the devfile gem are caught and properly handled as logged errors via domain messages.

What does this MR do and why?

Introduce Railway Oriented Programming (ROP) to Remote Dev Domain Logic layer - Part 4: Refactor Workspace Reconcile

See Introduce Railway Oriented Programming (ROP) to... (&10956 - closed) for details.

This also contains some other minor cleanup not directly related to the refactor, mostly variable/method renames, and switching from single-quotes to double-quotes.

Why another huge MR?

For context, this is the final part of a larger refactor which we already have broken up: Introduce Railway Oriented Programming (ROP) to... (&10956 - closed)

I discussed this particular MR with others on the team, and the consensus was we shouldn't try to break this up.

I would be not easy to break it up into multiple MRs, without confusing duplication of the before-and-after logic during the interim.

Also, with the reorganization and file move/renames involved in this refactor, this will force merge conflicts for any changes to the involved files. Such changes might otherwise be missed if we split this up as a parallel incremental refactor across multiple MRs.

But the main reason is we are trying to get this refactor done quickly and move on with the remaining work in %16.3, which will either have to be blocked by this, or else merged and cause more difficult-to-resolve merge conflicts.

What is the risk?

The risk should be low. There's very good test coverage of all areas of the Category:Remote Development domain logic.

In particular, there is middle-to-high level Testing Pyramid integration coverage by the following specs:

  • ee/spec/lib/remote_development/workspaces/reconcile/main_reconcile_scenarios_spec.rb
  • ee/spec/lib/remote_development/workspaces/reconcile/main_integration_spec.rb
  • ee/spec/features/remote_development/workspaces_spec.rb

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Chad Woolley

Merge request reports