Skip to content
This repository was archived by the owner on Jan 1, 2024. It is now read-only.

1.8.0 - scenarios and boost

Choose a tag to compare

@dokshina dokshina released this 23 Mar 09:20
· 116 commits to master since this release
966ae69

Bug fixes

  • Role installation will be completely skipped
    if you specify a tag other than the tags for this role
  • Fixed selecting control instance that doesn't belong to cluster or isn't alive.
    The following rules are currently used:
    • Members are checked in lexicographic order by URIs
    • Members not mentioned in hostvars aren't selected to be control
    • Members with status not alive aren't selected to be control
  • Fixed setting needs_restart when configuration files don't exist
  • Fixed error on configuring auth without users specified
  • Reset role variables before each run

Features

  • cartridge-replicasets tag added to the membership stage
  • cartridge_wait_buckets_discovery parameter to wait for instance to discover buckets
  • instance_discover_buckets_timeout parameter to configure time in seconds
    to wait for instance to discover buckets
  • Ability to deploy TGZ packages
  • cartridge_multiversion flag that allows to use specific version of application
    for each instance and perform rolling update correctly (using new update_instance step)
  • rotate_dists step that allows to rotate application distributions
  • cleanup step to remove temporary files from specific list
  • Added availability to import steps by scenario name. Added some default scenarios.
    Added availability to create custom scenarios.
  • availability to use tasks_from to import any step
  • zone variable to edit instance zone
  • edit_topology_timeout variable to wait until cluster become healthy
    after editing topology
  • availability to specify instance memtx_dir, vinyl_dir and wal_dir params
    by cartridge_memtx_dir_parent, cartridge_vinyl_dir_parent, cartridge_wal_dir_parent variables.
  • Control instance is selected considering two-phase commit version of instances.
    The reason is that all operations that modify cluster-wide config should be performed via instance
    that has lowest Cartridge version (in fact, only two-phase commit version matters).
  • Availability to change advertise URIs of any instance

Changes

  • cartridge.admin_edit_topology is called once for all replicasets and instances
    to expel. It can be called second time to set up failover priority for
    replicasets where new instances were joined.
    As a result, replicaset_healthy_timeout is removed as unused.
  • Now list of instances for installing a package is selected once for all.
    Before this patch, the complexity of calculating the list of instances was O(N^2),
    now it is O(N). For 100 instances, it gives a 10x time reduction (60s -> 5s).
  • Refactored package installing. Getting package info is performed in a library module,
    all tasks except installing package itself are common for RPM and DEB.
  • Now check_instance_started function: check all instances, including the stateboard;
    wait Unconfigured or RolesConfigured status instead alive state; check that
    all buckets are discovered by routers if cluster was bootstrapped.
  • Role divided into many steps. It's possible to combine them using a scenario
    in the config by cartridge_scenario. It is also possible to use custom steps in a scenario.
    Custom steps can be defined by cartridge_custom_steps_dir and cartridge_custom_steps.
  • Now step connect_to_membership is executed only on one not expelled instance.
    Before the patch, the difficulty of performing connect_to_membership step was N^2.
    For 100 instances, the step took about 900 seconds. Now the complexity has decreased to N,
    so for 100 instances the execution time is about 5 seconds.