| |
| <!doctype html> |
| <html lang="en" class="no-js"> |
| <head> |
| |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| |
| <meta name="description" content="Java Driver for Apache Cassandra® Documentation"> |
| |
| |
| |
| <link rel="canonical" href="https://apache.github.io/cassandra-java-driver/developer/request_execution/"> |
| |
| |
| <link rel="prev" href="../netty_pipeline/"> |
| |
| |
| <link rel="next" href="../admin/"> |
| |
| |
| <link rel="icon" href="../../assets/images/favicon.png"> |
| <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.17"> |
| |
| |
| |
| <title>Request Execution - Java Driver for Apache Cassandra</title> |
| |
| |
| |
| <link rel="stylesheet" href="../../assets/stylesheets/main.7e37652d.min.css"> |
| |
| |
| <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> |
| <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> |
| |
| |
| |
| <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> |
| |
| |
| |
| |
| |
| |
| </head> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="blue"> |
| |
| |
| <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> |
| <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> |
| <label class="md-overlay" for="__drawer"></label> |
| <div data-md-component="skip"> |
| |
| |
| <a href="#request-execution" class="md-skip"> |
| Skip to content |
| </a> |
| |
| </div> |
| <div data-md-component="announce"> |
| |
| </div> |
| |
| |
| |
| |
| <header class="md-header" data-md-component="header"> |
| <nav class="md-header__inner md-grid" aria-label="Header"> |
| <a href="../.." title="Java Driver for Apache Cassandra" class="md-header__button md-logo" aria-label="Java Driver for Apache Cassandra" data-md-component="logo"> |
| |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> |
| |
| </a> |
| <label class="md-header__button md-icon" for="__drawer"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> |
| </label> |
| <div class="md-header__title" data-md-component="header-title"> |
| <div class="md-header__ellipsis"> |
| <div class="md-header__topic"> |
| <span class="md-ellipsis"> |
| Java Driver for Apache Cassandra |
| </span> |
| </div> |
| <div class="md-header__topic" data-md-component="header-topic"> |
| <span class="md-ellipsis"> |
| |
| Request Execution |
| |
| </span> |
| </div> |
| </div> |
| </div> |
| |
| |
| <form class="md-header__option" data-md-component="palette"> |
| |
| |
| |
| |
| <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="blue" aria-hidden="true" type="radio" name="__palette" id="__palette_0"> |
| |
| |
| </form> |
| |
| |
| |
| <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> |
| |
| |
| |
| |
| |
| <label class="md-header__button md-icon" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> |
| </label> |
| <div class="md-search" data-md-component="search" role="dialog"> |
| <label class="md-search__overlay" for="__search"></label> |
| <div class="md-search__inner" role="search"> |
| <form class="md-search__form" name="search"> |
| <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> |
| <label class="md-search__icon md-icon" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> |
| </label> |
| <nav class="md-search__options" aria-label="Search"> |
| |
| <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg> |
| </a> |
| |
| <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> |
| </button> |
| </nav> |
| |
| </form> |
| <div class="md-search__output"> |
| <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix> |
| <div class="md-search-result" data-md-component="search-result"> |
| <div class="md-search-result__meta"> |
| Initializing search |
| </div> |
| <ol class="md-search-result__list" role="presentation"></ol> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-header__source"> |
| <a href="https://github.com/apache/cassandra-java-driver" title="Go to repository" class="md-source" data-md-component="source"> |
| <div class="md-source__icon md-icon"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg> |
| </div> |
| <div class="md-source__repository"> |
| apache/cassandra-java-driver |
| </div> |
| </a> |
| </div> |
| |
| </nav> |
| |
| </header> |
| |
| <div class="md-container" data-md-component="container"> |
| |
| |
| |
| |
| |
| <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> |
| <div class="md-grid"> |
| <ul class="md-tabs__list"> |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../HOME-README/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Home |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item md-tabs__item--active"> |
| <a href="../.." class="md-tabs__link"> |
| |
| |
| |
| Manual |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../api/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| API References |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../faq-README/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| FAQ |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../changelog-README/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Changelog |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../upgrade-README/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Upgrade Guide |
| |
| </a> |
| </li> |
| |
| |
| |
| </ul> |
| </div> |
| </nav> |
| |
| |
| |
| <main class="md-main" data-md-component="main"> |
| <div class="md-main__inner md-grid"> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| |
| |
| |
| |
| <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> |
| <label class="md-nav__title" for="__drawer"> |
| <a href="../.." title="Java Driver for Apache Cassandra" class="md-nav__button md-logo" aria-label="Java Driver for Apache Cassandra" data-md-component="logo"> |
| |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> |
| |
| </a> |
| Java Driver for Apache Cassandra |
| </label> |
| |
| <div class="md-nav__source"> |
| <a href="https://github.com/apache/cassandra-java-driver" title="Go to repository" class="md-source" data-md-component="source"> |
| <div class="md-source__icon md-icon"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg> |
| </div> |
| <div class="md-source__repository"> |
| apache/cassandra-java-driver |
| </div> |
| </a> |
| </div> |
| |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../HOME-README/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Home |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked> |
| |
| |
| <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Manual |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true"> |
| <label class="md-nav__title" for="__nav_2"> |
| <span class="md-nav__icon md-icon"></span> |
| Manual |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../.." class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../api_conventions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| API Conventions |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../case_sensitivity/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Case Sensitivity |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../cloud/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Cloud |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5" id="__nav_2_5_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Core |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_5_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5"> |
| <span class="md-nav__icon md-icon"></span> |
| Core |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/integration/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Integration |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/configuration/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Configuration |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/authentication/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Authentication |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/ssl/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| SSL |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/load_balancing/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Load Balancing |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/pooling/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Pooling |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/reconnection/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Reconnection |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/retries/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Retries |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/speculative_execution/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Speculative Execution |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/metrics/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Metrics |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/logging/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Logging |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_13" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_13" id="__nav_2_5_13_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Statements |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_13_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_13"> |
| <span class="md-nav__icon md-icon"></span> |
| Statements |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/statements/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/statements/batch/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Batch |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/statements/per_query_keyspace/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Per Query Keyspace |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/statements/prepared/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Prepared |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/statements/simple/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Simple |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/paging/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Paging |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/async/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Async Programming |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/reactive/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Reactive Streams |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/custom_codecs/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Custom Codecs |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/temporal_types/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Temporal Types |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/tuples/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Tuples |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/udts/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| UDTs |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/compression/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Compression |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/address_resolution/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Address Resolution |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/request_tracker/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Request Tracker |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/throttling/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Throttling |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/tracing/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Tracing |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/performance/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Performance |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_27" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_27" id="__nav_2_5_27_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Metadata |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_27_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_27"> |
| <span class="md-nav__icon md-icon"></span> |
| Metadata |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/metadata/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/metadata/node/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Node |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/metadata/schema/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Schema |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/metadata/token/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Token |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/control_connection/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Control Connection |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/native_protocol/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Native Protocol |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/non_blocking/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Non-blocking |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/query_timestamps/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Query Timestamps |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/idempotence/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Idempotence |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/detachable_types/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Detachable Types |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_34" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_34" id="__nav_2_5_34_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| DSE |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_34_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_34"> |
| <span class="md-nav__icon md-icon"></span> |
| DSE |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/dse/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/dse/geotypes/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Geotypes |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_34_3" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_34_3" id="__nav_2_5_34_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Graph |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_5_34_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_34_3"> |
| <span class="md-nav__icon md-icon"></span> |
| Graph |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/dse/graph/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_34_3_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_34_3_2" id="__nav_2_5_34_3_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Fluent |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="5" aria-labelledby="__nav_2_5_34_3_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_34_3_2"> |
| <span class="md-nav__icon md-icon"></span> |
| Fluent |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/dse/graph/fluent/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/dse/graph/fluent/explicit/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Explicit |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/dse/graph/fluent/implicit/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Implicit |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/dse/graph/options/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Options |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/dse/graph/results/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Results |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/dse/graph/script/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Script |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/graalvm/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| GraalVM |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/shaded_jar/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Shaded JAR |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../core/bom/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| BOM |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Query Builder |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_6"> |
| <span class="md-nav__icon md-icon"></span> |
| Query Builder |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/select/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Select |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/insert/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Insert |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/update/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Update |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/delete/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Delete |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6_6" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_6_6" id="__nav_2_6_6_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Schema |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_6_6_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_6_6"> |
| <span class="md-nav__icon md-icon"></span> |
| Schema |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/aggregate/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Aggregate |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/function/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Function |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/index/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Index |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/keyspace/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Keyspace |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/materialized_view/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Materialized View |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/table/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Table |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/type/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Type |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/truncate/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Truncate |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/condition/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Condition |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/relation/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Relation |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/term/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Term |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/idempotence/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Idempotence |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_7" id="__nav_2_7_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Mapper |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_7"> |
| <span class="md-nav__icon md-icon"></span> |
| Mapper |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/entities/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Entities |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7_3" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_7_3" id="__nav_2_7_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| DAOs |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_7_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_7_3"> |
| <span class="md-nav__icon md-icon"></span> |
| DAOs |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/custom_types/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Custom Types |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/delete/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Delete |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/getentity/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Get Entity |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/increment/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Increment |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/insert/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Insert |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/null_saving/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Null Saving |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/query/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Query |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/queryprovider/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Query Provider |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/select/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Select |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/setentity/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Set Entity |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/statement_attributes/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Statement Attributes |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/update/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Update |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/mapper/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Mapper |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7_5" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_7_5" id="__nav_2_7_5_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Configuration |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_7_5_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_7_5"> |
| <span class="md-nav__icon md-icon"></span> |
| Configuration |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/kotlin/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Kotlin |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/lombok/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Lombok |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/record/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Record |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/scala/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Scala |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" checked> |
| |
| |
| <label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Developer |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="true"> |
| <label class="md-nav__title" for="__nav_2_8"> |
| <span class="md-nav__icon md-icon"></span> |
| Developer |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_8_2" id="__nav_2_8_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Common |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_8_2"> |
| <span class="md-nav__icon md-icon"></span> |
| Common |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../common/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../common/concurrency/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Concurrency |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../common/context/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Context |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../common/event_bus/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Event Bus |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../native_protocol/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Native Protocol |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../netty_pipeline/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Netty Pipeline |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active"> |
| |
| <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> |
| |
| |
| |
| <label class="md-nav__link md-nav__link--active" for="__toc"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Request Execution |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <a href="./" class="md-nav__link md-nav__link--active"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Request Execution |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#request-execution" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Request execution |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Request execution"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#connection-pooling" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Connection pooling |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Connection pooling"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#fixed-size" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Fixed size |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#no-queuing" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| No queuing |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#built-in-reconnection" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Built-in reconnection |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#request-processors" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Request processors |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#extension-points" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Extension points |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Extension points"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#requestprocessorregistry" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| RequestProcessorRegistry |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#exposing-a-custom-session-interface" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Exposing a custom session interface |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../admin/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Admin |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../osgi/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| OSGi |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../api/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| API References |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../faq-README/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| FAQ |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../changelog-README/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Changelog |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../upgrade-README/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Upgrade Guide |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| </ul> |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#request-execution" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Request execution |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Request execution"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#connection-pooling" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Connection pooling |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Connection pooling"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#fixed-size" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Fixed size |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#no-queuing" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| No queuing |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#built-in-reconnection" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Built-in reconnection |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#request-processors" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Request processors |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#extension-points" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Extension points |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Extension points"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#requestprocessorregistry" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| RequestProcessorRegistry |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#exposing-a-custom-session-interface" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Exposing a custom session interface |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-content" data-md-component="content"> |
| <article class="md-content__inner md-typeset"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <h1>Request Execution</h1> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <h2 id="request-execution">Request execution<a class="headerlink" href="#request-execution" title="Permanent link">¶</a></h2> |
| <p>The <a href="../netty_pipeline/">Netty pipeline</a> gives us the ability to send low-level protocol messages on |
| a single connection.</p> |
| <p>The request execution layer builds upon that to:</p> |
| <ul> |
| <li>manage multiple connections (many nodes, possibly many connections per node);</li> |
| <li>abstract the protocol layer behind higher-level, user-facing types.</li> |
| </ul> |
| <p>The session is the main entry point. <code>CqlSession</code> is the type that users will most likely reference |
| in their applications. It extends a more generic <code>Session</code> type, for the sake of extensibility; this |
| will be explained in <a href="#request-processors">Request processors</a>. </p> |
| <div class="highlight"><pre><span></span><code>+----------------------------------+ |
| | Session | |
| +----------------------------------+ |
| | ResultT execute( | |
| | RequestT, GenericType[ResultT])| |
| +----------------------------------+ |
| ^ |
| | |
| +----------------+-----------------+ |
| | CqlSession | |
| +----------------------------------+ |
| | ResultSet execute(Statement) | |
| +----------------+-----------------+ |
| ^ |
| | |
| +----------------+-----------------+ |
| | DefaultSession | |
| +----------------+-----------------+ |
| | |
| | |
| | 1 per node +-------------+ |
| +------------+ ChannelPool | |
| | +----+--------+ |
| | | |
| | | n +---------------+ |
| | +----+ DriverChannel | |
| | +---------------+ |
| | |
| | 1 +--------------------------+ |
| +------------+ RequestProcessorRegistry | |
| +----+---------------------+ |
| | |
| | n +---------------------------+ |
| +----+ RequestProcessor | |
| +---------------------------+ |
| | ResultT process(RequestT) | |
| +---------------------------+ |
| </code></pre></div> |
| <p><code>DefaultSession</code> contains the session implementation. It follows the <a href="../common/concurrency/#cold-path">confined inner |
| class</a> pattern to simplify concurrency.</p> |
| <h3 id="connection-pooling">Connection pooling<a class="headerlink" href="#connection-pooling" title="Permanent link">¶</a></h3> |
| <div class="highlight"><pre><span></span><code>+----------------------+ 1 +------------+ |
| | ChannelPool +---------+ ChannelSet | |
| +----------------------+ +-----+------+ |
| | DriverChannel next() | | |
| +----------+-----------+ n| |
| | +------+--------+ |
| 1| | DriverChannel | |
| +------+-------+ +---------------+ |
| | Reconnection | |
| +--------------+ |
| </code></pre></div> |
| <p><code>ChannelPool</code> handles the connections to a given node, for a given session. It follows the <a href="../common/concurrency/#cold-path">confined |
| inner class</a> pattern to simplify concurrency. There are a few |
| differences compared to the 3.x implementation:</p> |
| <h4 id="fixed-size">Fixed size<a class="headerlink" href="#fixed-size" title="Permanent link">¶</a></h4> |
| <p>The pool has a fixed number of connections, it doesn't grow or shrink dynamically based on current |
| usage. In other words, there is no more "max" size, only a "core" size.</p> |
| <p>However, this size is specified in the configuration. If the value is changed at runtime, the driver |
| will detect it, and trigger a resize of all active pools.</p> |
| <p>The rationale for removing the dynamic behavior is that it introduced a ton of complexity in the |
| implementation and configuration, for unclear benefits: if the load fluctuates very rapidly, then |
| you need to provision for the max size anyway, so you might as well run with all the connections all |
| the time. If on the other hand the fluctuations are rare and predictable (e.g. peak for holiday |
| sales), then a manual configuration change is good enough.</p> |
| <h4 id="no-queuing">No queuing<a class="headerlink" href="#no-queuing" title="Permanent link">¶</a></h4> |
| <p>To get a connection to a node, client code calls <code>ChannelPool.next()</code>. This returns the less busy |
| connection, based on the the <code>getAvailableIds()</code> counter exposed by |
| <a href="netty_pipeline/#in-flight-handler">InFlightHandler</a>.</p> |
| <p>If all connections are busy, there is no queuing; the driver moves to the next node immediately. The |
| rationale is that it's better to try another node that might be ready to reply, instead of |
| introducing an additional wait for each node. If the user wants queuing when all nodes are busy, |
| it's better to do it at the session level with a <a href="../../core/throttling/">throttler</a>, which provides |
| more intuitive configuration.</p> |
| <p>Before 4.5.0, there was also no preemptive acquisition of the stream id outside of the event loop: |
| <code>getAvailableIds()</code> had volatile semantics, and a client could get a pooled connection that seemed |
| not busy, but fail to acquire a stream id when it later tried the actual write. This turned out to |
| not work well under high load, see <a href="https://datastax-oss.atlassian.net/browse/JAVA-2644">JAVA-2644</a>.</p> |
| <p>Starting with 4.5.0, we've reintroduced a stronger guarantee (reminiscent of how things worked in |
| 3.x): clients <strong>must call <code>DriverChannel.preAcquireId()</code> exactly once before each write</strong>. If the |
| call succeeds, <code>getAvailableIds()</code> is incremented immediately, and the client is guaranteed that |
| there will be a stream id available for the write. <code>preAcquireId()</code> and <code>getAvailableIds()</code> have |
| atomic semantics, so we can distribute the load more accurately.</p> |
| <p>This comes at the cost of additional complexity: <strong>we must ensure that every write is pre-acquired |
| first</strong>, so that <code>getAvailableIds()</code> doesn't get out of sync with the actual stream id usage inside |
| <code>InFlightHandler</code>. This is explained in detail in the javadocs of <code>DriverChannel.preAcquireId()</code>, |
| read them carefully. </p> |
| <p>The pool manages its channels with <code>ChannelSet</code>, a simple copy-on-write data structure.</p> |
| <h4 id="built-in-reconnection">Built-in reconnection<a class="headerlink" href="#built-in-reconnection" title="Permanent link">¶</a></h4> |
| <p>The pool has its own independent reconnection mechanism (based on the <code>Reconnection</code> utility class). |
| The goal is to keep the pool at its expected capacity: whenever a connection is lost, the task |
| starts and will try to reopen the missing connections at regular intervals.</p> |
| <h3 id="request-processors">Request processors<a class="headerlink" href="#request-processors" title="Permanent link">¶</a></h3> |
| <div class="highlight"><pre><span></span><code>+----------------------------------+ |
| | Session | |
| +----------------------------------+ |
| | ResultT execute( | |
| | RequestT, GenericType[ResultT])| |
| +----------------------------------+ |
| ^ |
| | |
| +----------------+-----------------+ |
| | CqlSession | |
| +----------------------------------+ |
| | ResultSet execute(Statement) | |
| +----------------+-----------------+ |
| </code></pre></div> |
| <p>The driver can execute different types of requests, in different ways. This is abstracted by the |
| top-level <code>Session</code> interface, with a very generic execution method:</p> |
| <div class="highlight"><pre><span></span><code><span class="o"><</span><span class="n">RequestT</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Request</span><span class="p">,</span><span class="w"> </span><span class="n">ResultT</span><span class="o">></span><span class="w"> </span><span class="n">ResultT</span><span class="w"> </span><span class="nf">execute</span><span class="p">(</span> |
| <span class="w"> </span><span class="n">RequestT</span><span class="w"> </span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">GenericType</span><span class="o"><</span><span class="n">ResultT</span><span class="o">></span><span class="w"> </span><span class="n">resultType</span><span class="p">);</span> |
| </code></pre></div> |
| <p>It takes a request, and a type token that serves as a hint at the expected result. Each <code>(RequestT, |
| ResultT)</code> combination defines an execution model, for example:</p> |
| <table> |
| <thead> |
| <tr> |
| <th><code>RequestT</code></th> |
| <th><code>ResultT</code></th> |
| <th>Execution</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td><code>Statement</code></td> |
| <td><code>ResultSet</code></td> |
| <td>CQL, synchronous</td> |
| </tr> |
| <tr> |
| <td><code>Statement</code></td> |
| <td><code>CompletionStage<AsyncResultSet></code></td> |
| <td>CQL, asynchronous</td> |
| </tr> |
| <tr> |
| <td><code>Statement</code></td> |
| <td><code>ReactiveResultSet</code></td> |
| <td>CQL, reactive</td> |
| </tr> |
| <tr> |
| <td><code>GraphStatement</code></td> |
| <td><code>GraphResultSet</code></td> |
| <td>DSE Graph, synchronous</td> |
| </tr> |
| <tr> |
| <td><code>GraphStatement</code></td> |
| <td><code>CompletionStage<AsyncGraphResultSet></code></td> |
| <td>DSE Graph, asynchronous</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>In general, regular client code doesn't use <code>Session.execute</code> directly. Instead, child interfaces |
| expose more user-friendly shortcuts for a given result type:</p> |
| <div class="highlight"><pre><span></span><code><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">CqlSession</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Session</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">default</span><span class="w"> </span><span class="n">ResultSet</span><span class="w"> </span><span class="nf">execute</span><span class="p">(</span><span class="n">Statement</span><span class="o"><?></span><span class="w"> </span><span class="n">statement</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">execute</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span><span class="w"> </span><span class="n">Statement</span><span class="p">.</span><span class="na">SYNC</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="p">}</span> |
| </code></pre></div> |
| <p>The logic for each execution model is encapsulated in a <code>RequestProcessor<RequestT, ResultT></code>. |
| Processors are stored in a <code>RequestProcessorRegistry</code>. For each request, the session invokes the |
| registry to find the processor that matches the request and result types. </p> |
| <div class="highlight"><pre><span></span><code>+----------------+ 1+-----------------------------------+ |
| | DefaultSession +---+ RequestProcessorRegistry | |
| +----------------+ +-----------------------------------+ |
| | processorFor( | |
| | RequestT, GenericType[ResultT]) | |
| +-----------------+-----------------+ |
| | |
| |n |
| +----------------------+----------------------+ |
| | RequestProcessor[RequestT, ResultT] | |
| +---------------------------------------------+ |
| | boolean canProcess(Request, GenericType[?]) | |
| | ResultT process(RequestT) | |
| +---------------------------------------------+ |
| ^ |
| | +--------------------------+ |
| +---------+ CqlRequestSyncProcessor | |
| | +--------------------------+ |
| | |
| | +--------------------------+ |
| +---------+ CqlRequestAsyncProcessor | |
| | +--------------------------+ |
| | |
| | +--------------------------+ |
| +---------+ CqlPrepareSyncProcessor | |
| | +--------------------------+ |
| | |
| | +--------------------------+ |
| +---------+ CqlPrepareAsyncProcessor | |
| +--------------------------+ |
| </code></pre></div> |
| <p>A processor is responsible for:</p> |
| <ul> |
| <li>converting the user request into <a href="../native_protocol/">protocol-level messages</a>;</li> |
| <li>selecting a coordinator node, and obtaining a channel from its connection pool;</li> |
| <li>writing the request to the channel;</li> |
| <li>handling timeouts, retries and speculative executions;</li> |
| <li>translating the response into user-level types.</li> |
| </ul> |
| <p>The <code>RequestProcessor</code> interface makes very few assumptions about the actual processing; but in |
| general, implementations create a handler for the lifecycle of every request. For example, |
| <code>CqlRequestHandler</code> is the central component for basic CQL execution.</p> |
| <p>Processors can be implemented in terms of other processors. In particular, this is the case for |
| synchronous execution models, which are just a blocking wrapper around their asynchronous |
| counterpart. You can observe this in <code>CqlRequestSyncProcessor</code>.</p> |
| <p>Note that preparing a statement is treated as just another execution model. It has its own |
| processors, that operate on a special <code>PrepareRequest</code> type:</p> |
| <div class="highlight"><pre><span></span><code><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">CqlSession</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Session</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">default</span><span class="w"> </span><span class="n">PreparedStatement</span><span class="w"> </span><span class="nf">prepare</span><span class="p">(</span><span class="n">SimpleStatement</span><span class="w"> </span><span class="n">statement</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">execute</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">DefaultPrepareRequest</span><span class="p">(</span><span class="n">statement</span><span class="p">),</span><span class="w"> </span><span class="n">PrepareRequest</span><span class="p">.</span><span class="na">SYNC</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="p">}</span> |
| </code></pre></div> |
| <h3 id="extension-points">Extension points<a class="headerlink" href="#extension-points" title="Permanent link">¶</a></h3> |
| <h4 id="requestprocessorregistry">RequestProcessorRegistry<a class="headerlink" href="#requestprocessorregistry" title="Permanent link">¶</a></h4> |
| <p>You can customize the set of request processors by <a href="../common/context/#overriding-a-context-component">extending the |
| context</a> and overriding |
| <code>buildRequestProcessorRegistry</code>.</p> |
| <p>This can be used to either:</p> |
| <ul> |
| <li>add your own execution models (new request types and/or return types);</li> |
| <li>remove existing ones;</li> |
| <li>or a combination of both.</li> |
| </ul> |
| <p>The driver codebase contains an integration test that provides a complete example: |
| <a href="https://github.com/datastax/java-driver/blob/4.x/integration-tests/src/test/java/com/datastax/oss/driver/core/session/RequestProcessorIT.java">RequestProcessorIT</a>. It shows how you can build a session that returns Guava's <code>ListenableFuture</code> |
| instead of Java's <code>CompletionStage</code> (existing request type, different return type).</p> |
| <p><a href="https://github.com/datastax/java-driver/blob/4.x/integration-tests/src/test/java/com/datastax/oss/driver/example/guava/internal/GuavaDriverContext.java">GuavaDriverContext</a> is the custom context subclass. It plugs a custom registry that wraps the |
| default async processors with <a href="https://github.com/datastax/java-driver/blob/4.x/integration-tests/src/test/java/com/datastax/oss/driver/example/guava/internal/GuavaRequestAsyncProcessor.java">GuavaRequestAsyncProcessor</a>, to transform the returned futures.</p> |
| <p>Note that the default async processors are not present in the registry anymore; if you try to call |
| a method that returns a <code>CompletionStage</code>, it fails. See the next section for how to hide those |
| methods. </p> |
| <h4 id="exposing-a-custom-session-interface">Exposing a custom session interface<a class="headerlink" href="#exposing-a-custom-session-interface" title="Permanent link">¶</a></h4> |
| <p>If you add or remove execution models, you probably want to expose a session interface that matches |
| the underlying capabilities of the implementation.</p> |
| <p>For example, in the <a href="https://github.com/datastax/java-driver/blob/4.x/integration-tests/src/test/java/com/datastax/oss/driver/core/session/RequestProcessorIT.java">RequestProcessorIT</a> example mentioned in the previous section, we remove the |
| ability to return <code>CompletionStage</code>, but add the ability to return <code>ListenableFuture</code>. Therefore we |
| expose a custom <a href="https://github.com/datastax/java-driver/blob/4.x/integration-tests/src/test/java/com/datastax/oss/driver/example/guava/api/GuavaSession.java">GuavaSession</a> with a different return type for async methods:</p> |
| <div class="highlight"><pre><span></span><code><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">GuavaSession</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Session</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">default</span><span class="w"> </span><span class="n">ListenableFuture</span><span class="o"><</span><span class="n">AsyncResultSet</span><span class="o">></span><span class="w"> </span><span class="nf">executeAsync</span><span class="p">(</span><span class="n">Statement</span><span class="o"><?></span><span class="w"> </span><span class="n">statement</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span> |
| <span class="w"> </span><span class="k">default</span><span class="w"> </span><span class="n">ListenableFuture</span><span class="o"><</span><span class="n">PreparedStatement</span><span class="o">></span><span class="w"> </span><span class="nf">prepareAsync</span><span class="p">(</span><span class="n">SimpleStatement</span><span class="w"> </span><span class="n">statement</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span> |
| <span class="p">}</span> |
| </code></pre></div> |
| <p>We need an implementation of this interface. Our new methods all have default implementations in |
| term of the abstract <code>Session.execute()</code>, so the only thing we need is to delegate to an existing |
| <code>Session</code>. The driver provides <code>SessionWrapper</code> to that effect. See <a href="https://github.com/datastax/java-driver/blob/4.x/integration-tests/src/test/java/com/datastax/oss/driver/example/guava/internal/DefaultGuavaSession.java">DefaultGuavaSession</a>:</p> |
| <div class="highlight"><pre><span></span><code><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">DefaultGuavaSession</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">SessionWrapper</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">GuavaSession</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">DefaultGuavaSession</span><span class="p">(</span><span class="n">Session</span><span class="w"> </span><span class="n">delegate</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="kd">super</span><span class="p">(</span><span class="n">delegate</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="p">}</span> |
| </code></pre></div> |
| <p>Finally, we want to create an instance of this wrapper. Since we extended the context (see previous |
| section), we already wrote a custom builder subclass; there is another protected method we can |
| override to plug our wrapper. See <a href="https://github.com/datastax/java-driver/blob/4.x/integration-tests/src/test/java/com/datastax/oss/driver/example/guava/api/GuavaSessionBuilder.java">GuavaSessionBuilder</a>:</p> |
| <div class="highlight"><pre><span></span><code><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">GuavaSessionBuilder</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">SessionBuilder</span><span class="o"><</span><span class="n">GuavaSessionBuilder</span><span class="p">,</span><span class="w"> </span><span class="n">GuavaSession</span><span class="o">></span><span class="w"> </span><span class="p">{</span> |
| |
| <span class="w"> </span><span class="nd">@Override</span> |
| <span class="w"> </span><span class="kd">protected</span><span class="w"> </span><span class="n">DriverContext</span><span class="w"> </span><span class="nf">buildContext</span><span class="p">(</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span> |
| |
| <span class="w"> </span><span class="nd">@Override</span> |
| <span class="w"> </span><span class="kd">protected</span><span class="w"> </span><span class="n">GuavaSession</span><span class="w"> </span><span class="nf">wrap</span><span class="p">(</span><span class="n">CqlSession</span><span class="w"> </span><span class="n">defaultSession</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">DefaultGuavaSession</span><span class="p">(</span><span class="n">defaultSession</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| </code></pre></div> |
| <p>Client code can now use the familiar pattern to create a session: </p> |
| <div class="highlight"><pre><span></span><code><span class="n">GuavaSession</span><span class="w"> </span><span class="n">session</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">GuavaSessionBuilder</span><span class="p">()</span> |
| <span class="w"> </span><span class="p">.</span><span class="na">addContactEndPoints</span><span class="p">(...)</span> |
| <span class="w"> </span><span class="p">.</span><span class="na">withKeyspace</span><span class="p">(</span><span class="s">"test"</span><span class="p">)</span> |
| <span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span> |
| </code></pre></div> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </article> |
| </div> |
| |
| |
| <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> |
| </div> |
| |
| <button type="button" class="md-top md-icon" data-md-component="top" hidden> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> |
| Back to top |
| </button> |
| |
| </main> |
| |
| <footer class="md-footer"> |
| |
| <div class="md-footer-meta md-typeset"> |
| <div class="md-footer-meta__inner md-grid"> |
| <div class="md-copyright"> |
| |
| |
| Made with |
| <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> |
| Material for MkDocs |
| </a> |
| |
| </div> |
| |
| </div> |
| </div> |
| </footer> |
| |
| </div> |
| <div class="md-dialog" data-md-component="dialog"> |
| <div class="md-dialog__inner md-typeset"></div> |
| </div> |
| |
| |
| |
| |
| <script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "search.highlight", "search.share"], "search": "../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> |
| |
| |
| <script src="../../assets/javascripts/bundle.92b07e13.min.js"></script> |
| |
| |
| </body> |
| </html> |