blob: 5e9580b90789bbcd7b7a61390ec1796390b80544 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 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>
<meta charset="UTF-8">
<meta name="ignite-version" content="2.9.0" />
<title>Events | Ignite Documentation</title>
<link rel="canonical" href="/docs/latest/events/events" />
<link rel="stylesheet" href="/assets/css/styles.css?1600372552">
<link rel="stylesheet" href="/assets/css/asciidoc-pygments.css">
<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'>
<script type="text/javascript" src="/assets/js/anchor.min.js?1600372552"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
</head>
<body>
<header>
<div class="container">
<button type='button' class='menu' title='Docs menu'>
<img src="/assets/images/menu-icon.svg"/>
</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" >
</a>
</div>
<nav>
</nav>
<select id="version-selector">
<option value="2.9.0">2.9.0</option>
</select>
<a href="https://github.com/apache/ignite" title='GitHub' class='github' target="_blank">
<img src="/assets/images/github-gray.svg" alt="GitHub logo">
</a>
<form class='search'>
<button class="search-close" type='button'><img src='/assets/images/cancel.svg'></button>
<input type="search" placeholder="Search…" id="search-input">
</form>
<button type='button' class='search-toggle'><img src='/assets/images/search.svg'></button>
<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/preface" class='' >Preface</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Quick Start Guides<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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' data-guide-url="/installation" class='group-toggle collapsed '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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"></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>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Setting Up<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/setup"
class=''
>Setting Up Ignite for Java</a>
</li>
<li>
<a href="/docs/latest/setup-dotnet"
class=''
>Setting Up Ignite for .NET/C#</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/understanding-configuration" class='' >Understanding Configuration</a>
</li>
<li>
<a href="/docs/latest/logging" class='' >Configuring Logging</a>
</li>
<li>
<a href="/docs/latest/starting-nodes" class='' >Starting and Stopping Nodes</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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/running-client-nodes-behind-nat"
class=''
>Running Client Nodes Behind NAT</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Data Modeling<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Configuring Memory<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Configuring Caches<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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/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>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Persistence<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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/snapshots"
class=''
>Cluster Snapshots</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/baseline-topology" class='' >Baseline Topology</a>
</li>
<li>
<a href="/docs/latest/cluster-states" class='' >Cluster States</a>
</li>
<li>
<a href="/docs/latest/data-rebalancing" class='' >Data Rebalancing</a>
</li>
<li>
<a href="/docs/latest/partition-loss-policy" class='' >Partition Loss Policy</a>
</li>
<li>
<a href="/docs/latest/deploying-user-code" class='' >Deploying User Code</a>
</li>
<li>
<a href="/docs/latest/peer-class-loading" class='' >Peer Class Loading</a>
</li>
<li>
<a href="/docs/latest/data-streaming" class='' >Data Streaming</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Using Key-Value Cache API<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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/continuous-queries" class='' >Using Continuous Queries</a>
</li>
<li>
<a href="/docs/latest/key-value-api/transactions" class='' >Performing Transactions</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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>
<a href="/docs/latest/transactions/mvcc"
class=''
>Multiversion Concurrency Control</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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>
</nav>
</li>
<li>
<a href="/docs/latest/collocated-computations" class='' >Colocating Computations with Data</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Working with Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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>
<a href="/docs/latest/near-cache" class='' >Near Caches</a>
</li>
<li>
<a href="/docs/latest/platform-cache" class='' >.NET Platform Cache</a>
</li>
<li>
<a href="/docs/latest/services/services" class='' >Services</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Distributed Data Structures<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Machine Learning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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"></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"></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"></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"></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"></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"></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>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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>
<button
type='button'
class='collapsed '>Metrics<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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"></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/tracing"
class=''
>Tracing</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="/security" class='group-toggle collapsed '>Security<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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"></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>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Thin Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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"></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' data-guide-url="" class='group-toggle collapsed '>ODBC Driver<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group 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/restapi" class='' >REST API</a>
</li>
<li>
<a href="/docs/latest/control-script" class='' >Control Script</a>
</li>
<li>
<a href="/docs/latest/plugins" class='' >Plugins</a>
</li>
<li>
<a href="/docs/latest/sqlline" class='' >SQLLine</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Ignite for Spark<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/ignite-for-spark/overview"
class=''
>Overview</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/ignitecontext-and-rdd"
class=''
>IgniteContext and IgniteRDD</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/ignite-dataframe"
class=''
>Ignite DataFrame</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/installation"
class=''
>Installation</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/spark-shell"
class=''
>Test Ignite with Spark-shell</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/troubleshooting"
class=''
>Troubleshooting</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="/sql-reference/sql-reference-overview" class='group-toggle collapsed '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></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>
</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/events/events.adoc" target="_blank">Edit</a>
<h1>Events</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>This page describes different event types, when and where they are generated, and how you can use them.</p>
</div>
<div class="paragraph">
<p>You can always find the most complete and up to date list of events in the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/EventType.html" target="_blank" rel="noopener">EventType</a> javadoc.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="general-information">General Information</h2>
<div class="sectionbody">
<div class="paragraph">
<p>All events implement the <code>Event</code> interface.
You may want to cast each event to the specific class to get extended information about the action the event was triggered by.
For example, the 'cache update' action triggers an event that is an instance of the <code>CacheEvent</code> class, which contains the information about the data that was modified, the ID of the subject that triggered the event, etc.</p>
</div>
<div class="paragraph">
<p>All events contain information about the node where the event was generated.
For example, when you execute an <code>IgniteClosure</code> job, the <code>EVT_JOB_STARTED</code> and <code>EVT_JOB_FINISHED</code> events contain the information about the node where the closure was executed.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="java"><span class="nc">IgniteEvents</span> <span class="n">events</span> <span class="o">=</span> <span class="n">ignite</span><span class="o">.</span><span class="na">events</span><span class="o">();</span>
<span class="no">UUID</span> <span class="n">uuid</span> <span class="o">=</span> <span class="n">events</span><span class="o">.</span><span class="na">remoteListen</span><span class="o">(</span><span class="k">new</span> <span class="nc">IgniteBiPredicate</span><span class="o">&lt;</span><span class="no">UUID</span><span class="o">,</span> <span class="nc">JobEvent</span><span class="o">&gt;()</span> <span class="o">{</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">apply</span><span class="o">(</span><span class="no">UUID</span> <span class="n">uuid</span><span class="o">,</span> <span class="nc">JobEvent</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
<span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"nodeID = "</span> <span class="o">+</span> <span class="n">e</span><span class="o">.</span><span class="na">node</span><span class="o">().</span><span class="na">id</span><span class="o">()</span> <span class="o">+</span> <span class="s">", addresses="</span> <span class="o">+</span> <span class="n">e</span><span class="o">.</span><span class="na">node</span><span class="o">().</span><span class="na">addresses</span><span class="o">());</span>
<span class="k">return</span> <span class="kc">true</span><span class="o">;</span> <span class="c1">//continue listening</span>
<span class="o">}</span>
<span class="o">},</span> <span class="kc">null</span><span class="o">,</span> <span class="nc">EventType</span><span class="o">.</span><span class="na">EVT_JOB_FINISHED</span><span class="o">);</span></code></pre>
</div>
</div>
<div class="admonitionblock caution">
<table>
<tr>
<td class="icon">
<div class="title">Caution</div>
</td>
<td class="content">
<h3 id="event-ordering" class="discrete">Event Ordering</h3>
<div class="paragraph">
<p>The order of events in the event listener is not guaranteed to be the same as the order in which they were generated.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="sect2">
<h3 id="subjectid">SubjectID</h3>
<div class="paragraph">
<p>Some events contain the <code>subjectID</code> field, which represents the ID of the entity that initiated the action:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>When the action is initiated by a server or client node, the <code>subjectID</code> is the ID of that node.</p>
</li>
<li>
<p>When the action is done by a thin client, JDBC/ODBC/REST client, the <code>subjectID</code> is generated when the client connects to the cluster and remains the same as long as the client is connected to the cluster.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Check the specific event class to learn if the <code>subjectID</code> field is present.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="cluster-state-changed-events">Cluster State Changed Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Cluster state changed events are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/ClusterStateChangeEvent.html" target="_blank" rel="noopener">ClusterStateChangeEvent</a> class.</p>
</div>
<div class="paragraph">
<p>The cluster state changed events are generated when the cluster state changes, which happens either on auto-activation, or when a user changes the state manually.
The events contain the new and old states, and the list of baseline nodes after the change.</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CLUSTER_STATE_CHANGED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The cluster state changed.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All cluster nodes.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="cache-lifecycle-events">Cache Lifecycle Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Cache Lifecycle events are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/CacheEvent.html" target="_blank" rel="noopener">CacheEvent</a> class.
Each cache lifecycle event is associated with a specific cache and has a field that contains the name of the cache.</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_STARTED</p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>A cache is started on a specific node.
Each server node holds an internal instance of a cache.
This event is fired when the instance is created, which includes the following actions:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>A cluster with existing caches is activated. The event is generated for every cache on all server nodes where the cache is configured.</p>
</li>
<li>
<p>A server node joins the cluster with existing caches (the caches are started on that node).</p>
</li>
<li>
<p>When you create a new cache dynamically by calling <code>Ignite.getOrCreateCache(&#8230;&#8203;)</code> or similar methods. The event is fired on all nodes that host the cache.</p>
</li>
<li>
<p>When you obtain an instance of a cache on a client node.</p>
</li>
<li>
<p>When you create a cache via the <a href="/docs/latest/sql-reference/ddl#create-table">CREATE TABLE</a> command.</p>
</li>
</ul>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All nodes where the cache is started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_STOPPED</p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>This event happens when a cache is stopped, which includes the following actions:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The cluster is deactivated. All caches on all server nodes are stopped.</p>
</li>
<li>
<p><code>IgniteCache.close()</code> is called. The event is triggered on the node where the method is called.</p>
</li>
<li>
<p>A SQL table is dropped.</p>
</li>
<li>
<p>If you call <code>cache = Ignite.getOrCreateCache(&#8230;&#8203;)</code> and then call <code>Ignite.close()</code>, the <code>cache</code> is also closed on that node.</p>
</li>
</ul>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All nodes where the cache is stopped.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_NODES_LEFT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All nodes that host a specific cache have left the cluster. This can happen when a cache is deployed on a subset of server nodes or when all server nodes leave the cluster and only client nodes remain.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All remaining nodes.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="cache-events">Cache Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Cache events are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/CacheEvent.html">CacheEvent</a> class and
represent the operations on cache objects, such as 'get', 'put', 'remove', 'lock', etc.</p>
</div>
<div class="paragraph">
<p>Each event contains the information about the cache, the key that is accessed by the operation, the value before and after the operation (if applicable), etc.</p>
</div>
<div class="paragraph">
<p>Cache events are also generated when you use DML commands.</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_OBJECT_PUT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">An object is put to a cache. This event is fired for every invocation of <code>IgniteCache.put()</code>. The bulk operations, such as <code>putAll(&#8230;&#8203;)</code>, produce multiple events of this type.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The primary and backup nodes for the entry.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_OBJECT_READ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">An object is read from a cache.
This event is not emitted when you use <a href="/docs/latest/key-value-api/using-scan-queries">scan queries</a> (use <a href="#cache-query-events">Cache Query Events</a> to monitor scan queries).</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where read operation is executed.
It can be either the primary or backup node (the latter case is only possible when <a href="/docs/latest/configuring-caches/configuration-overview#readfrombackup">reading from backups is enabled</a>).
In transactional caches, the event can be generated on both the primary and backup nodes depending on the concurrency and isolation levels.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_OBJECT_REMOVED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">An object is removed from a cache.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The primary and backup nodes for the entry.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_OBJECT_LOCKED</p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>A lock is acquired on a specific key.
Locks can be acquired only on keys in transactional caches.
User actions that acquire a lock include the following cases:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The user explicitly acquires a lock by calling <code>IgniteCache.lock()</code> or <code>IgniteCache.lockAll()</code>.</p>
</li>
<li>
<p>A lock is acquired for every atomic (non-transactional) data modifying operation (put, update, remove).
In this case, the event is triggered on both primary and backup nodes for the key.</p>
</li>
<li>
<p>Locks are acquired on the keys accessed within a transaction (depending on the <a href="/docs/latest/key-value-api/transactions#concurrency-modes-and-isolation-levels">concurrency and isolation levels</a>).</p>
</li>
</ul>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The primary or/and backup nodes for the entry depending on the <a href="/docs/latest/key-value-api/transactions#concurrency-modes-and-isolation-levels">concurrency and isolation levels</a>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_OBJECT_UNLOCKED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A lock on a key is released.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The primary node for the entry.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_OBJECT_EXPIRED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The event is fired when a cache entry expires. This happens only if an <a href="/docs/latest/configuring-caches/expiry-policies">expiry policy</a> is configured.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The primary and backup nodes for the entry.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_ENTRY_CREATED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This event is triggered when Ignite creates an internal entry for working with a specific object from a cache. We don&#8217;t recommend using this event. If you want to monitor cache put operations, the <code>EVT_CACHE_OBJECT_PUT</code> event should be enough for most cases.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The primary and backup nodes for the entry.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_ENTRY_DESTROYED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This event is triggered when Ignite destroys an internal entry that was created for working with a specific object from a cache.
We don&#8217;t recommend using it.
Destroying the internal entry does not remove any data from the cache.
If you want to monitor cache remove operations, use the <code>EVT_CACHE_OBJECT_REMOVED</code> event.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The primary and backup nodes for the entry.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="cache-query-events">Cache Query Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>There are two types of events that are related to cache queries:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Cache query object read events, which are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/CacheQueryReadEvent.html" target="_blank" rel="noopener">CacheQueryReadEvent</a> class.</p>
</li>
<li>
<p>Cache query executed events, which are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/CacheQueryExecutedEvent.html" target="_blank" rel="noopener">CacheQueryExecutedEvent</a> class.</p>
</li>
</ul>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_QUERY_OBJECT_READ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">An object is read as part of a query execution. This event is generated for every object that matches the <a href="/docs/latest/key-value-api/using-scan-queries#executing-scan-queries">query filter</a>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The primary node of the object that is read.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_QUERY_EXECUTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This event is generated when a query is executed.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All server nodes that host the cache.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="class-and-task-deployment-events">Class and Task Deployment Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Deployment events are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/DeploymentEvent.html">DeploymentEvent</a> class.</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CLASS_DEPLOYED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A class (non-task) is deployed on a specific node.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the class is deployed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CLASS_UNDEPLOYED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A class is undeployed.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the class is undeployed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CLASS_DEPLOY_FAILED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Class deployment failed.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the class is to be deployed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TASK_DEPLOYED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A task class is deployed on a specific node.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the class is deployed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TASK_UNDEPLOYED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A task class is undeployed on a specific node.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the class is undeployed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TASK_DEPLOY_FAILED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Class deployment failed.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the class is to be deployed.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="discovery-events">Discovery Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Discovery events occur when nodes (both servers and clients) join or leave the cluster, including cases when nodes leave due to a failure.</p>
</div>
<div class="paragraph">
<p>Discovery events are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/DiscoveryEvent.html">DiscoveryEvent</a> class.</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_NODE_JOINED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A node joins the cluster.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All nodes in the cluster (other than the one that joined).</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_NODE_LEFT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A node leaves the cluster.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All remaining nodes in the cluster.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_NODE_FAILED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The cluster detects that a node left the cluster in a non-graceful way.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All remaining nodes in the cluster.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_NODE_SEGMENTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This happens on a node that decides that it was segmented.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node that is segmented.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CLIENT_NODE_DISCONNECTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A client node loses connection to the cluster.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The client node that disconnected from the cluster.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CLIENT_NODE_RECONNECTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A client node reconnects to the cluster.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The client node that reconnected to the cluster.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="task-execution-events">Task Execution Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Task execution events are associated with different stages of <a href="/docs/latest/distributed-computing/map-reduce">task execution</a>.
They are also generated when you execute <a href="/docs/latest/distributed-computing/distributed-computing">simple closures</a> because internally a closure is treated as a task that produces a single job.</p>
</div>
<div class="paragraph">
<p>Task Execution events are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/TaskEvent.html">TaskEvent</a> class.</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TASK_STARTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A task is started. <code>IgniteCompute.execute()</code> or other method is called</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node that initiates the task.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TASK_REDUCED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This event represents the 'reduce' stage of the task execution flow.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the task was started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TASK_FINISHED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The execution of the task finishes.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the task was started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TASK_FAILED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The task failed</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the task was started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TASK_TIMEDOUT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The execution of the task timed out. This can happen when <code>Ignite.compute().withTimeout(&#8230;&#8203;)</code> to execute tasks. When a task times out, it cancels all jobs that are being executed. It also generates the <code>EVT_TASK_FAILED</code> event.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the task was started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TASK_SESSION_ATTR_SET</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A job sets an attribute in the <a href="/docs/latest/distributed-computing/map-reduce#distributed-task-session">session</a>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the job is executed.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p><br></p>
</div>
<div class="paragraph">
<p>Job Execution events are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/JobEvent.html">JobEvent</a> class.
The job execution events are generated at different stages of job execution and are associated with particular instances of the job.
The event contains information about the task that produced the job (task name, task class, etc.).</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_MAPPED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A job is mapped to a specific node. Mapping happens on the node where the task is started. This event is generated for every job produced in the "map" stage.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node that started the task.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_QUEUED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The job is added to the queue on the node to which it was mapped.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the job is scheduled for execution.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_STARTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Execution of the job started.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the job is executed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_FINISHED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Execution of the job finished. This also includes cases when the job is cancelled.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the job is executed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_RESULTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The job returned a result to the node from which it was sent.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the task was started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_FAILED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Execution of a job fails. If the job failover strategy is configured (default), this event is accompanied by the <code>EVT_JOB_FAILED_OVER</code> event.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the job is executed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_FAILED_OVER</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The job was failed over to another node.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node that started the task.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_TIMEDOUT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The job timed out.</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_REJECTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The job is rejected. The job can be rejected if a <a href="/docs/latest/distributed-computing/job-scheduling">collision spi</a> is configured.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the job is rejected.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_JOB_CANCELLED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The job was cancelled.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the job is being executed.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="cache-rebalancing-events">Cache Rebalancing Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Cache Rebalancing events (all except for <code>EVT_CACHE_REBALANCE_OBJECT_LOADED</code> and <code>EVT_CACHE_REBALANCE_OBJECT_UNLOADED</code>) are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/CacheRebalancingEvent.html">CacheRebalancingEvent</a> class.</p>
</div>
<div class="paragraph">
<p>Rebalancing occurs on a per cache basis; therefore, each rebalancing event corresponds to a specific cache.
The event contains the name of the cache.</p>
</div>
<div class="paragraph">
<p>The process of moving a single cache partition from Node A to Node B consists of the following steps:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Node A supplies a partition (REBALANCE_PART_SUPPLIED). The objects from the partition start to move to node B.</p>
</li>
<li>
<p>Node B receives the partition data (REBALANCE_PART_LOADED).</p>
</li>
<li>
<p>Node A removes the partition from its storage (REBALANCE_PART_UNLOADED).</p>
</li>
</ol>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_REBALANCE_STARTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The rebalancing of a cache starts.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All nodes that host the cache.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_REBALANCE_STOPPED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The rebalancing of a cache stops.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All nodes that host the cache.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_REBALANCE_PART_LOADED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A cache&#8217;s partition is loaded on the new node. This event is fired for every partition that participates in the cache rebalancing.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the partition is loaded.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_REBALANCE_PART_UNLOADED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A cache&#8217;s partition is removed from the node after it has been loaded to its new destination.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the partition was held before the rebalancing process started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_REBALANCE_OBJECT_LOADED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">An object is moved to a new node as part of cache rebalancing.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the object is loaded.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_REBALANCE_OBJECT_UNLOADED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">An object is removed from a node after it has been moved to a new node.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node from which the object is removed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_REBALANCE_PART_DATA_LOST</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A partition that is to be rebalanced is lost, for example, due to a node failure.</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_CACHE_REBALANCE_PART_SUPPLIED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A node supplies a cache partition as part of the rebalancing process.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node that owns the partition.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="transaction-events">Transaction Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Transaction events are instances of the <a href="https://ignite.apache.org/releases/2.9.0/javadoc/org/apache/ignite/events/TransactionStateChangedEvent.html">TransactionStateChangedEvent</a> class.
They allow you to get notification about different stages of transaction execution. Each event contains the <code>Transaction</code> object this event is associated with.</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 50%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Event Type</th>
<th class="tableblock halign-left valign-top">Event Description</th>
<th class="tableblock halign-left valign-top">Where Event Is Fired</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TX_STARTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A transaction is started. Note that in transactional caches, each atomic operation executed outside a transaction is considered a transaction with a single operation.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the transaction was started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TX_COMMITTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A transaction is committed.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the transaction was started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TX_ROLLED_BACK</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A transaction is rolled back.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the transaction was executed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TX_SUSPENDED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A transaction is suspended.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the transaction was started.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">EVT_TX_RESUMED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A transaction is resumed.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The node where the transaction was started.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="copyright">
© 2020 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'>
<ul class="sectlevel1">
<li><a href="#general-information">General Information</a>
<ul class="sectlevel2">
<li><a href="#subjectid">SubjectID</a></li>
</ul>
</li>
<li><a href="#cluster-state-changed-events">Cluster State Changed Events</a></li>
<li><a href="#cache-lifecycle-events">Cache Lifecycle Events</a></li>
<li><a href="#cache-events">Cache Events</a></li>
<li><a href="#cache-query-events">Cache Query Events</a></li>
<li><a href="#class-and-task-deployment-events">Class and Task Deployment Events</a></li>
<li><a href="#discovery-events">Discovery Events</a></li>
<li><a href="#task-execution-events">Task Execution Events</a></li>
<li><a href="#cache-rebalancing-events">Cache Rebalancing Events</a></li>
<li><a href="#transaction-events">Transaction Events</a></li>
</ul>
<footer>
</footer>
</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>
<!-- load google fonts async -->
<script type="text/javascript">
WebFontConfig = {
google: { families: [ 'Open+Sans:300,400,600,700&display=swap' ] }
};
(function() {
var wf = document.createElement('script');
wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
wf.type = 'text/javascript';
wf.async = 'true';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(wf, s);
})(); </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?1600372552' async crossorigin></script>
<script type='module' src='/assets/js/versioning.js?1600372552' async crossorigin></script>
</body>
</html>