Commit 3ee5abd4 authored by Ramon Nou's avatar Ramon Nou
Browse files

Use common GKFS_NUM_REPL environment variable

parent daa9d8ce
Loading
Loading
Loading
Loading
Loading
+4 −4
Changes for README.md: 4 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -389,7 +389,7 @@ This is disabled by default.
## Replication

The user can enable the data replication feature by setting the replication environment variable:
`LIBGKFS_NUM_REPL=<num repl>`.
`GKFS_NUM_REPL=<num repl>`.
The number of replicas should go from `0` to the `number of servers - 1`. The replication environment variable can be
set up for each client independently.

@@ -1045,10 +1045,10 @@ Client-metrics require the CMake argument `-DGKFS_ENABLE_CLIENT_METRICS=ON` (see
  connecting to the ZeroMQ sink directly from every rank. Requires the same variable set in the daemon's
  environment.
- `LIBGKFS_PROXY_PID_FILE` - Path to the proxy pid file (when using the GekkoFS proxy).
- `LIBGKFS_NUM_REPL` - Number of replicas for data.
- `GKFS_NUM_REPL` - Number of replicas for data, shared by clients and daemons.
- Simple-hash replication supports replica-aware mutation when
  `GKFS_DAEMON_NUM_REPL` matches `LIBGKFS_NUM_REPL` on all clients/daemons and
  the new host count is greater than the replica count.
  `GKFS_NUM_REPL` is set consistently for all clients and daemons, and the new
  host count is greater than the replica count.
- Random Slicing with replication remains rejected because it does not yet
  define independent deterministic replica placement.
- Migration plans carry replica copy indices and placement generations; stale
+4 −3
Changes for docs/sphinx/users/running.md: 4 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -364,12 +364,13 @@ This is disabled by default.
#### Replication

The user can enable the data replication feature by setting the replication environment variable:
`LIBGKFS_NUM_REPL=<num repl>`.
`GKFS_NUM_REPL=<num repl>`.
The number of replicas should go from `0` to the `number of servers - 1`. The replication environment variable can be
set up for each client independently.

Simple-hash replication supports mutation when `GKFS_DAEMON_NUM_REPL` matches
`LIBGKFS_NUM_REPL` and the new host count is greater than the replica count.
Simple-hash replication supports mutation when `GKFS_NUM_REPL` is set
consistently for clients and daemons and the new host count is greater than the
replica count.
Random Slicing with replication remains rejected because independent replica
placement is not defined for that strategy.
Migration plans validate copy indices and placement generations before I/O.
+0 −1
Changes for include/client/env.hpp: 0 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -85,7 +85,6 @@ static constexpr auto PROTECT_FILES_CONSUMER =
static constexpr auto RANGE_FD = ADD_PREFIX("RANGE_FD");
static constexpr auto DIRENTS_BUFF_SIZE = ADD_PREFIX("DIRENTS_BUFF_SIZE");

static constexpr auto NUM_REPL = ADD_PREFIX("NUM_REPL");
static constexpr auto REPAIR_STATUS_PATH = ADD_PREFIX("REPAIR_STATUS_PATH");
static constexpr auto REPAIR_JOURNAL_PATH = ADD_PREFIX("REPAIR_JOURNAL_PATH");
static constexpr auto PROXY_PID_FILE = ADD_PREFIX("PROXY_PID_FILE");
+4 −4
Changes for include/client/rpc/replica.hpp: 4 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -158,12 +158,12 @@ mutation_error_with_replicas(const int replica_count) {
inline void
validate_replica_count(const int replica_count, const std::size_t host_count) {
    if(replica_count < 0) {
        throw std::invalid_argument("LIBGKFS_NUM_REPL must not be negative");
        throw std::invalid_argument("GKFS_NUM_REPL must not be negative");
    }
    if(host_count == 0 ||
       static_cast<std::size_t>(replica_count) >= host_count) {
        throw std::invalid_argument(
                "LIBGKFS_NUM_REPL must be less than the number of hosts");
                "GKFS_NUM_REPL must be less than the number of hosts");
    }
}

@@ -178,12 +178,12 @@ parse_replica_count(const std::string& value) {
        parsed = std::stoll(value, &consumed, 10);
    } catch(const std::exception&) {
        throw std::invalid_argument(
                "LIBGKFS_NUM_REPL must be a non-negative integer");
                "GKFS_NUM_REPL must be a non-negative integer");
    }
    if(consumed != value.size() || parsed < 0 ||
       parsed > std::numeric_limits<int>::max()) {
        throw std::invalid_argument(
                "LIBGKFS_NUM_REPL must be a non-negative integer");
                "GKFS_NUM_REPL must be a non-negative integer");
    }
    return static_cast<int>(parsed);
}
+1 −0
Changes for include/common/env.hpp: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ static constexpr auto DISTRIBUTION_STRATEGY =
static constexpr auto RANDOM_SLICING_CUTSHIFT =
        ADD_PREFIX("RANDOM_SLICING_CUTSHIFT");
static constexpr auto EXPAND_ON_DEMAND = ADD_PREFIX("EXPAND_ON_DEMAND");
static constexpr auto NUM_REPL = ADD_PREFIX("NUM_REPL");
static constexpr auto CREATE_CHECK_PARENTS = ADD_PREFIX("CREATE_CHECK_PARENTS");
static constexpr auto SYMLINK_SUPPORT = ADD_PREFIX("SYMLINK_SUPPORT");
static constexpr auto RENAME_SUPPORT = ADD_PREFIX("RENAME_SUPPORT");
Loading