Summary

The setAllowRebalanceExistingSegments() mutation controls whether LogScale migrates existing data segments between cluster nodes. LogScale stores ingested data as immutable compressed segment files distributed across nodes. When you add or remove nodes, new segment placement adjusts automatically. Existing segments remain on their original nodes, which can produce uneven storage distribution over time. Set allowRebalanceExistingSegments to true to allow LogScale to actively move those segments and normalize storage across the cluster. Set it to false to keep existing segments in place. Apply this mutation after cluster topology changes. To configure the minimum percentage of alive hosts required before rebalancing begins, use setMinHostAlivePercentageToEnableClusterRebalancing().

Syntax

graphql
setAllowRebalanceExistingSegments(
      allowRebalanceExistingSegments: Boolean!
   ): Boolean!

The required allowRebalanceExistingSegments argument is a non-null Boolean. Pass true to permit the cluster to migrate existing segments between nodes to normalize storage distribution. Pass false to preserve existing segment placement; new segments continue to follow optimal placement regardless of this setting. The mutation returns a non-null Boolean confirming the updated value.

Example

Raw
graphql
mutation {
  setAllowRebalanceExistingSegments(
     allowRebalanceExistingSegments: true )
}
Mac OS or Linux (curl)
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  setAllowRebalanceExistingSegments(
     allowRebalanceExistingSegments: true )
}"
}
EOF
Mac OS or Linux (curl) One-line
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  setAllowRebalanceExistingSegments(
     allowRebalanceExistingSegments: true )
}"
}
EOF
Windows Cmd and curl
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json" ^
    -d @'{"query" : "mutation { ^
  setAllowRebalanceExistingSegments( ^
     allowRebalanceExistingSegments: true ) ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "mutation {
  setAllowRebalanceExistingSegments(
     allowRebalanceExistingSegments: true )
}"
}'
    "$YOUR_LOGSCALE_URL/graphql"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;

my $TOKEN = "TOKEN";

my $uri = '$YOUR_LOGSCALE_URL/graphql';

my $query = "mutation {
  setAllowRebalanceExistingSegments(
     allowRebalanceExistingSegments: true )
}";
$query =~ s/\n/ /g;
my $json = sprintf('{"query" : "%s"}',$query);
my $req = HTTP::Request->new("POST", $uri );

$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");

$req->content( $json );

my $lwp = LWP::UserAgent->new;

my $result = $lwp->request( $req );

print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/graphql'
mydata = r'''{"query" : "mutation {
  setAllowRebalanceExistingSegments(
     allowRebalanceExistingSegments: true )
}"
}'''

resp = requests.post(url,
                     data = mydata,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

const data = JSON.stringify(
    {"query" : "mutation {
  setAllowRebalanceExistingSegments(
     allowRebalanceExistingSegments: true )
}"
}
);


const options = {
  hostname: '$YOUR_LOGSCALE_URL',
  path: 'graphql',
  port: 443,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    Authorization: 'BEARER ' + process.env.TOKEN,
    'User-Agent': 'Node',
  },
};

const req = https.request(options, (res) => {
  let data = '';
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    data += d;
  });
  res.on('end', () => {
    console.log(JSON.parse(data).data);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();
Example Responses
Success (HTTP Response Code 200 OK)
json
{
  "data": {
    "setAllowRebalanceExistingSegments": true
  }
}

Returned Values

The mutation returns a non-null Boolean. The returned value reflects the updated setting: true if rebalancing of existing segments is now permitted, false if it is disabled.

Input Parameters

Provide a Boolean value indicating whether existing segments can be moved between cluster nodes.

Table: Input Parameters & Datatypes

Parameter Type Required Default Description
This table contains all input parameters for this mutation.
allowRebalanceExistingSegments Boolean yes ย  Set to true to permit LogScale to migrate existing segments between nodes to normalize storage distribution. Set to false to preserve existing segment placement. New segments follow optimal placement regardless of this setting.