blob: a6f60cd16108ccf8e5cc8e0552291c939a2a7b21 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-61232409-1');
</script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(72949126, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<!-- LuckyOrange code -->
<script type='text/javascript'>
window.__lo_site_id = 284467;
(function() {
var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
})();
</script>
<!-- /LuckyOrange code -->
<!-- Bugyard widget embed -->
<script type="text/javascript">!function(){if("function"!=typeof window.bugyard){var a=function(){a.c(arguments)};a.q=[],a.c=function(b){a.q.push(b)},window.bugyard=a;var b=document.createElement("script");b.setAttribute("data-bugyard","610961912c35ff001493163a"),b.setAttribute("async","async"),b.setAttribute("defer","defer"),b.setAttribute("src","https://widget.bugyard.io/bugyard.min.js"),document.getElementsByTagName("head")[0].appendChild(b)}}(); window.bugyard("hideButton"); </script>
<link rel="preload" href='/assets/js/code-tabs.js?1' as="script" crossorigin>
<link rel="preload" href='/assets/js/page-nav.js' as="script" crossorigin>
<link rel="preload" href='/assets/js/docs-menu.js?20201005' as="script" crossorigin>
<style>:root{--gg-red:#ec1c24;--gg-orange:#ec1c24;--gg-orange-dark:#bc440b;--gg-orange-filter:invert(47%) sepia(61%) saturate(1950%) hue-rotate(345deg) brightness(100%) contrast(95%);--gg-dark-gray:#333333;--orange-line-thickness:3px;--block-code-background:rgba(241, 241, 241, 20%);--inline-code-background:rgba(241, 241, 241, 90%);--padding-top:25px;--link-color:#ec1c24;--body-background:#fcfcfc}header{min-height:var(--header-height);background:#fff;box-shadow:0 4px 10px 0 #eee,0 0 4px 0 #d5d5d5;z-index:1}header>.container{display:grid;grid-template-columns:auto auto 1fr auto auto auto;grid-template-areas:'left-toggle home nav ver api search lang';grid-template-rows:40px;flex-direction:row;align-items:center;justify-content:flex-start;padding:12px 20px;max-width:1400px;margin:0 auto}header nav>ul{padding:0;margin:0;list-style:none;display:inherit}header .dropdown{display:none;position:fixed;top:calc(var(--header-height) - 12px);width:auto;background:#fff;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);border-radius:4px;padding-top:10px;padding-bottom:12px;z-index:2}header .dropdown li{display:flex}header .dropdown a{color:grey!important;font-size:16px;padding-top:5px;padding-bottom:4px}header .menu{border:none;background:0 0;width:40px;height:40px;margin-right:12px;grid-area:left-toggle}header .menu img{width:18px;height:12px}header .search-close,header .top-nav-toggle{background:0 0;border:none;padding:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;color:var(--gg-dark-gray);font-size:26px}header .search-toggle{grid-area:search}header .top-nav-toggle{grid-area:top-toggle}header .home{grid-area:home;margin-right:auto}header .home img{height:36px}header #api-docs{grid-area:api;margin:0;display:flex}header #api-docs .dropdown{padding:.5em 0}header #api-docs a{padding:9px 14px;color:var(--gg-dark-gray)!important;text-decoration:none;white-space:nowrap}header #api-docs .dropdown-item a{font-weight:400;display:block;width:100%;min-width:150px}header #lang-selector li{list-style:none;display:flex;padding:9px 14px}header #lang-selector li a{display:flex;color:#000;align-items:center}header #lang-selector li a span{font-size:10px;margin-left:5px}header #lang-selector li a img{width:25px}header #lang-selector li .dropdown{margin-left:-70px}header #lang-selector li .dropdown .dropdown-item{padding:0 1em;margin-bottom:8px}header #lang-selector li .dropdown .dropdown-item a span{font-size:14px}header .search{margin-left:auto;margin-right:20px;grid-area:search}header .search input[type=search]{color:var(--gg-dark-gray);background:rgba(255,255,255,.8);border:1px solid #ccc;padding:10px 15px;font-family:inherit;max-width:148px;height:37px;font-size:14px;-webkit-appearance:unset;appearance:unset}header #version-selector{list-style:none;grid-area:ver;line-height:28px;border-radius:0;margin-right:10px;border:none;color:var(--gg-dark-gray);padding:5px 16px 5px 10px;white-space:nowrap;font-size:14px;width:auto;text-align:right;box-sizing:border-box;text-align-last:right;-moz-appearance:none;-webkit-appearance:none;appearance:none;direction:rtl}header #version-selector option{direction:ltr}header>nav{grid-area:nav;font-size:18px;display:flex;flex-direction:row;margin:0 20px}header #lang-selector{grid-area:lang}header .search-close{margin-right:10px}@media (max-width:600px){header .search{margin-right:5px}header .search input[type=search]{max-width:110px}}header:not(.narrow-header) .search-close,header:not(.narrow-header) .top-nav-toggle{display:none}@media (max-width:670px){header>.container{grid-template-columns:auto 1fr auto;grid-template-areas:'left-toggle home search' 'ver api lang'}header #lang-selector li{justify-content:flex-end}}pre,pre.rouge{padding:8px 15px;background:var(--block-code-background)!important;border-radius:5px;border:1px solid #e5e5e5;overflow-x:auto;min-height:36px;line-height:18px;color:#545454}code{color:#545454}pre.rouge code{background:0 0!important}:not(pre)>code{background:var(--inline-code-background);padding:.1em .5em;background-clip:padding-box;border-radius:3px;color:#545454;font-size:90%}.listingblock .content{position:relative}.highlight{color:#586e75}.highlight .c1{color:#657b83}.highlight .nt{color:#b58900}.highlight .o{color:#93a1a1}.highlight .k{color:#6c71c4}.highlight .kt{color:#cb4b16}.highlight .s,.highlight .s1{color:#859900}.highlight .nc{color:#b58900}.highlight .na{color:#268bd2}body{font-family:'Open Sans',sans-serif}h1,h2{color:#000;font-weight:400;font-family:'Open Sans'}h1{font-size:36px;line-height:40px}a{text-decoration:none;color:var(--link-color)}section{color:#545454}.admonitionblock .icon .title{display:none}body{--header-height:64px;--promotion-bar-height:35px;--footer-height:104px;--footer-gap:60px;padding:0;margin:0;display:flex;flex-direction:column;min-height:100vh;background-color:var(--body-background);font-family:'Open Sans',sans-serif}body>section{flex:1}header{position:-webkit-sticky;position:sticky;top:0;z-index:2}*{box-sizing:border-box}@media (max-width:670px){body{--header-height:97px}}.left-nav{padding:10px 20px;width:289px;overflow-y:auto;top:calc(var(--header-height) + var(--promotion-bar-height));height:calc(100vh - var(--header-height) - var(--promotion-bar-height));font-family:'Open Sans';padding-top:var(--padding-top);background-color:var(--body-background)}.left-nav li{list-style:none}.left-nav a,.left-nav button{text-decoration:none;color:#757575;font-size:16px;display:inline-flex;width:100%;margin:2px 0;padding:.25em .375em;background:0 0;border:none;font:inherit;text-align:left}.left-nav a.active{color:var(--link-color)}.left-nav .nav-group{margin-left:6px;font-size:14px}.left-nav nav{border-left:2px solid #ddd;margin-bottom:5px}.left-nav nav.collapsed{display:none}.left-nav nav>li>a,.left-nav nav>li>button{padding-left:20px;text-align:left}.left-nav nav>li>a.active{border-left:var(--orange-line-thickness) solid var(--active-color);padding-left:calc(20px - var(--orange-line-thickness))}.left-nav nav.sub_pages{border:none}.left-nav nav.sub_pages a{padding-left:32px}.left-nav .state-indicator{margin-left:auto;margin-top:5px;width:6.2px;height:10px;flex:0 0 auto;filter:invert(49%) sepia(4%) saturate(5%) hue-rotate(23deg) brightness(92%) contrast(90%)}.left-nav button.expanded .state-indicator{transform:rotate(90deg)}.right-nav{width:289px;padding:12px 26px;overflow-y:auto;height:calc(100vh - var(--header-height));top:0;position:-webkit-sticky;position:sticky;display:flex;flex-direction:column;font-family:'Open sans';padding-top:var(--padding-top);background-color:#fff}.right-nav ul{list-style:none;padding:0;margin:0}.right-nav li{padding:0}.right-nav a{--border-width:0px;font-size:14px;color:#757575;padding-left:calc(15px * var(--nesting-level) + 8px - var(--border-width));margin:.3em 0;display:inline-block}.right-nav .sectlevel1{border-left:2px solid #ddd}.right-nav .sectlevel1{--nesting-level:0}.right-nav .sectlevel2{--nesting-level:1}.right-nav .sectlevel3{--nesting-level:2}@media (max-width:1200px){.right-nav{width:230px}}.right-nav footer{font-size:12px;padding:calc(var(--footer-gap) * .3) 0 5px;text-align:left;margin:auto 0 0}section.page-docs{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:100%;grid-template-areas:'left-nav content right-nav';line-height:20px;max-width:1440px;margin:auto;width:100%}section.page-docs>article{border-left:1px solid #eee;background-color:#fff;padding:0 50px 30px;grid-area:content;overflow:hidden;font-family:sans-serif;font-size:16px;color:#545454;line-height:1.6em}section.page-docs>article h1,section.page-docs>article h2{font-family:'Open Sans'}@media (max-width:800px){section.page-docs>article{padding-left:15px;padding-right:15px}}section.page-docs .edit-link{position:relative;top:10px;right:10px;float:right;padding-top:calc(var(--header-height) + var(--padding-top));margin-top:calc((-1 * var(--header-height)))}section.page-docs h1,section.page-docs h2{margin-bottom:0}section.page-docs h2[id]{margin-top:var(--margin-top);margin-bottom:calc(var(--margin-top) * .5);z-index:-1}section.page-docs .title{font-style:italic}section.page-docs h2[id]{--margin-top:1.2em}.left-nav{bottom:0;position:-webkit-sticky;position:sticky}.left-nav{grid-area:left-nav}.right-nav{grid-area:right-nav}.left-nav__overlay{display:none;background:rgba(0,0,0,.5);z-index:1;position:fixed;top:var(--header-height);bottom:0;left:0;right:0}@media (max-width:990px){body:not(.hide-left-nav) .left-nav__overlay{display:block}nav.left-nav{background:#fafafa;grid-area:left-nav;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);min-height:calc(100vh - var(--header-height));max-height:calc(100vh - var(--header-height));position:fixed;bottom:0;top:var(--header-height);z-index:2}section.page-docs>article{grid-column-start:left-nav;grid-column-end:content;grid-row:content}}@media (max-width:800px){nav.right-nav{display:none}}:target:before{content:"";display:block;margin-top:calc(var(--header-height) * -1);height:var(--header-height);width:1px}@media (min-width:600px) and (max-width:900px){:target:before{content:"";display:block;width:1px;margin-top:-150px;height:150px}}
#header #promotion-bar { background-color: #333333; padding: 8px; }
#header #promotion-bar p { font-size: 14px; line-height: 1.4em; font-weight: 600; padding: 0; margin: 0; color: #f0f0f0; text-align: center;}
#header #promotion-bar p a { color: #FCB903; } </style>
<meta name="ignite-version" content="2.11.0" />
<title>Control Script | Ignite Documentation</title>
<link rel="canonical" href="/docs/latest/tools/control-script" />
<link rel="shortcut icon" href="/favicon.ico">
<meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'>
<link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" media="print" onload="this.media='all'">
<noscript>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" rel="stylesheet">
</noscript>
<script>
// AnchorJS - v4.2.0 - 2019-01-01
// https://github.com/bryanbraun/anchorjs
// Copyright (c) 2019 Bryan Braun; Licensed MIT
!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(e=p(A)).length)return this;for(function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o<e.length;o++)if(this.hasAnchorJSLink(e[o]))d.push(o);else{if(e[o].hasAttribute("id"))n=e[o].getAttribute("id");else if(e[o].hasAttribute("data-anchor-id"))n=e[o].getAttribute("data-anchor-id");else{for(c=r=this.urlify(e[o].textContent),a=0;void 0!==s&&(c=r+"-"+a),a+=1,-1!==(s=i.indexOf(c)););s=void 0,i.push(c),e[o].setAttribute("id",c),n=c}n.replace(/-/g," "),(h=document.createElement("a")).className="anchorjs-link "+this.options.class,h.setAttribute("aria-label",this.options.ariaLabel),h.setAttribute("data-anchorjs-icon",this.options.icon),this.options.titleText&&(h.title=this.options.titleText),u=document.querySelector("base")?window.location.pathname+window.location.search:"",u=this.options.base||u,h.href=u+"#"+n,"always"===l&&(h.style.opacity="1"),""===this.options.icon&&(h.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(h.style.lineHeight="inherit")),"left"===this.options.placement?(h.style.position="absolute",h.style.marginLeft="-1em",h.style.paddingRight="0.5em",e[o].insertBefore(h,e[o].firstChild)):(h.style.paddingLeft="0.375em",e[o].appendChild(h))}for(o=0;o<d.length;o++)e.splice(d[o]-o,1);return this.elements=this.elements.concat(e),this},this.remove=function(A){for(var e,t,i=p(A),n=0;n<i.length;n++)(t=i[n].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(i[n]))&&this.elements.splice(e,1),i[n].removeChild(t));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){return this.options.truncate||f(this.options),A.trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}});
</script>
</head>
<body>
<header>
<!--#include virtual="/includes/promotion_banner.html" -->
<div class="container">
<button type='button' class='menu' title='Docs menu'>
<img src="/assets/images/menu-icon.svg" width="18" height="12" alt="menu icon" />
</button>
<div class='home'>
<a href="/" class='home' title='Apache Ignite home'>
<img src="/assets/images/apache_ignite_logo.svg" alt="Apache Ignite logo" width="103" height="36" >
</a>
</div>
<select id="version-selector">
<option value="2.11.0">2.11.0</option>
</select>
<nav id="api-docs"><ul>
<li><a href="#">APIs</a>
<nav class='dropdown'>
<ul>
<li class="dropdown-item"><a href="/releases/latest/javadoc/index.html">Java</a></li>
<li class="dropdown-item"><a href="/releases/latest/dotnetdoc/api/">C#/.NET</a></li>
<li class="dropdown-item"><a href="/releases/latest/cppdoc/index.html">C++</a></li>
<li class="dropdown-item"><a href="/releases/latest/scaladoc/scalar/index.html#org.apache.ignite.scalar.scalar$">Scala</a></li>
</ul>
</nav>
</li>
<li><a href="#">Examples</a>
<nav class="dropdown">
<ul>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/examples" target="_blank" rel="noopener" title="Apache Ignite Java examples">Java</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/dotnet/examples" target="_blank" rel="noopener" title="Apache Ignite C#/.NET examples">C#/.NET</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/cpp/examples" target="_blank" rel="noopener" title="Apache Ignite C++ examples">C++</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/python/examples" target="_blank" rel="noopener" title="Apache Ignite Python examples">Python</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/nodejs/examples" target="_blank" rel="noopener" title="Apache Ignite NodeJS examples">NodeJS</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/php/examples" target="_blank" rel="noopener" title="Apache Ignite PHP examples">PHP</a></li>
</ul>
</nav>
</li></ul>
</nav>
<form class='search'>
<button class="search-close" type='button'><img src='/assets/images/cancel.svg' alt="close" width="10" height="10" /></button>
<input type="search" placeholder="Search…" id="search-input">
</form>
<nav id="lang-selector"><ul>
<li><a href="#"><img src="/assets/images/icon_lang_en_75x75.jpg" alt="English language icon" width="25" height="25" /><span></span></a>
<nav class="dropdown">
<li class="dropdown-item"><a href="/docs/latest/" ><img src="/assets/images/icon_lang_en_75x75.jpg" alt="English language icon" width="25" height="25" /><span>English</span></a></li>
<li class="dropdown-item"><a href="https://www.ignite-service.cn/doc/java/" target="_blank" rel="noopener"><img src="/assets/images/icon_lang_cn_75x75.jpg" width="25" height="25" alt="Chinese language icon" /><span>Chinese</span></a></li>
</nav>
</li></ul>
</nav>
<button type='button' class='top-nav-toggle'></button>
</div>
</header>
<link rel="stylesheet" href="/assets/css/docs.css">
<section class='page-docs'>
<nav class='left-nav' data-swiftype-index='false'>
<li>
<a href="/docs/latest/index" class='' >Documentation Overview</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Quick Start Guides<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/quick-start/java"
class=''
>Java</a>
</li>
<li>
<a href="/docs/latest/quick-start/dotnet"
class=''
>.NET/C#</a>
</li>
<li>
<a href="/docs/latest/quick-start/cpp"
class=''
>C++</a>
</li>
<li>
<a href="/docs/latest/quick-start/python"
class=''
>Python</a>
</li>
<li>
<a href="/docs/latest/quick-start/nodejs"
class=''
>Node.JS</a>
</li>
<li>
<a href="/docs/latest/quick-start/sql"
class=''
>SQL</a>
</li>
<li>
<a href="/docs/latest/quick-start/php"
class=''
>PHP</a>
</li>
<li>
<a href="/docs/latest/quick-start/restapi"
class=''
>REST API</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/installation/installing-using-zip"
class=''
>Installing Using ZIP Archive</a>
</li>
<li>
<a href="/docs/latest/installation/installing-using-docker"
class=''
>Installing Using Docker</a>
</li>
<li>
<a href="/docs/latest/installation/deb-rpm"
class=''
>Installing DEB or RPM package</a>
</li>
<li>
<button
type='button'
class='collapsed '>Kubernetes<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/installation/kubernetes/amazon-eks-deployment" class=''>Amazon EKS</a></li>
<li><a href="/docs/latest/installation/kubernetes/azure-deployment" class=''>Azure Kubernetes Service</a></li>
<li><a href="/docs/latest/installation/kubernetes/gke-deployment" class=''>Google Kubernetes Engine</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/installation/vmware-installation"
class=''
>VMWare</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Setting Up<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/understanding-configuration"
class=''
>Understanding Configuration</a>
</li>
<li>
<a href="/docs/latest/setup"
class=''
>Setting Up</a>
</li>
<li>
<a href="/docs/latest/logging"
class=''
>Configuring Logging</a>
</li>
<li>
<a href="/docs/latest/resources-injection"
class=''
>Resources Injection</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/starting-nodes" class='' >Starting and Stopping Nodes</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/clustering/clustering"
class=''
>Overview</a>
</li>
<li>
<a href="/docs/latest/clustering/tcp-ip-discovery"
class=''
>TCP/IP Discovery</a>
</li>
<li>
<a href="/docs/latest/clustering/zookeeper-discovery"
class=''
>ZooKeeper Discovery</a>
</li>
<li>
<a href="/docs/latest/clustering/discovery-in-the-cloud"
class=''
>Discovery in the Cloud</a>
</li>
<li>
<a href="/docs/latest/clustering/network-configuration"
class=''
>Network Configuration</a>
</li>
<li>
<a href="/docs/latest/clustering/connect-client-nodes"
class=''
>Connecting Client Nodes</a>
</li>
<li>
<a href="/docs/latest/clustering/baseline-topology"
class=''
>Baseline Topology</a>
</li>
<li>
<a href="/docs/latest/clustering/running-client-nodes-behind-nat"
class=''
>Running Client Nodes Behind NAT</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Thin Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/thin-clients/getting-started-with-thin-clients"
class=''
>Thin Clients Overview</a>
</li>
<li>
<a href="/docs/latest/thin-clients/java-thin-client"
class=''
>Java Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/dotnet-thin-client"
class=''
>.NET Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/cpp-thin-client"
class=''
>C++ Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/python-thin-client"
class=''
>Python Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/php-thin-client"
class=''
>PHP Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/nodejs-thin-client"
class=''
>Node.js Thin Client</a>
</li>
<li>
<button
type='button'
class='collapsed '>Binary Client Protocol<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/binary-client-protocol/binary-client-protocol" class=''>Binary Client Protocol</a></li>
<li><a href="/docs/latest/binary-client-protocol/data-format" class=''>Data Format</a></li>
<li><a href="/docs/latest/binary-client-protocol/key-value-queries" class=''>Key-Value Queries</a></li>
<li><a href="/docs/latest/binary-client-protocol/sql-and-scan-queries" class=''>SQL and Scan Queries</a></li>
<li><a href="/docs/latest/binary-client-protocol/binary-type-metadata" class=''>Binary Types Metadata</a></li>
<li><a href="/docs/latest/binary-client-protocol/cache-configuration" class=''>Cache Configuration</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Data Modeling<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/data-modeling/data-modeling"
class=''
>Introduction</a>
</li>
<li>
<a href="/docs/latest/data-modeling/data-partitioning"
class=''
>Data Partitioning</a>
</li>
<li>
<a href="/docs/latest/data-modeling/affinity-collocation"
class=''
>Affinity Colocation</a>
</li>
<li>
<a href="/docs/latest/data-modeling/binary-marshaller"
class=''
>Binary Marshaller</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Configuring Memory<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/memory-architecture"
class=''
>Memory Architecture</a>
</li>
<li>
<a href="/docs/latest/memory-configuration/data-regions"
class=''
>Configuring Data Regions</a>
</li>
<li>
<a href="/docs/latest/memory-configuration/eviction-policies"
class=''
>Eviction Policies</a>
</li>
<li>
<a href="/docs/latest/memory-configuration/replacement-policies"
class=''
>Replacement Policies</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Configuring Persistence<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/persistence/native-persistence"
class=''
>Ignite Persistence</a>
</li>
<li>
<a href="/docs/latest/persistence/external-storage"
class=''
>External Storage</a>
</li>
<li>
<a href="/docs/latest/persistence/swap"
class=''
>Swapping</a>
</li>
<li>
<a href="/docs/latest/persistence/custom-cache-store"
class=''
>Implementing Custom Cache Store</a>
</li>
<li>
<a href="/docs/latest/persistence/snapshot-directory"
class=''
>Configuring Snapshot Directory</a>
</li>
<li>
<a href="/docs/latest/persistence/disk-compression"
class=''
>Disk Compression</a>
</li>
<li>
<a href="/docs/latest/persistence/persistence-tuning"
class=''
>Tuning Persistence</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/snapshots/snapshots" class='' >Cluster Snapshots</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Configuring Caches<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/configuring-caches/configuration-overview"
class=''
>Cache Configuration</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/configuring-backups"
class=''
>Configuring Partition Backups</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/partition-loss-policy"
class=''
>Partition Loss Policy</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/atomicity-modes"
class=''
>Atomicity Modes</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/expiry-policies"
class=''
>Expiry Policy</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/on-heap-caching"
class=''
>On-Heap Caching</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/cache-groups"
class=''
>Cache Groups</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/near-cache"
class=''
>Near Caches</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/data-rebalancing" class='' >Data Rebalancing</a>
</li>
<li>
<a href="/docs/latest/data-streaming" class='' >Data Streaming</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Using Key-Value API<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/key-value-api/basic-cache-operations"
class=''
>Basic Cache Operations</a>
</li>
<li>
<a href="/docs/latest/key-value-api/binary-objects"
class=''
>Working with Binary Objects</a>
</li>
<li>
<a href="/docs/latest/key-value-api/using-scan-queries"
class=''
>Using Scan Queries</a>
</li>
<li>
<a href="/docs/latest/read-repair"
class=''
>Read Repair</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/key-value-api/transactions" class='' >Performing Transactions</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/SQL/sql-introduction"
class=''
>Introduction</a>
</li>
<li>
<a href="/docs/latest/SQL/schemas"
class=''
>Understanding Schemas</a>
</li>
<li>
<a href="/docs/latest/SQL/indexes"
class=''
>Defining Indexes</a>
</li>
<li>
<a href="/docs/latest/SQL/sql-api"
class=''
>Using SQL API</a>
</li>
<li>
<a href="/docs/latest/SQL/distributed-joins"
class=''
>Distributed Joins</a>
</li>
<li>
<a href="/docs/latest/SQL/sql-transactions"
class=''
>SQL Transactions</a>
</li>
<li>
<a href="/docs/latest/SQL/custom-sql-func"
class=''
>Custom SQL Functions</a>
</li>
<li>
<a href="/docs/latest/SQL/JDBC/jdbc-driver"
class=''
>JDBC Driver</a>
</li>
<li>
<a href="/docs/latest/SQL/JDBC/jdbc-client-driver"
class=''
>JDBC Client Driver</a>
</li>
<li>
<button
type='button'
class='collapsed '>ODBC Driver<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/SQL/ODBC/odbc-driver" class=''>ODBC Driver</a></li>
<li><a href="/docs/latest//SQL/ODBC/connection-string-dsn" class=''>Connection String and DSN</a></li>
<li><a href="/docs/latest/SQL/ODBC/querying-modifying-data" class=''>Querying and Modifying Data</a></li>
<li><a href="/docs/latest/SQL/ODBC/specification" class=''>Specification</a></li>
<li><a href="/docs/latest/SQL/ODBC/data-types" class=''>Data Types</a></li>
<li><a href="/docs/latest/SQL/ODBC/error-codes" class=''>Error Codes</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/transactions/mvcc"
class=''
>Multiversion Concurrency Control</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/sql-reference/sql-conformance"
class=''
>SQL Conformance</a>
</li>
<li>
<a href="/docs/latest/sql-reference/ddl"
class=''
>Data Definition Language (DDL)</a>
</li>
<li>
<a href="/docs/latest/sql-reference/dml"
class=''
>Data Manipulation Language (DML)</a>
</li>
<li>
<a href="/docs/latest/sql-reference/transactions"
class=''
>Transactions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/operational-commands"
class=''
>Operational Commands</a>
</li>
<li>
<a href="/docs/latest/sql-reference/aggregate-functions"
class=''
>Aggregate functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/numeric-functions"
class=''
>Numeric Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/string-functions"
class=''
>String Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/date-time-functions"
class=''
>Data and Time Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/system-functions"
class=''
>System Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/data-types"
class=''
>Data Types</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/distributed-computing/distributed-computing"
class=''
>Distributed Computing API</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/cluster-groups"
class=''
>Cluster Groups</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/executor-service"
class=''
>Executor Service</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/map-reduce"
class=''
>MapReduce API</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/load-balancing"
class=''
>Load Balancing</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/fault-tolerance"
class=''
>Fault Tolerance</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/job-scheduling"
class=''
>Job Scheduling</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/collocated-computations"
class=''
>Colocating Computations with Data</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Code Deployment<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/code-deployment/deploying-user-code"
class=''
>Deploying User Code</a>
</li>
<li>
<a href="/docs/latest/code-deployment/peer-class-loading"
class=''
>Peer Class Loading</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Machine Learning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/machine-learning/machine-learning"
class=''
>Machine Learning</a>
</li>
<li>
<a href="/docs/latest/machine-learning/partition-based-dataset"
class=''
>Partition Based Dataset</a>
</li>
<li>
<a href="/docs/latest/machine-learning/updating-trained-models"
class=''
>Updating Trained Models</a>
</li>
<li>
<button
type='button'
class='collapsed '>Binary Classification<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/binary-classification/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/linear-svm" class=''>Linear SVM (Support Vector Machine)</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/decision-trees" class=''>Decision Trees</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/multilayer-perceptron" class=''>Multilayer Perceptron</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/logistic-regression" class=''>Logistic Regression</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/knn-classification" class=''>k-NN Classification</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/ann" class=''>ANN (Approximate Nearest Neighbor)</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/naive-bayes" class=''>Naive Bayes</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Regression<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/regression/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/regression/linear-regression" class=''>Linear Regression</a></li>
<li><a href="/docs/latest/machine-learning/regression/decision-trees-regression" class=''>Decision Trees Regression</a></li>
<li><a href="/docs/latest/machine-learning/regression/knn-regression" class=''>k-NN Regression</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/clustering/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/clustering/k-means-clustering" class=''>K-Means Clustering</a></li>
<li><a href="/docs/latest/machine-learning/clustering/gaussian-mixture" class=''>Gaussian mixture (GMM)</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/machine-learning/preprocessing"
class=''
>Preprocessing</a>
</li>
<li>
<button
type='button'
class='collapsed '>Model Selection<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/model-selection/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/model-selection/evaluator" class=''>Evaluator</a></li>
<li><a href="/docs/latest/machine-learning/model-selection/split-the-dataset-on-test-and-train-datasets" class=''>Split the dataset on test and train datasets</a></li>
<li><a href="/docs/latest/machine-learning/model-selection/hyper-parameter-tuning" class=''>Hyper-parameter tuning</a></li>
<li><a href="/docs/latest/machine-learning/model-selection/pipeline-api" class=''>Pipeline API</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/machine-learning/multiclass-classification"
class=''
>Multiclass Classification</a>
</li>
<li>
<button
type='button'
class='collapsed '>Ensemble Methods<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/ensemble-methods/introduction" class=''></a></li>
<li><a href="/docs/latest/machine-learning/ensemble-methods/stacking" class=''>Stacking</a></li>
<li><a href="/docs/latest/machine-learning/ensemble-methods/baggin" class=''>Bagging</a></li>
<li><a href="/docs/latest/machine-learning/ensemble-methods/random-forest" class=''>Random Forest</a></li>
<li><a href="/docs/latest/machine-learning/ensemble-methods/gradient-boosting" class=''>Gradient Boosting</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/machine-learning/recommendation-systems"
class=''
>Recommendation Systems</a>
</li>
<li>
<button
type='button'
class='collapsed '>Importing Model<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/importing-model/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/importing-model/model-import-from-gxboost" class=''>Import Model from XGBoost</a></li>
<li><a href="/docs/latest/machine-learning/importing-model/model-import-from-apache-spark" class=''>Import Model from Apache Spark</a></li>
</nav>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/key-value-api/continuous-queries" class='' >Using Continuous Queries</a>
</li>
<li>
<a href="/docs/latest/services/services" class='' >Using Ignite Services</a>
</li>
<li>
<a href="/docs/latest/messaging" class='' >Using Ignite Messaging</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Distributed Data Structures<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/data-structures/queue-and-set"
class=''
>Queue and Set</a>
</li>
<li>
<a href="/docs/latest/data-structures/atomic-types"
class=''
>Atomic Types</a>
</li>
<li>
<a href="/docs/latest/data-structures/countdownlatch"
class=''
>CountDownLatch</a>
</li>
<li>
<a href="/docs/latest/data-structures/atomic-sequence"
class=''
>Atomic Sequence</a>
</li>
<li>
<a href="/docs/latest/data-structures/semaphore"
class=''
>Semaphore</a>
</li>
<li>
<a href="/docs/latest/data-structures/id-generator"
class=''
>ID Generator</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/distributed-locks" class='' >Distributed Locks</a>
</li>
<li>
<a href="/docs/latest/restapi" class='' >REST API</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>.NET Specific<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/net-specific/net-configuration-options"
class=''
>Configuration Options</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-deployment-options"
class=''
>Deployment Options</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-standalone-nodes"
class=''
>Standalone Nodes</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-async"
class=''
>Asynchronous APIs</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-logging"
class=''
>Logging</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-linq"
class=''
>LINQ</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-java-services-execution"
class=''
>Java Services Execution</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-platform-cache"
class=''
>.NET Platform Cache</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-plugins"
class=''
>Plugins</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-serialization"
class=''
>Serialization</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-cross-platform-support"
class=''
>Cross-Platform Support</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-platform-interoperability"
class=''
>Platform Interoperability</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-remote-assembly-loading"
class=''
>Remote Assembly Loading</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-troubleshooting"
class=''
>Troubleshooting</a>
</li>
<li>
<button
type='button'
class='collapsed '>Integrations<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/net-specific/asp-net-output-caching" class=''>ASP.NET Output Caching</a></li>
<li><a href="/docs/latest/net-specific/asp-net-session-state-caching" class=''>ASP.NET Session State Caching</a></li>
<li><a href="/docs/latest/net-specific/net-entity-framework-cache" class=''>Entity Framework 2nd Level Cache</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>C++ Specific<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/cpp-specific/cpp-serialization"
class=''
>Serialization</a>
</li>
<li>
<a href="/docs/latest/cpp-specific/cpp-platform-interoperability"
class=''
>Platform Interoperability</a>
</li>
<li>
<a href="/docs/latest/cpp-specific/cpp-objects-lifetime"
class=''
>Objects Lifetime</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/monitoring-metrics/intro"
class=''
>Introduction</a>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/cluster-id"
class=''
>Cluster ID and Tag</a>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/cluster-states"
class=''
>Cluster States</a>
</li>
<li>
<button
type='button'
class='collapsed '>Metrics<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/monitoring-metrics/configuring-metrics" class=''>Configuring Metrics</a></li>
<li><a href="/docs/latest/monitoring-metrics/metrics" class=''>JMX Metrics</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>New Metrics System<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/monitoring-metrics/new-metrics-system" class=''>Introduction</a></li>
<li><a href="/docs/latest/monitoring-metrics/new-metrics" class=''>Metrics</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/system-views"
class=''
>System Views</a>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/performance-statistics"
class=''
>Performance Statistics</a>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/tracing"
class=''
>Tracing</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Working with Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/events/listening-to-events"
class=''
>Enabling and Listenting to Events</a>
</li>
<li>
<a href="/docs/latest/events/events"
class=''
>Events</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle expanded '>Tools<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group expanded'>
<li>
<a href="/docs/latest/tools/control-script"
class='active'
>Control Script</a>
</li>
<li>
<a href="/docs/latest/tools/visor-cmd"
class=''
>Visor CMD</a>
</li>
<li>
<a href="/docs/latest/tools/gg-control-center"
class=''
>GridGain Control Center</a>
</li>
<li>
<a href="/docs/latest/tools/sqlline"
class=''
>SQLLine</a>
</li>
<li>
<a href="/docs/latest/tools/tableau"
class=''
>Tableau</a>
</li>
<li>
<a href="/docs/latest/tools/informatica"
class=''
>Informatica</a>
</li>
<li>
<a href="/docs/latest/tools/pentaho"
class=''
>Pentaho</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Security<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/security/authentication"
class=''
>Authentication</a>
</li>
<li>
<a href="/docs/latest/security/ssl-tls"
class=''
>SSL/TLS</a>
</li>
<li>
<button
type='button'
class='collapsed '>Transparent Data Encryption<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/security/tde" class=''>Introduction</a></li>
<li><a href="/docs/latest/security/master-key-rotation" class=''>Master key rotation</a></li>
<li><a href="/docs/latest/security/cache-encryption-key-rotation" class=''>Cache encryption key rotation</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/security/sandbox"
class=''
>Sandbox</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Extensions and Integrations<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<button
type='button'
class='collapsed '>Spring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/extensions-and-integrations/spring/spring-boot" class=''>Spring Boot</a></li>
<li><a href="/docs/latest/extensions-and-integrations/spring/spring-data" class=''>Spring Data</a></li>
<li><a href="/docs/latest/extensions-and-integrations/spring/spring-caching" class=''>Spring Caching</a></li>
<li><a href="/docs/latest/extensions-and-integrations/spring/spring-tx" class=''>Spring Transactions</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Ignite for Spark<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/overview" class=''>Overview</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/ignitecontext-and-rdd" class=''>IgniteContext and IgniteRDD</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/ignite-dataframe" class=''>Ignite DataFrame</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/installation" class=''>Installation</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/spark-shell" class=''>Test Ignite with Spark-shell</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/troubleshooting" class=''>Troubleshooting</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/extensions-and-integrations/hibernate-l2-cache"
class=''
>Hibernate L2 Cache</a>
</li>
<li>
<a href="/docs/latest/extensions-and-integrations/mybatis-l2-cache"
class=''
>MyBatis L2 Cache</a>
</li>
<li>
<button
type='button'
class='collapsed '>Streaming<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/extensions-and-integrations/streaming/kafka-streamer" class=''>Kafka Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/camel-streamer" class=''>Camel Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/flink-streamer" class=''>Flink Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/flume-sink" class=''>Flume Sink</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/jms-streamer" class=''>JMS Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/mqtt-streamer" class=''>MQTT Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/rocketmq-streamer" class=''>RocketMQ Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/storm-streamer" class=''>Storm Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/zeromq-streamer" class=''>ZeroMQ Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/twitter-streamer" class=''>Twitter Streamer</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Cassandra Integration<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/extensions-and-integrations/cassandra/overview" class=''>Overview</a></li>
<li><a href="/docs/latest/extensions-and-integrations/cassandra/configuration" class=''>Configuration</a></li>
<li><a href="/docs/latest/extensions-and-integrations/cassandra/usage-examples" class=''>Usage Examples</a></li>
<li><a href="/docs/latest/extensions-and-integrations/cassandra/ddl-generator" class=''>DDL Generator</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/extensions-and-integrations/php-pdo"
class=''
>PHP PDO</a>
</li>
<li>
<a href="/docs/latest/extensions-and-integrations/performance-statistics"
class=''
>Performance Statistics</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/plugins" class='' >Plugins</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Performance and Troubleshooting<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/perf-and-troubleshooting/general-perf-tips"
class=''
>General Performance Tips</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/memory-tuning"
class=''
>Memory and JVM Tuning</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/persistence-tuning"
class=''
>Persistence Tuning</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/sql-tuning"
class=''
>SQL Tuning</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/thread-pools-tuning"
class=''
>Thread Pools Tuning</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/troubleshooting"
class=''
>Troubleshooting and Debugging</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/handling-exceptions"
class=''
>Handling Exceptions</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/yardstick-benchmarking"
class=''
>Benchmarking With Yardstick</a>
</li>
</nav>
</li>
</nav>
<div class="left-nav__overlay"></div>
<article data-swiftype-index='true'>
<a class='edit-link' href="https://github.com/apache/ignite/tree/IGNITE-7595/docs/_docs/tools/control-script.adoc" target="_blank">Edit</a>
<h1>Control Script</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Ignite provides a command line script — <code>control.sh|bat</code> — that you can use to monitor and control your clusters.
The script is located under the <code>/bin/</code> folder of the installation directory.</p>
</div>
<div class="paragraph">
<p>The control script syntax is as follows:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh &lt;connection parameters&gt; &lt;<span class="nb">command</span><span class="o">&gt;</span> &lt;arguments&gt;</code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat &lt;connection parameters&gt; &lt;<span class="nb">command</span><span class="o">&gt;</span> &lt;arguments&gt;</code></pre>
</div>
</div></code-tab></code-tabs>
</div>
</div>
<div class="sect1">
<h2 id="connecting-to-cluster">Connecting to Cluster</h2>
<div class="sectionbody">
<div class="paragraph">
<p>When executed without connection parameters, the control script tries to connect to a node running on localhost (<code>localhost:11211</code>).
If you want to connect to a node that is running on a remove machine, specify the connection parameters.</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 50%;">
<col style="width: 16.6667%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--host HOST_OR_IP</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The host name or IP address of the node.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>localhost</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--port PORT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The port to connect to.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>11211</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--user USER</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The user name.</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--password PASSWORD</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The user password.</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--ping-interval PING_INTERVAL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The ping interval.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5000</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--ping-timeout PING_TIMEOUT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ping response timeout.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">30000</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--ssl-protocol PROTOCOL1, PROTOCOL2&#8230;&#8203;</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A list of SSL protocols to try when connecting to the cluster. <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJSSE_Protocols" target="_blank" rel="noopener">Supported protocols</a>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>TLS</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--ssl-cipher-suites CIPHER1,CIPHER2&#8230;&#8203;</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A list of SSL ciphers. <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SupportedCipherSuites" target="_blank" rel="noopener">Supported ciphers</a>.</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--ssl-key-algorithm ALG</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The SSL key algorithm.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SunX509</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--keystore-type KEYSTORE_TYPE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The keystore type.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>JKS</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--keystore KEYSTORE_PATH</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The path to the keystore. Specify a keystore to enable SSL for the control script.</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--keystore-password KEYSTORE_PWD</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The password to the keystore.</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--truststore-type TRUSTSTORE_TYPE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The type of the truststore.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>JKS</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--truststore TRUSTSTORE_PATH</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The path to the truststore.</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--truststore-password TRUSTSTORE_PWD</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The password to the truststore.</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="activation-deactivation-and-topology-management">Activation, Deactivation and Topology Management</h2>
<div class="sectionbody">
<div class="paragraph">
<p>You can use the control script to activate or deactivate your cluster, and manage the <a href="/docs/latest/clustering/baseline-topology">Baseline Topology</a>.</p>
</div>
<div class="sect2">
<h3 id="getting-cluster-state">Getting Cluster State</h3>
<div class="paragraph">
<p>The cluster can be in one of the three states: active, read only, or inactive. Refer to <a href="/docs/latest/monitoring-metrics/cluster-states">Cluster States</a> for details.</p>
</div>
<div class="paragraph">
<p>To get the state of the cluster, run the following command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--state</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--state</span></code></pre>
</div>
</div></code-tab></code-tabs>
</div>
<div class="sect2">
<h3 id="activating-cluster">Activating Cluster</h3>
<div class="paragraph">
<p>Activation sets the baseline topology of the cluster to the set of nodes available at the moment of activation.
Activation is required only if you use <a href="/docs/latest/persistence/native-persistence">native persistence</a>.</p>
</div>
<div class="paragraph">
<p>To activate the cluster, run the following command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--set-state</span> ACTIVE</code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--set-state</span> ACTIVE</code></pre>
</div>
</div></code-tab></code-tabs>
</div>
<div class="sect2">
<h3 id="deactivating-cluster">Deactivating Cluster</h3>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<div class="title">Warning</div>
</td>
<td class="content">
<div class="paragraph">
<p>Deactivation deallocates all memory resources, including your application data, on all cluster nodes and disables public cluster API.
If you have in-memory caches that are not backed up by a persistent storage (neither <a href="/docs/latest/persistence/native-persistence">native persistent storage</a> nor <a href="/docs/latest/persistence/external-storage">external storage</a>), you will lose the data and will have to repopulate these caches.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>To deactivate the cluster, run the following command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--set-state</span> INACTIVE <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--set-state</span> INACTIVE <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab></code-tabs>
</div>
<div class="sect2">
<h3 id="getting-nodes-registered-in-baseline-topology">Getting Nodes Registered in Baseline Topology</h3>
<div class="paragraph">
<p>To get the list of nodes registered in the baseline topology, run the following command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--baseline</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--baseline</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>The output contains the current topology version, the list of consistent IDs of the nodes included in the baseline topology, and the list of nodes that joined the cluster but were not added to the baseline topology.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">Command <span class="o">[</span>BASELINE] started
Arguments: <span class="nt">--baseline</span>
<span class="nt">--------------------------------------------------------------------------------</span>
Cluster state: active
Current topology version: 3
Current topology version: 3 <span class="o">(</span>Coordinator: <span class="nv">ConsistentId</span><span class="o">=</span>dd3d3959-4fd6-4dc2-8199-bee213b34ff1, <span class="nv">Order</span><span class="o">=</span>1<span class="o">)</span>
Baseline nodes:
<span class="nv">ConsistentId</span><span class="o">=</span>7d79a1b5-cbbd-4ab5-9665-e8af0454f178, <span class="nv">State</span><span class="o">=</span>ONLINE, <span class="nv">Order</span><span class="o">=</span>2
<span class="nv">ConsistentId</span><span class="o">=</span>dd3d3959-4fd6-4dc2-8199-bee213b34ff1, <span class="nv">State</span><span class="o">=</span>ONLINE, <span class="nv">Order</span><span class="o">=</span>1
<span class="nt">--------------------------------------------------------------------------------</span>
Number of baseline nodes: 2
Other nodes:
<span class="nv">ConsistentId</span><span class="o">=</span>30e16660-49f8-4225-9122-c1b684723e97, <span class="nv">Order</span><span class="o">=</span>3
Number of other nodes: 1
Command <span class="o">[</span>BASELINE] finished with code: 0
Control utility has completed execution at: 2019-12-24T16:53:08.392865
Execution <span class="nb">time</span>: 333 ms</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="adding-nodes-to-baseline-topology">Adding Nodes to Baseline Topology</h3>
<div class="paragraph">
<p>To add a node to the baseline topology, run the command given below.
After the node is added, the <a href="/docs/latest/data-rebalancing">rebalancing process</a> starts.</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--baseline</span> add <em>consistentId1,consistentId2,...</em> <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--baseline</span> add <em>consistentId1,consistentId2,...</em> <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab></code-tabs>
</div>
<div class="sect2">
<h3 id="removing-nodes-from-baseline-topology">Removing Nodes from Baseline Topology</h3>
<div class="paragraph">
<p>To remove a node from the baseline topology, use the <code>remove</code> command.
Only offline nodes can be removed from the baseline topology: shut down the node first and then use the <code>remove</code> command.
This operation starts the rebalancing process, which re-distributes the data across the nodes that remain in the baseline topology.</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--baseline</span> remove <em>consistentId1,consistentId2,...</em> <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--baseline</span> remove <em>consistentId1,consistentId2,...</em> <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab></code-tabs>
</div>
<div class="sect2">
<h3 id="setting-baseline-topology">Setting Baseline Topology</h3>
<div class="paragraph">
<p>You can set the baseline topology by either providing a list of nodes (consistent IDs) or by specifying the desired version of the baseline topology.</p>
</div>
<div class="paragraph">
<p>To set a list of node as the baseline topology, use the following command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--baseline</span> <span class="nb">set </span><em>consistentId1,consistentId2,...</em> <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--baseline</span> <span class="nb">set </span><em>consistentId1,consistentId2,...</em> <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>To restore a specific version of the baseline topology, use the following command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--baseline</span> version <em>topologyVersion</em> <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--baseline</span> version <em>topologyVersion</em> <span class="o">[</span><span class="nt">--yes</span><span class="o">]</span></code></pre>
</div>
</div></code-tab></code-tabs>
</div>
<div class="sect2">
<h3 id="enabling-baseline-topology-autoadjustment">Enabling Baseline Topology Autoadjustment</h3>
<div class="paragraph">
<p><a href="/docs/latest/clustering/baseline-topology#baseline-topology-autoadjustment">Baseline topology autoadjustment</a> refers to automatic update of baseline topology after the topology has been stable for a specific amount of time.</p>
</div>
<div class="paragraph">
<p>For in-memory clusters, autoadjustment is enabled by default with the timeout set to 0. It means that baseline topology changes immediately after server nodes join or leave the cluster.
For clusters with persistence, the automatic baseline adjustment is disabled by default.
To enable it, use the following command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--baseline</span> auto_adjust <span class="nb">enable timeout </span>30000</code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--baseline</span> auto_adjust <span class="nb">enable timeout </span>30000</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>The timeout is set in milliseconds. The baseline is set to the current topology when a given number of milliseconds has passed after the last JOIN/LEFT/FAIL event.
Every new JOIN/LEFT/FAIL event restarts the timeout countdown.</p>
</div>
<div class="paragraph">
<p>To disable baseline autoadjustment, use the following command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--baseline</span> auto_adjust disable</code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--baseline</span> auto_adjust disable</code></pre>
</div>
</div></code-tab></code-tabs>
</div>
</div>
</div>
<div class="sect1">
<h2 id="transaction-management">Transaction Management</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The control script allows you to get the information about the transactions being executed in the cluster.
You can also cancel specific transactions.</p>
</div>
<div class="paragraph">
<p>The following command returns a list of transactions that satisfy a given filter (or all transactions if no filter is provided):</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--tx</span> <em>&lt;transaction filter&gt;</em> <span class="nt">--info</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--tx</span> <em>&lt;transaction filter&gt;</em> <span class="nt">--info</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>The transaction filter parameters are listed in the following table.</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 28.5714%;">
<col style="width: 71.4286%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--xid <em>XID</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Transaction ID.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--min-duration <em>SECONDS</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Minimum number of seconds a transaction has been executing.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--min-size <em>SIZE</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Minimum size of a transaction</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--label <em>LABEL</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">User label for transactions. You can use a regular expression.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--servers|--clients</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Limit the scope of the operation to either server or client nodes.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--nodes <em>nodeId1,nodeId2&#8230;&#8203;</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The list of consistent IDs of the nodes you want to get transactions from.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--limit <em>NUMBER</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Limit the number of transactions to the given value.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--order DURATION|SIZE|START_TIME</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The parameter that is used to sort the output.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>To cancel transactions, use the following command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--tx</span> <em>&lt;transaction filter&gt;</em> <span class="nt">--kill</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--tx</span> <em>&lt;transaction filter&gt;</em> <span class="nt">--kill</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>For example, to cancel the transactions that have been running for more than 100 seconds, execute the following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--tx</span> <span class="nt">--min-duration</span> 100 <span class="nt">--kill</span></code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="contention-detection-in-transactions">Contention Detection in Transactions</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The <code>contention</code> command detects when multiple transactions are in contention to create a lock for the same key. The command is useful if you have long-running or hanging transactions.</p>
</div>
<div class="paragraph">
<p>Example:</p>
</div>
<code-tabs><code-tab data-tab='Shell'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># Reports all keys that are point of contention for at least 5 transactions on all cluster nodes.</span>
control.sh|bat <span class="nt">--cache</span> contention 5
<span class="c"># Reports all keys that are point of contention for at least 5 transactions on specific server node.</span>
control.sh|bat <span class="nt">--cache</span> contention 5 f2ea-5f56-11e8-9c2d-fa7a</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>If there are any highly contended keys, the utility dumps extensive information including the keys, transactions, and nodes where the contention took place.</p>
</div>
<div class="paragraph">
<p>Example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="text">[node=TcpDiscoveryNode [id=d9620450-eefa-4ab6-a821-644098f00001, addrs=[127.0.0.1], sockAddrs=[/127.0.0.1:47501], discPort=47501, order=2, intOrder=2, lastExchangeTime=1527169443913, loc=false, ver=2.5.0#20180518-sha1:02c9b2de, isClient=false]]
// No contention on node d9620450-eefa-4ab6-a821-644098f00001.
[node=TcpDiscoveryNode [id=03379796-df31-4dbd-80e5-09cef5000000, addrs=[127.0.0.1], sockAddrs=[/127.0.0.1:47500], discPort=47500, order=1, intOrder=1, lastExchangeTime=1527169443913, loc=false, ver=2.5.0#20180518-sha1:02c9b2de, isClient=false]]
TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=CREATE, val=UserCacheObjectImpl [val=0, hasValBytes=false], tx=GridNearTxLocal[xid=e9754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439646, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1247], other=[]]
TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=READ, val=null, tx=GridNearTxLocal[xid=8a754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439656, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1175], other=[]]
TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=READ, val=null, tx=GridNearTxLocal[xid=6a754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439654, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1175], other=[]]
TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=READ, val=null, tx=GridNearTxLocal[xid=7a754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439655, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1175], other=[]]
TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=READ, val=null, tx=GridNearTxLocal[xid=4a754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439652, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1175], other=[]]
// Node 03379796-df31-4dbd-80e5-09cef5000000 is place for contention on key KeyCacheObjectImpl [part=0, val=0, hasValBytes=false].</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="monitoring-cache-state">Monitoring Cache State</h2>
<div class="sectionbody">
<div class="paragraph">
<p>One of the most important commands that <code>control.sh|bat</code> provides is <code>--cache list</code>, which is used for cache monitoring. The command provides a list of deployed caches and their affinity/distributiong parameters and distribution within cache groups. There is also a command for viewing existing atomic sequences.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># Displays a list of all caches</span>
control.sh|bat <span class="nt">--cache</span> list <span class="nb">.</span>
<span class="c"># Displays a list of caches whose names start with "account-".</span>
control.sh|bat <span class="nt">--cache</span> list account-.<span class="k">*</span>
<span class="c"># Displays info about cache group distribution for all caches.</span>
control.sh|bat <span class="nt">--cache</span> list <span class="nb">.</span> <span class="nt">--groups</span>
<span class="c"># Displays info about cache group distribution for the caches whose names start with "account-".</span>
control.sh|bat <span class="nt">--cache</span> list account-.<span class="k">*</span> <span class="nt">--groups</span>
<span class="c"># Displays info about all atomic sequences.</span>
control.sh|bat <span class="nt">--cache</span> list <span class="nb">.</span> <span class="nt">--seq</span>
<span class="c"># Displays info about the atomic sequnces whose names start with "counter-".</span>
control.sh|bat <span class="nt">--cache</span> list counter-.<span class="k">*</span> <span class="nt">--seq</span></code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="resetting-lost-partitions">Resetting Lost Partitions</h2>
<div class="sectionbody">
<div class="paragraph">
<p>You can use the control script to reset lost partitions for specific caches.
Refer to <a href="/docs/latest/configuring-caches/partition-loss-policy">Partition Loss Policy</a> for details.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--cache</span> reset_lost_partitions cacheName1,cacheName2,...</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="consistency-check-commands">Consistency Check Commands</h2>
<div class="sectionbody">
<div class="paragraph">
<p><code>control.sh|bat</code> includes a set of consistency check commands that enable you to verify internal data consistency.</p>
</div>
<div class="paragraph">
<p>First, the commands can be used for debugging and troubleshooting purposes especially if you&#8217;re in active development.</p>
</div>
<div class="paragraph">
<p>Second, if there is a suspicion that a query (such as a SQL query, etc.) returns an incomplete or wrong result set, the commands can verify whether there is inconsistency in the data.</p>
</div>
<div class="paragraph">
<p>Finally, the consistency check commands can be utilized as part of regular cluster health monitoring.</p>
</div>
<div class="paragraph">
<p>Let&#8217;s review these usage scenarios in more detail.</p>
</div>
<div class="sect2">
<h3 id="verifying-partition-checksums">Verifying Partition Checksums</h3>
<div class="paragraph">
<p>The <code>idle_verify</code> command compares the hash of the primary partition with that of the backup partitions and reports any differences.
The differences might be the result of node failure or incorrect shutdown during an update operation.
If any inconsistency is detected, we recommend remove the incorrect partitions.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># Checks partitions of all caches that their partitions actually contain same data.</span>
control.sh|bat <span class="nt">--cache</span> idle_verify
<span class="c"># Checks partitions of specific caches that their partitions actually contain same data.</span>
control.sh|bat <span class="nt">--cache</span> idle_verify cache1,cache2,cache3</code></pre>
</div>
</div>
<div class="paragraph">
<p>If any partitions diverge, a list of conflict partitions is printed out, as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="text">idle_verify check has finished, found 2 conflict partitions.
Conflict partition: PartitionKey [grpId=1544803905, grpName=default, partId=5]
Partition instances: [PartitionHashRecord [isPrimary=true, partHash=97506054, updateCntr=3, size=3, consistentId=bltTest1], PartitionHashRecord [isPrimary=false, partHash=65957380, updateCntr=3, size=2, consistentId=bltTest0]]
Conflict partition: PartitionKey [grpId=1544803905, grpName=default, partId=6]
Partition instances: [PartitionHashRecord [isPrimary=true, partHash=97595430, updateCntr=3, size=3, consistentId=bltTest1], PartitionHashRecord [isPrimary=false, partHash=66016964, updateCntr=3, size=2, consistentId=bltTest0]]</code></pre>
</div>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<div class="title">Warning</div>
</td>
<td class="content">
<h3 id="cluster-should-be-idle-during-idle_verify-check" class="discrete">Cluster Should Be Idle During <code>idle_verify</code> Check</h3>
<div class="paragraph">
<p>All updates should be stopped when <code>idle_verify</code> calculates hashes, otherwise it may show false positive error results. It&#8217;s impossible to compare big datasets in a distributed system if they are being constantly updated​.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="validating-sql-index-consistency">Validating SQL Index Consistency</h3>
<div class="paragraph">
<p>The <code>validate_indexes</code> command validates the indexes of given caches on all cluster nodes.</p>
</div>
<div class="paragraph">
<p>The following is checked by the validation process:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>All the key-value entries that are referenced from a primary index has to be reachable from secondary SQL indexes.</p>
</li>
<li>
<p>All the key-value entries that are referenced from a primary index has to be reachable. A reference from the primary index shouldn&#8217;t point to nowhere.</p>
</li>
<li>
<p>All the key-value entries that are referenced from secondary SQL indexes have to be reachable from the primary index.</p>
</li>
</ol>
</div>
<code-tabs><code-tab data-tab='Shell'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># Checks indexes of all caches on all cluster nodes.</span>
control.sh|bat <span class="nt">--cache</span> validate_indexes
<span class="c"># Checks indexes of specific caches on all cluster nodes.</span>
control.sh|bat <span class="nt">--cache</span> validate_indexes cache1,cache2
<span class="c"># Checks indexes of specific caches on node with given node ID.</span>
control.sh|bat <span class="nt">--cache</span> validate_indexes cache1,cache2 f2ea-5f56-11e8-9c2d-fa7a</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>If indexes refer to non-existing entries (or some entries are not indexed), errors are dumped to the output, as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="text">PartitionKey [grpId=-528791027, grpName=persons-cache-vi, partId=0] ValidateIndexesPartitionResult [updateCntr=313, size=313, isPrimary=true, consistentId=bltTest0]
IndexValidationIssue [key=0, cacheName=persons-cache-vi, idxName=_key_PK], class org.apache.ignite.IgniteCheckedException: Key is present in CacheDataTree, but can't be found in SQL index.
IndexValidationIssue [key=0, cacheName=persons-cache-vi, idxName=PERSON_ORGID_ASC_IDX], class org.apache.ignite.IgniteCheckedException: Key is present in CacheDataTree, but can't be found in SQL index.
validate_indexes has finished with errors (listed above).</code></pre>
</div>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<div class="title">Warning</div>
</td>
<td class="content">
<h3 id="cluster-should-be-idle-during-validate_indexes-check" class="discrete">Cluster Should Be Idle During <code>validate_indexes</code> Check</h3>
<div class="paragraph">
<p>Like <code>idle_verify</code>, index validation tool works correctly only if updates are stopped. Otherwise, there may be a race between the checker thread and the thread that updates the entry/index, which can result in a false positive error report.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="checking-snapshot-consistency">Checking Snapshot Consistency</h3>
<div class="paragraph">
<p>The checking snapshot consistency command works the same way as the <code>idle_verify</code> command does. It compares hashes between
a primary partition and a corresponding backup partitions and prints a report if any differences are found.
Differences may be the result of inconsistencies in some data on the cluster from which the snapshot was taken. It is
recommended to perform the <code>idle_verify</code> procedure on the cluster if this case occurs.</p>
</div>
<div class="paragraph">
<p>This procedure does not require the cluster to be in the <code>idle</code> state.</p>
</div>
<code-tabs><code-tab data-tab='Shell'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># Checks that partitions of all snapshot caches have the correct checksums and primary/backup ones actually contain the same data.</span>
control.<span class="o">(</span>sh|bat<span class="o">)</span> <span class="nt">--snapshot</span> check snapshot_name</code></pre>
</div>
</div></code-tab></code-tabs>
</div>
<div class="sect2">
<h3 id="check-sql-index-inline-size">Check SQL Index Inline Size</h3>
<div class="paragraph">
<p>A running Ignite cluster could have different SQL index inline sizes on its cluster nodes.
For example, it could happen due to the <code>IGNITE_MAX_INDEX_PAYLOAD_SIZE</code> property value is different on the cluster nodes. The difference
between index inline sizes may lead to a performance drop.</p>
</div>
<div class="paragraph">
<p>The <code>check_index_inline_sizes</code> command validates the indexes inline size of given caches on all cluster nodes. The inline
size of secondary indexes is always checked on a node join and a WARN message is printed to the log if they differ.</p>
</div>
<div class="paragraph">
<p>Use the command below to check if the secondary indexes inline sizes are the same on all cluster nodes.</p>
</div>
<code-tabs><code-tab data-tab='Shell'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh|bat <span class="nt">--cache</span> check_index_inline_sizes</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>If the index inline sizes are different, the console output is similar to the data below:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="text">Control utility [ver. 2.10.0]
2021 Copyright(C) Apache Software Foundation
User: test
Time: 2021-04-27T16:13:21.213
Command [CACHE] started
Arguments: --cache check_index_inline_sizes --yes
Found 4 secondary indexes.
3 index(es) have different effective inline size on nodes. It can lead to
performance degradation in SQL queries.
Index(es):
Full index name: PUBLIC#TEST_TABLE#L_IDX nodes:
[ca1d23ae-89d4-4e8d-ae12-6c68f3900000] inline size: 1, nodes:
[8327bbd1-df08-4b97-8721-de95e363e745] inline size: 2
Full index name: PUBLIC#TEST_TABLE#S1_IDX nodes:
[ca1d23ae-89d4-4e8d-ae12-6c68f3900000] inline size: 1, nodes:
[8327bbd1-df08-4b97-8721-de95e363e745] inline size: 2
Full index name: PUBLIC#TEST_TABLE#I_IDX nodes:
[ca1d23ae-89d4-4e8d-ae12-6c68f3900000] inline size: 1, nodes:
[8327bbd1-df08-4b97-8721-de95e363e745] inline size: 2</code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="tracing-configuration">Tracing Configuration</h2>
<div class="sectionbody">
<div class="paragraph">
<p>You can enable or disable sampling of traces for a specific API by using the <code>--tracing-configuration</code> command.
Refer to the <a href="/docs/latest/monitoring-metrics/tracing">Tracing</a> section for details.</p>
</div>
<div class="paragraph">
<p>Before using the command, enable experimental features of the control script:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="nb">export </span><span class="nv">IGNITE_ENABLE_EXPERIMENTAL_COMMAND</span><span class="o">=</span><span class="nb">true</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>To view the current tracing configuration, execute the following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--tracing-configuration</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>To enable trace sampling for a specific API:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--tracing-configuration</span> <span class="nb">set</span> <span class="nt">--scope</span> &lt;scope&gt; <span class="nt">--sampling-rate</span> &lt;rate&gt; <span class="nt">--label</span> &lt;label&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Parameters:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--scope</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>The API you want to trace:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>DISCOVERY</code>: discovery events</p>
</li>
<li>
<p><code>EXCHANGE</code>: exchange events</p>
</li>
<li>
<p><code>COMMUNICATION</code>: communication events</p>
</li>
<li>
<p><code>TX</code>: transactions</p>
</li>
</ul>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--sampling-rate</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>The probabilistic sampling rate, a number between <code>0.0</code> and <code>1.0</code> inclusive.
<code>0</code> means no sampling (default), <code>1</code> means always sampling. Ex. <code>0.5</code> means every trace is sampled with the probability of 50%.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--label</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Only applicable to the <code>TX</code> scope. The parameter defines the sampling rate for the transactions with the given label.
When the <code>--label</code> parameter is specified, Ignite will trace transactions with the given label. You can configure different sampling rates for different labels.</p>
<p class="tableblock">Transaction traces with no label will be sampled at the default sampling rate.
The default rate for the <code>TX</code> scope can be set by using this command without the <code>--label</code> parameter.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Examples:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Trace all discovery events:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--tracing-configuration</span> <span class="nb">set</span> <span class="nt">--scope</span> DISCOVER <span class="nt">--sampling-rate</span> 1</code></pre>
</div>
</div>
</li>
<li>
<p>Trace all transactions:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--tracing-configuration</span> <span class="nb">set</span> <span class="nt">--scope</span> TX <span class="nt">--sampling-rate</span> 1</code></pre>
</div>
</div>
</li>
<li>
<p>Trace transactions with label "report" at a 50% rate:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--tracing-configuration</span> <span class="nb">set</span> <span class="nt">--scope</span> TX <span class="nt">--sampling-rate</span> 0.5</code></pre>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="cluster-id-and-tag">Cluster ID and Tag</h2>
<div class="sectionbody">
<div class="paragraph">
<p>A cluster ID is a unique identifier of the cluster that is generated automatically when the cluster starts for the first time. Read <a href="/docs/latest/monitoring-metrics/cluster-id">Cluster ID and Tag</a> for more information.</p>
</div>
<div class="paragraph">
<p>To view the cluster ID, run the <code>--state</code> command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--state</span></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--state</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>And check the output:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="text">Command [STATE] started
Arguments: --state
--------------------------------------------------------------------------------
Cluster ID: bf9764ea-995e-4ea9-b35d-8c6d078b0234
Cluster tag: competent_black
--------------------------------------------------------------------------------
Cluster is active
Command [STATE] finished with code: 0</code></pre>
</div>
</div>
<div class="paragraph">
<p>A cluster tag is a user friendly name that you can assign to your cluster.
To change the tag, use the following command (the tag must contain no more than 280 characters):</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--change-tag</span> <em>&lt;new-tag&gt;</em></code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--change-tag</span> <em>&lt;new-tag&gt;</em></code></pre>
</div>
</div></code-tab></code-tabs>
</div>
</div>
<div class="sect1">
<h2 id="metric-command">Metric Command</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The metrics command prints out the value of a metric or metric registry provided in the parameters list. Use the <code>--node-id</code> parameter, If you need to get a metric from a specific node. Ignite selects a random node, if the <code>--node-id</code> is not set.</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--metric</span> sys</code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--metric</span> sys</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Example of the metric output:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="text">control.sh --metric sysCurrentThreadCpuTime
Command [METRIC] started
Arguments: --metric sys
--------------------------------------------------------------------------------
metric value
sys.CurrentThreadCpuTime 17270000
Command [METRIC] finished with code: 0</code></pre>
</div>
</div>
<div class="paragraph">
<p>Example of the metric registry output:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="text">control.sh --metric io.dataregion.default
Command [METRIC] started
Arguments: --metric sys
--------------------------------------------------------------------------------
metric value
io.dataregion.default.TotalAllocatedSize 0
io.dataregion.default.LargeEntriesPagesCount 0
io.dataregion.default.PagesReplaced 0
io.dataregion.default.PhysicalMemorySize 0
io.dataregion.default.CheckpointBufferSize 0
io.dataregion.default.PagesReplaceRate 0
io.dataregion.default.InitialSize 268435456
io.dataregion.default.PagesRead 0
io.dataregion.default.AllocationRate 0
io.dataregion.default.OffHeapSize 0
io.dataregion.default.UsedCheckpointBufferSize 0
io.dataregion.default.MaxSize 6871947673
io.dataregion.default.OffheapUsedSize 0
io.dataregion.default.EmptyDataPages 0
io.dataregion.default.PagesFillFactor 0.0
io.dataregion.default.DirtyPages 0
io.dataregion.default.TotalThrottlingTime 0
io.dataregion.default.EvictionRate 0
io.dataregion.default.PagesWritten 0
io.dataregion.default.TotalAllocatedPages 0
io.dataregion.default.PagesReplaceAge 0
io.dataregion.default.PhysicalMemoryPages 0
Command [METRIC] finished with code: 0</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="indexes-management">Indexes Management</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The commands below allow to get a specific information on indexes and to trigger the indexes rebuild process.</p>
</div>
<div class="paragraph">
<p>To get the list of all indexes that match specified filters, use the command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--cache</span> indexes_list <span class="o">[</span><span class="nt">--node-id</span> nodeId] <span class="o">[</span><span class="nt">--group-name</span> grpRegExp] <span class="o">[</span><span class="nt">--cache-name</span> cacheRegExp] <span class="o">[</span><span class="nt">--index-name</span> idxNameRegExp]</code></pre>
</div>
</div></code-tab><code-tab data-tab='Window'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--cache</span> indexes_list <span class="o">[</span><span class="nt">--node-id</span> nodeId] <span class="o">[</span><span class="nt">--group-name</span> grpRegExp] <span class="o">[</span><span class="nt">--cache-name</span> cacheRegExp] <span class="o">[</span><span class="nt">--index-name</span> idxNameRegExp]</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Parameters:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--node-id nodeId</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Node ID for the job execution. If the ID is not specified, a node is chosen by the grid.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--group-name regExp</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Regular expression enabling filtering by cache group name.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--cache-name regExp</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Regular expression enabling filtering by cache name.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--index-name regExp</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Regular expression enabling filtering by index name.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>To get the list of all caches that have index rebuild in progress, use the command below:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--cache</span> indexes_rebuild_status <span class="o">[</span><span class="nt">--node-id</span> nodeId]</code></pre>
</div>
</div></code-tab><code-tab data-tab='Window'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--cache</span> indexes_rebuild_status <span class="o">[</span><span class="nt">--node-id</span> nodeId]</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>To trigger the rebuild process of all indexes for the specified caches or the cache groups, use the command:</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--cache</span> indexes_force_rebuild <span class="nt">--node-id</span> nodeId <span class="nt">--cache-name</span> cacheName1,...cacheNameN|--group-name groupName1,...groupNameN</code></pre>
</div>
</div></code-tab><code-tab data-tab='Window'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--cache</span> indexes_force_rebuild <span class="nt">--node-id</span> nodeId <span class="nt">--cache-name</span> cacheName1,...cacheNameN|--group-name groupName1,...groupNameN</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Parameters:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--node-id</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Node ID for the indexes rebuild.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--cache-names</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Comma-separated list of cache names for which indexes should be rebuilt.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--group-names</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Comma-separated list of cache group names for which indexes should be rebuilt.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="system-view-command">System View Command</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The system view command prints out the content of a system view provided in the parameters list. Use the <code>--node-id</code> parameter, if you need to get a metric from a specific node. Ignite selects a random node, if the <code>--node-id</code> is not set.</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--system-view</span> views</code></pre>
</div>
</div></code-tab><code-tab data-tab='Windows'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--system-view</span> views</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Examples of the output:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="text">control.sh --system-view nodes
Command [SYSTEM-VIEW] started
Arguments: --system-view nodes
--------------------------------------------------------------------------------
nodeId consistentId version isClient isDaemon nodeOrder addresses hostnames isLocal
a8a28869-cac6-4b17-946a-6f7f547b9f62 0:0:0:0:0:0:0:1%lo0,127.0.0.1,192.168.31.45:47500 2.10.0#20201230-sha1:00000000 false false 1 [0:0:0:0:0:0:0:1%lo0, 127.0.0.1, 192.168.31.45] [192.168.31.45] true
d580433d-c621-45ff-a558-b4df82d09613 0:0:0:0:0:0:0:1%lo0,127.0.0.1,192.168.31.45:47501 2.10.0#20201230-sha1:00000000 false false 2 [0:0:0:0:0:0:0:1%lo0, 127.0.0.1, 192.168.31.45] [192.168.31.45] false
Command [SYSTEM-VIEW] finished with code: 0</code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="text">control.sh --system-view views
Command [SYSTEM-VIEW] started
Arguments: --system-view views
--------------------------------------------------------------------------------
name schema description
NODES SYS Cluster nodes
SQL_QUERIES_HISTORY SYS SQL queries history.
INDEXES SYS SQL indexes
BASELINE_NODES SYS Baseline topology nodes
STRIPED_THREADPOOL_QUEUE SYS Striped thread pool task queue
LOCAL_CACHE_GROUPS_IO SYS Local node IO statistics for cache groups
SCAN_QUERIES SYS Scan queries
CLIENT_CONNECTIONS SYS Client connections
PARTITION_STATES SYS Distribution of cache group partitions across cluster nodes
VIEW_COLUMNS SYS SQL view columns
SQL_QUERIES SYS Running SQL queries.
CACHE_GROUP_PAGE_LISTS SYS Cache group page lists
METRICS SYS Ignite metrics
CONTINUOUS_QUERIES SYS Continuous queries
TABLE_COLUMNS SYS SQL table columns
TABLES SYS SQL tables
DISTRIBUTED_METASTORAGE SYS Distributed metastorage data
SERVICES SYS Services
DATASTREAM_THREADPOOL_QUEUE SYS Datastream thread pool task queue
NODE_METRICS SYS Node metrics
BINARY_METADATA SYS Binary metadata
JOBS SYS Running compute jobs, part of compute task started on remote host.
SCHEMAS SYS SQL schemas
CACHE_GROUPS SYS Cache groups
VIEWS SYS SQL views
DATA_REGION_PAGE_LISTS SYS Data region page lists
NODE_ATTRIBUTES SYS Node attributes
TRANSACTIONS SYS Running transactions
CACHES SYS Caches
TASKS SYS Running compute tasks
Command [SYSTEM-VIEW] finished with code: 0</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="performance-statistics">Performance Statistics</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Ignite provides a built-in tool for cluster profiling. Read <a href="/docs/latest/monitoring-metrics/performance-statistics">Performance Statistics</a> for more information.</p>
</div>
<code-tabs><code-tab data-tab='Unix'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.sh <span class="nt">--performance-statistics</span> <span class="o">[</span>start|stop|rotate|status]</code></pre>
</div>
</div></code-tab><code-tab data-tab='Window'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">control.bat <span class="nt">--performance-statistics</span> <span class="o">[</span>start|stop|rotate|status]</code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Parameters:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>start</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Start collecting performance statistics in the cluster.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>stop</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Stop collecting performance statistics in the cluster.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>rotate</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Rotate collecting performance statistics in the cluster.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>status</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Get status of collecting performance statistics in the cluster.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="copyright">
© 2021 The Apache Software Foundation.<br/>
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.
</div>
</article>
<nav class="right-nav" data-swiftype-index='false'>
<div class="toc-wrapper">
<ul class="sectlevel1">
<li><a href="#connecting-to-cluster">Connecting to Cluster</a></li>
<li><a href="#activation-deactivation-and-topology-management">Activation, Deactivation and Topology Management</a>
<ul class="sectlevel2">
<li><a href="#getting-cluster-state">Getting Cluster State</a></li>
<li><a href="#activating-cluster">Activating Cluster</a></li>
<li><a href="#deactivating-cluster">Deactivating Cluster</a></li>
<li><a href="#getting-nodes-registered-in-baseline-topology">Getting Nodes Registered in Baseline Topology</a></li>
<li><a href="#adding-nodes-to-baseline-topology">Adding Nodes to Baseline Topology</a></li>
<li><a href="#removing-nodes-from-baseline-topology">Removing Nodes from Baseline Topology</a></li>
<li><a href="#setting-baseline-topology">Setting Baseline Topology</a></li>
<li><a href="#enabling-baseline-topology-autoadjustment">Enabling Baseline Topology Autoadjustment</a></li>
</ul>
</li>
<li><a href="#transaction-management">Transaction Management</a></li>
<li><a href="#contention-detection-in-transactions">Contention Detection in Transactions</a></li>
<li><a href="#monitoring-cache-state">Monitoring Cache State</a></li>
<li><a href="#resetting-lost-partitions">Resetting Lost Partitions</a></li>
<li><a href="#consistency-check-commands">Consistency Check Commands</a>
<ul class="sectlevel2">
<li><a href="#verifying-partition-checksums">Verifying Partition Checksums</a></li>
<li><a href="#validating-sql-index-consistency">Validating SQL Index Consistency</a></li>
<li><a href="#checking-snapshot-consistency">Checking Snapshot Consistency</a></li>
<li><a href="#check-sql-index-inline-size">Check SQL Index Inline Size</a></li>
</ul>
</li>
<li><a href="#tracing-configuration">Tracing Configuration</a></li>
<li><a href="#cluster-id-and-tag">Cluster ID and Tag</a></li>
<li><a href="#metric-command">Metric Command</a></li>
<li><a href="#indexes-management">Indexes Management</a></li>
<li><a href="#system-view-command">System View Command</a></li>
<li><a href="#performance-statistics">Performance Statistics</a></li>
</ul>
</div>
<nav class="promo-nav">
<!--#include virtual="/includes/docs_rightnav_promotion.html" -->
<a href="#" data-trigger-bugyard-feedback="true" id="doc-feedback-btn">Docs Feedback</a>
</nav>
</nav>
</section>
<script type='module' src='/assets/js/code-copy-to-clipboard.js' async crossorigin></script>
<script>
// inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late
anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5');
anchors.options = {
placement: 'right',
visible: 'always'
};
</script>
<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
<script>
docsearch({
// Your apiKey and indexName will be given to you once
// we create your config
apiKey: '3eee686c0ebe39eff3baeb18c56fa5f8',
indexName: 'apache_ignite',
// Replace inputSelector with a CSS selector
// matching your search input
inputSelector: '#search-input',
// algoliaOptions: { 'facetFilters': ["version:$VERSION"] },
// Set debug to true to inspect the dropdown
debug: false,
});
</script>
<script type='module' src='/assets/js/index.js?1634150562' async crossorigin></script>
<script type='module' src='/assets/js/versioning.js?1634150562' async crossorigin></script>
<link rel="stylesheet" href="/assets/css/styles.css?1634150562" media="print" onload="this.media='all'">
<noscript><link media="all" rel="stylesheet" href="/assets/css/styles.css?1634150562"></noscript>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" media="print" onload="this.media='all'">
<noscript><link media="all" rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css"></noscript>
</body>
</html>