<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 --> <p>Troubleshooting involves systematically diagnosing and resolving issues that prevent Geode from operating correctly. This comprehensive guide covers common problems, diagnostic techniques, resolution procedures, and preventive measures to maintain optimal database health and minimize downtime.</p> <h3 id="troubleshooting-methodology" class="position-relative d-flex align-items-center group"> <span>Troubleshooting Methodology</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="troubleshooting-methodology" aria-haspopup="dialog" aria-label="Share link: Troubleshooting Methodology"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Effective troubleshooting follows a systematic approach rather than random trial and error. This methodology ensures efficient problem resolution while building understanding of system behavior.</p> <h4 id="diagnostic-process" class="position-relative d-flex align-items-center group"> <span>Diagnostic Process</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="diagnostic-process" aria-haspopup="dialog" aria-label="Share link: Diagnostic Process"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>The standard diagnostic process proceeds through defined steps:</p> <ol> <li><strong>Identify Symptoms</strong> - Document observable behavior and error messages</li> <li><strong>Gather Information</strong> - Collect logs, metrics, and system state</li> <li><strong>Isolate Variables</strong> - Determine what changed before the issue appeared</li> <li><strong>Form Hypothesis</strong> - Develop theories about root causes</li> <li><strong>Test Hypothesis</strong> - Validate theories through targeted investigation</li> <li><strong>Apply Solution</strong> - Implement fixes based on confirmed diagnosis</li> <li><strong>Verify Resolution</strong> - Confirm the issue is resolved</li> <li><strong>Document Findings</strong> - Record the issue and solution for future reference</li> </ol> <h4 id="information-gathering" class="position-relative d-flex align-items-center group"> <span>Information Gathering</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="information-gathering" aria-haspopup="dialog" aria-label="Share link: Information Gathering"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Comprehensive information gathering provides the foundation for accurate diagnosis:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># System information</span> </span></span><span class="line"><span class="cl">uname -a </span></span><span class="line"><span class="cl">cat /etc/os-release </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Geode process status</span> </span></span><span class="line"><span class="cl">ps aux <span class="p">|</span> grep geode </span></span><span class="line"><span class="cl">systemctl status geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Resource usage</span> </span></span><span class="line"><span class="cl">free -h </span></span><span class="line"><span class="cl">df -h </span></span><span class="line"><span class="cl">top -bn1 <span class="p">|</span> head -20 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Network status</span> </span></span><span class="line"><span class="cl">netstat -tulpn <span class="p">|</span> grep <span class="m">3141</span> </span></span><span class="line"><span class="cl">ss -uln <span class="p">|</span> grep <span class="m">3141</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Recent logs</span> </span></span><span class="line"><span class="cl">journalctl -u geode -n <span class="m">100</span> --no-pager </span></span><span class="line"><span class="cl">tail -100 /var/log/geode/geode.log </span></span></code></pre></div> <h3 id="connection-issues" class="position-relative d-flex align-items-center group"> <span>Connection Issues</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="connection-issues" aria-haspopup="dialog" aria-label="Share link: Connection Issues"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Connection problems prevent clients from communicating with Geode.</p> <h4 id="cannot-connect-to-server" class="position-relative d-flex align-items-center group"> <span>Cannot Connect to Server</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="cannot-connect-to-server" aria-haspopup="dialog" aria-label="Share link: Cannot Connect to Server"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Client applications receive connection refused or timeout errors.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Verify server is running</span> </span></span><span class="line"><span class="cl">systemctl status geode </span></span><span class="line"><span class="cl">ps aux <span class="p">|</span> grep geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Check if server is listening</span> </span></span><span class="line"><span class="cl">netstat -tulpn <span class="p">|</span> grep <span class="m">3141</span> </span></span><span class="line"><span class="cl">ss -uln <span class="nv">sport</span> <span class="o">=</span> :3141 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Test local connectivity</span> </span></span><span class="line"><span class="cl">geode shell </span></span></code></pre></div><p><strong>Common Causes and Solutions:</strong></p> <p><strong>Server Not Running:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check why server stopped</span> </span></span><span class="line"><span class="cl">journalctl -u geode -n <span class="m">50</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Start server</span> </span></span><span class="line"><span class="cl">systemctl start geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Enable automatic startup</span> </span></span><span class="line"><span class="cl">systemctl <span class="nb">enable</span> geode </span></span></code></pre></div><p><strong>Firewall Blocking Connections:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check firewall status</span> </span></span><span class="line"><span class="cl">sudo ufw status </span></span><span class="line"><span class="cl">sudo firewall-cmd --list-all </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Allow Geode port (UFW)</span> </span></span><span class="line"><span class="cl">sudo ufw allow 3141/udp </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Allow Geode port (firewalld)</span> </span></span><span class="line"><span class="cl">sudo firewall-cmd --permanent --add-port<span class="o">=</span>3141/udp </span></span><span class="line"><span class="cl">sudo firewall-cmd --reload </span></span></code></pre></div><p><strong>Wrong Listen Address:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check configured listen address</span> </span></span><span class="line"><span class="cl">journalctl -u geode <span class="p">|</span> grep <span class="s2">&#34;Listening on&#34;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Reconfigure to listen on all interfaces</span> </span></span><span class="line"><span class="cl"><span class="c1"># Edit /etc/systemd/system/geode.service</span> </span></span><span class="line"><span class="cl"><span class="c1"># Change: --listen 127.0.0.1:3141</span> </span></span><span class="line"><span class="cl"><span class="c1"># To: --listen 0.0.0.0:3141</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl">sudo systemctl daemon-reload </span></span><span class="line"><span class="cl">sudo systemctl restart geode </span></span></code></pre></div> <h4 id="tlscertificate-errors" class="position-relative d-flex align-items-center group"> <span>TLS/Certificate Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="tlscertificate-errors" aria-haspopup="dialog" aria-label="Share link: TLS/Certificate Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> &ldquo;TLS handshake failed&rdquo; or &ldquo;Certificate verification failed&rdquo; errors.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Verify certificate exists and is readable</span> </span></span><span class="line"><span class="cl">ls -l /etc/geode/cert.pem /etc/geode/key.pem </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Check certificate validity</span> </span></span><span class="line"><span class="cl">openssl x509 -in /etc/geode/cert.pem -text -noout </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Verify certificate not expired</span> </span></span><span class="line"><span class="cl">openssl x509 -in /etc/geode/cert.pem -noout -dates </span></span></code></pre></div><p><strong>Solutions:</strong></p> <p><strong>Expired Certificate:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Generate new self-signed certificate</span> </span></span><span class="line"><span class="cl">openssl req -x509 -newkey rsa:4096 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -keyout /etc/geode/key.pem <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -out /etc/geode/cert.pem <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -days <span class="m">365</span> -nodes <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -subj <span class="s2">&#34;/CN=geode.example.com&#34;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Restart server</span> </span></span><span class="line"><span class="cl">systemctl restart geode </span></span></code></pre></div><p><strong>Permission Issues:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Fix certificate permissions</span> </span></span><span class="line"><span class="cl">sudo chown geode:geode /etc/geode/*.pem </span></span><span class="line"><span class="cl">sudo chmod <span class="m">600</span> /etc/geode/key.pem </span></span><span class="line"><span class="cl">sudo chmod <span class="m">644</span> /etc/geode/cert.pem </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl">sudo systemctl restart geode </span></span></code></pre></div> <h4 id="connection-pool-exhaustion" class="position-relative d-flex align-items-center group"> <span>Connection Pool Exhaustion</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="connection-pool-exhaustion" aria-haspopup="dialog" aria-label="Share link: Connection Pool Exhaustion"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> &ldquo;Maximum connections reached&rdquo; or &ldquo;Connection pool timeout&rdquo; errors.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check active connections</span> </span></span><span class="line"><span class="cl">netstat -an <span class="p">|</span> grep <span class="m">3141</span> <span class="p">|</span> wc -l </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Monitor connection count over time</span> </span></span><span class="line"><span class="cl">watch -n <span class="m">5</span> <span class="s1">&#39;netstat -an | grep 3141 | wc -l&#39;</span> </span></span></code></pre></div><p><strong>Solutions:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Increase max connections</span> </span></span><span class="line"><span class="cl"><span class="c1"># Edit /etc/systemd/system/geode.service</span> </span></span><span class="line"><span class="cl"><span class="c1"># Add: --max-connections 2000</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl">sudo systemctl daemon-reload </span></span><span class="line"><span class="cl">sudo systemctl restart geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Or adjust client pool size</span> </span></span><span class="line"><span class="cl"><span class="c1"># In application code, reduce pool size</span> </span></span></code></pre></div> <h3 id="performance-issues" class="position-relative d-flex align-items-center group"> <span>Performance Issues</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="performance-issues" aria-haspopup="dialog" aria-label="Share link: Performance Issues"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Performance problems manifest as slow queries or high resource usage.</p> <h4 id="slow-query-performance" class="position-relative d-flex align-items-center group"> <span>Slow Query Performance</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="slow-query-performance" aria-haspopup="dialog" aria-label="Share link: Slow Query Performance"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Queries take longer than expected to execute.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Profile</span><span class="w"> </span><span class="py">the</span><span class="w"> </span><span class="py">slow</span><span class="w"> </span><span class="kd">query</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">PROFILE</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">friend</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">city</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Boston</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">collect</span><span class="p">(</span><span class="py">friend</span><span class="err">.</span><span class="py">name</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Common Causes and Solutions:</strong></p> <p><strong>Missing Index:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Check</span><span class="w"> </span><span class="py">if</span><span class="w"> </span><span class="kd">query</span><span class="w"> </span><span class="nc">uses</span><span class="w"> </span><span class="py">indexes</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">EXPLAIN</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">user</span><span class="nd">@example</span><span class="err">.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">If</span><span class="w"> </span><span class="py">showing</span><span class="w"> </span><span class="py">full</span><span class="w"> </span><span class="py">table</span><span class="w"> </span><span class="py">scan</span><span class="p">,</span><span class="w"> </span><span class="py">create</span><span class="w"> </span><span class="py">index</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">Person</span><span class="p">(</span><span class="py">email</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Re</span><span class="err">-</span><span class="py">profile</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">verify</span><span class="w"> </span><span class="py">improvement</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">PROFILE</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">user</span><span class="nd">@example</span><span class="err">.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Inefficient Query Structure:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Inefficient</span><span class="p">:</span><span class="w"> </span><span class="nc">Filter</span><span class="w"> </span><span class="py">after</span><span class="w"> </span><span class="py">traversal</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">friend</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">friend</span><span class="err">.</span><span class="py">city</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Boston</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Efficient</span><span class="p">:</span><span class="w"> </span><span class="nc">Filter</span><span class="w"> </span><span class="py">during</span><span class="w"> </span><span class="py">pattern</span><span class="w"> </span><span class="py">match</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">friend</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">city</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Boston</span><span class="err">&#39;</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Unbounded Variable-Length Paths:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Problematic</span><span class="p">:</span><span class="w"> </span><span class="nc">Unbounded</span><span class="w"> </span><span class="py">traversal</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="err">*</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">b</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="err">*</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Better</span><span class="p">:</span><span class="w"> </span><span class="nc">Limited</span><span class="w"> </span><span class="py">depth</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="err">*</span><span class="py">1</span><span class="err">.</span><span class="mf">.3</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">b</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="err">*</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="high-memory-usage" class="position-relative d-flex align-items-center group"> <span>High Memory Usage</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="high-memory-usage" aria-haspopup="dialog" aria-label="Share link: High Memory Usage"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Geode process consuming excessive memory or out-of-memory errors.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check memory usage</span> </span></span><span class="line"><span class="cl">ps aux <span class="p">|</span> grep geode </span></span><span class="line"><span class="cl">top -p <span class="k">$(</span>pidof geode<span class="k">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Monitor memory over time</span> </span></span><span class="line"><span class="cl"><span class="k">while</span> true<span class="p">;</span> <span class="k">do</span> </span></span><span class="line"><span class="cl"> ps -p <span class="k">$(</span>pidof geode<span class="k">)</span> -o %mem,rss,vsz </span></span><span class="line"><span class="cl"> sleep <span class="m">5</span> </span></span><span class="line"><span class="cl"><span class="k">done</span> </span></span></code></pre></div><p><strong>Common Causes and Solutions:</strong></p> <p><strong>Large Result Sets:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Problematic</span><span class="p">:</span><span class="w"> </span><span class="nc">Returns</span><span class="w"> </span><span class="py">entire</span><span class="w"> </span><span class="py">dataset</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Better</span><span class="p">:</span><span class="w"> </span><span class="nc">Paginate</span><span class="w"> </span><span class="py">results</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="w"> </span><span class="py">LIMIT</span><span class="w"> </span><span class="py">1000</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Memory Leaks in Query Execution:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Restart server to reclaim memory (temporary)</span> </span></span><span class="line"><span class="cl">systemctl restart geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Monitor for recurring memory growth</span> </span></span><span class="line"><span class="cl"><span class="c1"># If memory grows continuously, report bug with reproduction case</span> </span></span></code></pre></div><p><strong>Insufficient System Memory:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check system memory</span> </span></span><span class="line"><span class="cl">free -h </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Increase swap space (temporary measure)</span> </span></span><span class="line"><span class="cl">sudo dd <span class="k">if</span><span class="o">=</span>/dev/zero <span class="nv">of</span><span class="o">=</span>/swapfile <span class="nv">bs</span><span class="o">=</span>1M <span class="nv">count</span><span class="o">=</span><span class="m">4096</span> </span></span><span class="line"><span class="cl">sudo mkswap /swapfile </span></span><span class="line"><span class="cl">sudo swapon /swapfile </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># For permanent solution, add more RAM</span> </span></span></code></pre></div> <h4 id="high-cpu-usage" class="position-relative d-flex align-items-center group"> <span>High CPU Usage</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="high-cpu-usage" aria-haspopup="dialog" aria-label="Share link: High CPU Usage"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Geode consuming excessive CPU cycles.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Identify CPU usage</span> </span></span><span class="line"><span class="cl">top -p <span class="k">$(</span>pidof geode<span class="k">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Profile CPU usage</span> </span></span><span class="line"><span class="cl">perf record -p <span class="k">$(</span>pidof geode<span class="k">)</span> -g -- sleep <span class="m">10</span> </span></span><span class="line"><span class="cl">perf report </span></span></code></pre></div><p><strong>Common Causes and Solutions:</strong></p> <p><strong>Expensive Queries:</strong></p> <p>Profile and optimize slow queries (see Slow Query Performance above).</p> <p><strong>High Query Volume:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Monitor query rate</span> </span></span><span class="line"><span class="cl"><span class="c1"># Review application logs for excessive query frequency</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Implement caching in application layer</span> </span></span><span class="line"><span class="cl"><span class="c1"># Add connection pooling to reduce connection overhead</span> </span></span></code></pre></div> <h3 id="data-integrity-issues" class="position-relative d-flex align-items-center group"> <span>Data Integrity Issues</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="data-integrity-issues" aria-haspopup="dialog" aria-label="Share link: Data Integrity Issues"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Data integrity problems involve incorrect or inconsistent data.</p> <h4 id="missing-data" class="position-relative d-flex align-items-center group"> <span>Missing Data</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="missing-data" aria-haspopup="dialog" aria-label="Share link: Missing Data"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Expected data not found in query results.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Verify</span><span class="w"> </span><span class="py">data</span><span class="w"> </span><span class="py">exists</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nc">12345</span><span class="p">})</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Check</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">soft</span><span class="w"> </span><span class="py">deletes</span><span class="w"> </span><span class="py">or</span><span class="w"> </span><span class="py">filters</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nc">12345</span><span class="p">,</span><span class="w"> </span><span class="py">deleted</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="p">})</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Search</span><span class="w"> </span><span class="py">more</span><span class="w"> </span><span class="py">broadly</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">id</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">12345</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="p">,</span><span class="w"> </span><span class="py">labels</span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Solutions:</strong></p> <p>If data is genuinely missing, restore from backup:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Stop server</span> </span></span><span class="line"><span class="cl">systemctl stop geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Restore from backup</span> </span></span><span class="line"><span class="cl">rsync -av /backup/geode-20260123/ /var/lib/geode/data/ </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Start server</span> </span></span><span class="line"><span class="cl">systemctl start geode </span></span></code></pre></div> <h4 id="duplicate-data" class="position-relative d-flex align-items-center group"> <span>Duplicate Data</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="duplicate-data" aria-haspopup="dialog" aria-label="Share link: Duplicate Data"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Multiple nodes or relationships when only one expected.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Find</span><span class="w"> </span><span class="py">duplicates</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">email</span><span class="p">,</span><span class="w"> </span><span class="py">collect</span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">nodes</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">size</span><span class="p">(</span><span class="py">nodes</span><span class="p">)</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">email</span><span class="p">,</span><span class="w"> </span><span class="py">size</span><span class="p">(</span><span class="py">nodes</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">count</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Solutions:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Remove</span><span class="w"> </span><span class="py">duplicates</span><span class="p">,</span><span class="w"> </span><span class="py">keeping</span><span class="w"> </span><span class="py">first</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">email</span><span class="p">,</span><span class="w"> </span><span class="py">collect</span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">nodes</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">size</span><span class="p">(</span><span class="py">nodes</span><span class="p">)</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">FOREACH</span><span class="w"> </span><span class="p">(</span><span class="py">node</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="py">tail</span><span class="p">(</span><span class="py">nodes</span><span class="p">)</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="py">DELETE</span><span class="w"> </span><span class="py">node</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Add</span><span class="w"> </span><span class="py">unique</span><span class="w"> </span><span class="py">constraint</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">prevent</span><span class="w"> </span><span class="py">future</span><span class="w"> </span><span class="py">duplicates</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">CONSTRAINT</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">Person</span><span class="p">(</span><span class="py">email</span><span class="p">)</span><span class="w"> </span><span class="py">ASSERT</span><span class="w"> </span><span class="py">email</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">UNIQUE</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="transaction-failures" class="position-relative d-flex align-items-center group"> <span>Transaction Failures</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="transaction-failures" aria-haspopup="dialog" aria-label="Share link: Transaction Failures"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> &ldquo;Transaction failed&rdquo; or &ldquo;Deadlock detected&rdquo; errors.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check logs for transaction errors</span> </span></span><span class="line"><span class="cl">journalctl -u geode <span class="p">|</span> grep -i transaction </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Look for deadlock messages</span> </span></span><span class="line"><span class="cl">journalctl -u geode <span class="p">|</span> grep -i deadlock </span></span></code></pre></div><p><strong>Solutions:</strong></p> <p><strong>Retry Failed Transactions:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Implement</span><span class="w"> </span><span class="py">retry</span><span class="w"> </span><span class="py">logic</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">application</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">BEGIN</span><span class="w"> </span><span class="py">TRANSACTION</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">operations</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">COMMIT</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">If</span><span class="w"> </span><span class="py">fails</span><span class="p">,</span><span class="w"> </span><span class="py">retry</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">exponential</span><span class="w"> </span><span class="py">backoff</span><span class="w"> </span></span></span></code></pre></div><p><strong>Reduce Transaction Scope:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Break</span><span class="w"> </span><span class="py">large</span><span class="w"> </span><span class="py">transactions</span><span class="w"> </span><span class="py">into</span><span class="w"> </span><span class="py">smaller</span><span class="w"> </span><span class="kd">on</span><span class="py">es</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Instead</span><span class="w"> </span><span class="py">of</span><span class="w"> </span><span class="py">updating</span><span class="w"> </span><span class="py">10</span><span class="p">,</span><span class="py">000</span><span class="w"> </span><span class="py">nodes</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="kd">on</span><span class="py">e</span><span class="w"> </span><span class="py">transaction</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">BEGIN</span><span class="w"> </span><span class="py">TRANSACTION</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">30</span><span class="w"> </span><span class="py">SET</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">category</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">adult</span><span class="err">&#39;;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">COMMIT</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Do</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">batches</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">30</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">n</span><span class="w"> </span><span class="py">LIMIT</span><span class="w"> </span><span class="py">1000</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">BEGIN</span><span class="w"> </span><span class="py">TRANSACTION</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SET</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">category</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">adult</span><span class="err">&#39;;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">COMMIT</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h3 id="build-and-installation-issues" class="position-relative d-flex align-items-center group"> <span>Build and Installation Issues</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="build-and-installation-issues" aria-haspopup="dialog" aria-label="Share link: Build and Installation Issues"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Problems during Geode installation or compilation.</p> <h4 id="build-failures" class="position-relative d-flex align-items-center group"> <span>Build Failures</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="build-failures" aria-haspopup="dialog" aria-label="Share link: Build Failures"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Compilation errors during build process.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check Zig version</span> </span></span><span class="line"><span class="cl">zig version </span></span><span class="line"><span class="cl"><span class="c1"># Should be 0.1.0 or later</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Clean and rebuild</span> </span></span><span class="line"><span class="cl">make clean </span></span><span class="line"><span class="cl">make build </span></span></code></pre></div><p><strong>Common Causes:</strong></p> <p><strong>Wrong Zig Version:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Install correct Zig version</span> </span></span><span class="line"><span class="cl">wget https://ziglang.org/download/0.1.0/zig-linux-x86_64-0.1.0.tar.xz </span></span><span class="line"><span class="cl">tar -xf zig-linux-x86_64-0.1.0.tar.xz </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">PATH</span><span class="o">=</span><span class="s2">&#34;</span><span class="k">$(</span><span class="nb">pwd</span><span class="k">)</span><span class="s2">/zig-linux-x86_64-0.1.0:</span><span class="nv">$PATH</span><span class="s2">&#34;</span> </span></span><span class="line"><span class="cl">zig version </span></span></code></pre></div><p><strong>Missing Dependencies:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Ubuntu/Debian</span> </span></span><span class="line"><span class="cl">sudo apt-get install build-essential </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># RHEL/CentOS</span> </span></span><span class="line"><span class="cl">sudo yum groupinstall <span class="s2">&#34;Development Tools&#34;</span> </span></span></code></pre></div> <h4 id="startup-failures" class="position-relative d-flex align-items-center group"> <span>Startup Failures</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="startup-failures" aria-haspopup="dialog" aria-label="Share link: Startup Failures"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Server fails to start or crashes immediately.</p> <p><strong>Diagnostic Steps:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check systemd status</span> </span></span><span class="line"><span class="cl">systemctl status geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># View detailed logs</span> </span></span><span class="line"><span class="cl">journalctl -u geode -n <span class="m">100</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Try manual startup for more verbose output</span> </span></span><span class="line"><span class="cl">/opt/geode/bin/geode serve --listen 0.0.0.0:3141 --log-level debug </span></span></code></pre></div><p><strong>Common Causes:</strong></p> <p><strong>Permission Issues:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Verify data directory permissions</span> </span></span><span class="line"><span class="cl">ls -ld /var/lib/geode/data </span></span><span class="line"><span class="cl">sudo chown -R geode:geode /var/lib/geode </span></span><span class="line"><span class="cl">sudo chmod <span class="m">750</span> /var/lib/geode/data </span></span></code></pre></div><p><strong>Port Already in Use:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check what&#39;s using port 3141</span> </span></span><span class="line"><span class="cl">sudo lsof -i :3141 </span></span><span class="line"><span class="cl">sudo netstat -tulpn <span class="p">|</span> grep <span class="m">3141</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Kill conflicting process or use different port</span> </span></span></code></pre></div><p><strong>Corrupted Data:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Restore from backup</span> </span></span><span class="line"><span class="cl">systemctl stop geode </span></span><span class="line"><span class="cl">mv /var/lib/geode/data /var/lib/geode/data.corrupted </span></span><span class="line"><span class="cl">rsync -av /backup/geode-latest/ /var/lib/geode/data/ </span></span><span class="line"><span class="cl">systemctl start geode </span></span></code></pre></div> <h3 id="client-specific-issues" class="position-relative d-flex align-items-center group"> <span>Client-Specific Issues</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="client-specific-issues" aria-haspopup="dialog" aria-label="Share link: Client-Specific Issues"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Problems specific to client library interactions.</p> <h4 id="go-client-errors" class="position-relative d-flex align-items-center group"> <span>Go Client Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="go-client-errors" aria-haspopup="dialog" aria-label="Share link: Go Client Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Errors in Go applications using Geode client.</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="c1">// Enable debug logging </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kn">import</span> <span class="s">&#34;log&#34;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nx">client</span><span class="p">.</span><span class="nf">SetLogLevel</span><span class="p">(</span><span class="s">&#34;debug&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1">// Check connection </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">err</span> <span class="o">:=</span> <span class="nx">client</span><span class="p">.</span><span class="nf">Ping</span><span class="p">(</span><span class="nx">ctx</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">log</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;Ping failed: %v&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="python-client-issues" class="position-relative d-flex align-items-center group"> <span>Python Client Issues</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="python-client-issues" aria-haspopup="dialog" aria-label="Share link: Python Client Issues"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Python async client errors.</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Enable debug logging</span> </span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">logging</span> </span></span><span class="line"><span class="cl"><span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Test connection</span> </span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s2">&#34;localhost&#34;</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">3141</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;RETURN 1 AS ok&#34;</span><span class="p">)</span> </span></span></code></pre></div> <h4 id="rust-client-problems" class="position-relative d-flex align-items-center group"> <span>Rust Client Problems</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="rust-client-problems" aria-haspopup="dialog" aria-label="Share link: Rust Client Problems"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptoms:</strong> Compilation or runtime errors in Rust client.</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-rust" data-lang="rust"><span class="line"><span class="cl"><span class="c1">// Enable tracing </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">use</span><span class="w"> </span><span class="n">tracing_subscriber</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">tracing_subscriber</span>::<span class="n">fmt</span>::<span class="n">init</span><span class="p">();</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Test connection </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">use</span><span class="w"> </span><span class="n">geode_client</span>::<span class="n">Client</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">let</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Client</span>::<span class="n">from_dsn</span><span class="p">(</span><span class="s">&#34;localhost:3141&#34;</span><span class="p">)</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="n">connect</span><span class="p">().</span><span class="k">await</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">let</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="n">query</span><span class="p">(</span><span class="s">&#34;RETURN 1 AS ok&#34;</span><span class="p">).</span><span class="k">await</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span></code></pre></div> <h3 id="logging-and-diagnostics" class="position-relative d-flex align-items-center group"> <span>Logging and Diagnostics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="logging-and-diagnostics" aria-haspopup="dialog" aria-label="Share link: Logging and Diagnostics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Effective use of logging aids troubleshooting.</p> <h4 id="enabling-debug-logging" class="position-relative d-flex align-items-center group"> <span>Enabling Debug Logging</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="enabling-debug-logging" aria-haspopup="dialog" aria-label="Share link: Enabling Debug Logging"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Temporary debug logging</span> </span></span><span class="line"><span class="cl">geode serve --log-level debug </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Permanent configuration</span> </span></span><span class="line"><span class="cl"><span class="c1"># Edit /etc/systemd/system/geode.service</span> </span></span><span class="line"><span class="cl"><span class="c1"># Change: --log-level info</span> </span></span><span class="line"><span class="cl"><span class="c1"># To: --log-level debug</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl">systemctl daemon-reload </span></span><span class="line"><span class="cl">systemctl restart geode </span></span></code></pre></div> <h4 id="log-analysis" class="position-relative d-flex align-items-center group"> <span>Log Analysis</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="log-analysis" aria-haspopup="dialog" aria-label="Share link: Log Analysis"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Search for errors</span> </span></span><span class="line"><span class="cl">journalctl -u geode <span class="p">|</span> grep -i error </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Follow live logs</span> </span></span><span class="line"><span class="cl">journalctl -u geode -f </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Filter by time range</span> </span></span><span class="line"><span class="cl">journalctl -u geode --since <span class="s2">&#34;1 hour ago&#34;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Export logs</span> </span></span><span class="line"><span class="cl">journalctl -u geode --since today &gt; geode-logs.txt </span></span></code></pre></div> <h4 id="common-error-messages" class="position-relative d-flex align-items-center group"> <span>Common Error Messages</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="common-error-messages" aria-haspopup="dialog" aria-label="Share link: Common Error Messages"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>&ldquo;Connection refused&rdquo;</strong>: Server not running or firewall blocking</p> <p><strong>&ldquo;TLS handshake failed&rdquo;</strong>: Certificate issues or version mismatch</p> <p><strong>&ldquo;Query timeout&rdquo;</strong>: Query taking too long, optimize or increase timeout</p> <p><strong>&ldquo;Out of memory&rdquo;</strong>: Insufficient system memory or memory leak</p> <p><strong>&ldquo;Permission denied&rdquo;</strong>: File permission issues or user privileges</p> <h3 id="prevention-strategies" class="position-relative d-flex align-items-center group"> <span>Prevention Strategies</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="prevention-strategies" aria-haspopup="dialog" aria-label="Share link: Prevention Strategies"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Proactive measures prevent many common issues.</p> <h4 id="regular-maintenance" class="position-relative d-flex align-items-center group"> <span>Regular Maintenance</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="regular-maintenance" aria-haspopup="dialog" aria-label="Share link: Regular Maintenance"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Schedule regular backups</span> </span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">2</span> * * * /opt/geode/backup.sh </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Monitor disk space</span> </span></span><span class="line"><span class="cl"><span class="m">0</span> */6 * * * /opt/geode/check-disk-space.sh </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Rotate logs</span> </span></span><span class="line"><span class="cl">/var/log/geode/*.log <span class="o">{</span> </span></span><span class="line"><span class="cl"> daily </span></span><span class="line"><span class="cl"> rotate <span class="m">7</span> </span></span><span class="line"><span class="cl"> compress </span></span><span class="line"><span class="cl"> delaycompress </span></span><span class="line"><span class="cl"> missingok </span></span><span class="line"><span class="cl"> notifempty </span></span><span class="line"><span class="cl"><span class="o">}</span> </span></span></code></pre></div> <h4 id="health-checks" class="position-relative d-flex align-items-center group"> <span>Health Checks</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="health-checks" aria-haspopup="dialog" aria-label="Share link: Health Checks"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash </span></span></span><span class="line"><span class="cl"><span class="cp"></span><span class="c1"># health-check.sh</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Check if server responds</span> </span></span><span class="line"><span class="cl"><span class="k">if</span> ! <span class="nb">echo</span> <span class="s2">&#34;PING&#34;</span> <span class="p">|</span> geode shell <span class="p">|</span> grep -q <span class="s2">&#34;PONG&#34;</span><span class="p">;</span> <span class="k">then</span> </span></span><span class="line"><span class="cl"> <span class="nb">echo</span> <span class="s2">&#34;Health check failed&#34;</span> </span></span><span class="line"><span class="cl"> systemctl restart geode </span></span><span class="line"><span class="cl"> <span class="c1"># Send alert</span> </span></span><span class="line"><span class="cl"><span class="k">fi</span> </span></span></code></pre></div> <h4 id="capacity-monitoring" class="position-relative d-flex align-items-center group"> <span>Capacity Monitoring</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="capacity-monitoring" aria-haspopup="dialog" aria-label="Share link: Capacity Monitoring"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Monitor key metrics</span> </span></span><span class="line"><span class="cl"><span class="c1">#!/bin/bash</span> </span></span><span class="line"><span class="cl"><span class="nv">CONNECTIONS</span><span class="o">=</span><span class="k">$(</span>netstat -an <span class="p">|</span> grep <span class="m">3141</span> <span class="p">|</span> wc -l<span class="k">)</span> </span></span><span class="line"><span class="cl"><span class="nv">MEMORY</span><span class="o">=</span><span class="k">$(</span>ps -p <span class="k">$(</span>pidof geode<span class="k">)</span> -o %mem --no-headers<span class="k">)</span> </span></span><span class="line"><span class="cl"><span class="nv">DISK</span><span class="o">=</span><span class="k">$(</span>df /var/lib/geode <span class="p">|</span> tail -1 <span class="p">|</span> awk <span class="s1">&#39;{print $5}&#39;</span> <span class="p">|</span> sed <span class="s1">&#39;s/%//&#39;</span><span class="k">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[</span> <span class="nv">$CONNECTIONS</span> -gt <span class="m">900</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> </span></span><span class="line"><span class="cl"> <span class="nb">echo</span> <span class="s2">&#34;Warning: Connection count high: </span><span class="nv">$CONNECTIONS</span><span class="s2">&#34;</span> </span></span><span class="line"><span class="cl"><span class="k">fi</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[</span> <span class="si">${</span><span class="nv">DISK</span><span class="p">%.*</span><span class="si">}</span> -gt <span class="m">80</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> </span></span><span class="line"><span class="cl"> <span class="nb">echo</span> <span class="s2">&#34;Warning: Disk usage high: </span><span class="nv">$DISK</span><span class="s2">%&#34;</span> </span></span><span class="line"><span class="cl"><span class="k">fi</span> </span></span></code></pre></div> <h3 id="getting-help" class="position-relative d-flex align-items-center group"> <span>Getting Help</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="getting-help" aria-haspopup="dialog" aria-label="Share link: Getting Help"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>When self-troubleshooting doesn&rsquo;t resolve issues.</p> <h4 id="information-to-provide" class="position-relative d-flex align-items-center group"> <span>Information to Provide</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="information-to-provide" aria-haspopup="dialog" aria-label="Share link: Information to Provide"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>When seeking help, provide:</p> <ul> <li>Geode version: <code>geode --version</code></li> <li>Operating system and version</li> <li>Complete error messages</li> <li>Steps to reproduce the issue</li> <li>Relevant log excerpts</li> <li>Configuration files (sanitized)</li> </ul> <h4 id="community-resources" class="position-relative d-flex align-items-center group"> <span>Community Resources</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="community-resources" aria-haspopup="dialog" aria-label="Share link: Community Resources"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ul> <li>Official documentation at geodedb.com</li> <li>Issue tracker for bug reports</li> <li>Community forums for questions</li> <li>Professional support options</li> </ul> <h3 id="related-topics" class="position-relative d-flex align-items-center group"> <span>Related Topics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="related-topics" aria-haspopup="dialog" aria-label="Share link: Related Topics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Troubleshooting connects to several areas:</p> <ul> <li><strong>Operations</strong> - Operational procedures and management</li> <li><strong>Monitoring</strong> - System observability and alerting</li> <li><strong>Performance Profiling</strong> - Analyzing query performance</li> <li><strong>Installation</strong> - Setup and deployment procedures</li> <li><strong>Support</strong> - Getting help and resources</li> </ul> <h3 id="resources" class="position-relative d-flex align-items-center group"> <span>Resources</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="resources" aria-haspopup="dialog" aria-label="Share link: Resources"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Additional troubleshooting resources:</p> <ul> <li>Geode error code reference documentation</li> <li>Common issues and solutions knowledge base</li> <li>Diagnostic script collection</li> <li>Log analysis tools and techniques</li> </ul> <p>Systematic troubleshooting resolves issues efficiently while building operational knowledge. Following these procedures minimizes downtime and maintains optimal Geode database health.</p>

Related Articles