{"id":17505,"date":"2026-06-16T10:00:00","date_gmt":"2026-06-16T16:00:00","guid":{"rendered":"https:\/\/www.supportpro.com\/blog\/?p=17505"},"modified":"2026-06-11T00:37:13","modified_gmt":"2026-06-11T06:37:13","slug":"database-connection-pool-exhaustion-causes-fixes","status":"publish","type":"post","link":"https:\/\/www.supportpro.com\/blog\/database-connection-pool-exhaustion-causes-fixes\/","title":{"rendered":"Why Database Connection Pool Get Exhausted? | Causes, Troubleshooting, and Prevention Strategies"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Modern applications rely heavily on databases to process transactions, retrieve information, and deliver seamless user experiences. To improve performance and reduce overhead, most applications use <strong>database connection pools<\/strong> to efficiently manage database connections.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While connection pooling significantly improves application performance, organizations occasionally encounter a sudden and unexpected problem: <strong>database connection pool exhaustion<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When all available connections are occupied, new requests are forced to wait or fail entirely. This can result in slow response times, application errors, and even service outages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Understanding why connection pools become exhausted and how to prevent it is essential for maintaining scalable and high-performing applications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Is a Database Connection Pool?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A connection pool is a cache of reusable database connections maintained by an application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of creating a new database connection for every request\u2014which is both time-consuming and resource-intensive\u2014the application borrows an existing connection from the pool, performs the required operation, and then returns the connection for reuse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This approach offers several benefits:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Reduced connection overhead<\/li>\n\n\n\n<li>Faster response times<\/li>\n\n\n\n<li>Improved application scalability<\/li>\n\n\n\n<li>Efficient resource utilization<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">However, improper configuration or application behavior can quickly exhaust the available connections.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Key Connection Pool Configuration Parameters<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Connection pools provide several configurable settings that control performance and resource management.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">&#8211; Maximum Pool Size<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Defines the maximum number of database connections that can exist simultaneously within the pool.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">&#8211; Minimum Idle Connections<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Specifies the number of connections that remain open and available, even during periods of low activity.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">&#8211; Connection Timeout<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Determines how long a request waits for an available connection before timing out.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">&#8211; Idle Timeout<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Specifies how long unused connections remain open before being automatically closed.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">&#8211; Connection Validation<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Verifies that a connection is active and healthy before it is assigned to an application request.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Properly configuring these parameters plays a critical role in preventing connection pool exhaustion.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Happens When a Connection Pool Is Exhausted?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Connection pool exhaustion occurs when every available connection is actively in use and no additional connections are available to handle incoming requests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When this happens, applications may experience:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">-> Performance Degradation<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Requests remain queued while waiting for a free connection, resulting in slower response times.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">-> Timeouts<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Applications may exceed configured timeout limits while waiting for database access.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">-> Failed Transactions<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Database operations may fail entirely if connections cannot be acquired within the required timeframe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Without immediate intervention, pool exhaustion can impact application availability and user experience.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Common Causes of Database Connection Pool Exhaustion<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Sudden Traffic Spikes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Unexpected increases in application traffic can rapidly consume available database connections.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Examples include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Flash sales<\/li>\n\n\n\n<li>Marketing campaigns<\/li>\n\n\n\n<li>Viral content<\/li>\n\n\n\n<li>Seasonal traffic surges<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If the connection pool cannot scale quickly enough, requests begin waiting for available connections.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Connection Leaks<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A connection leak occurs when an application borrows a database connection but fails to return it to the pool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Over time, leaked connections permanently reduce the number of available connections.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common causes include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Missing resource cleanup code<\/li>\n\n\n\n<li>Improper exception handling<\/li>\n\n\n\n<li>Unclosed transactions<\/li>\n\n\n\n<li>Application logic errors<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Connection leaks are one of the most frequent causes of gradual pool exhaustion.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Long-Running Queries<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Slow database queries hold connections for extended periods, preventing other requests from accessing the pool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Typical causes include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Missing indexes<\/li>\n\n\n\n<li>Large table scans<\/li>\n\n\n\n<li>Complex joins<\/li>\n\n\n\n<li>Inefficient SQL statements<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The longer a query runs, the longer the associated connection remains unavailable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Poor Connection Pool Configuration<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Improper pool settings can create resource bottlenecks even under normal workloads.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Examples include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pool size configured too small<\/li>\n\n\n\n<li>Excessively long idle timeouts<\/li>\n\n\n\n<li>Insufficient idle connections<\/li>\n\n\n\n<li>Aggressive timeout settings<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Configuration should be aligned with actual application traffic and database capacity.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Transaction Mismanagement<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Database transactions hold connections until they are committed or rolled back.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Problems occur when:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Transactions remain open unnecessarily<\/li>\n\n\n\n<li>Commits are delayed<\/li>\n\n\n\n<li>Rollbacks are not executed properly<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Long-running transactions effectively lock connections and reduce pool availability.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6. Database or Network Latency<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Even well-managed connections can appear busy when database response times increase.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Potential causes include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Slow storage systems<\/li>\n\n\n\n<li>Network congestion<\/li>\n\n\n\n<li>Database resource limitations<\/li>\n\n\n\n<li>Replication delays<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Higher latency increases connection occupancy time, contributing to pool exhaustion.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to Diagnose Connection Pool Exhaustion<\/strong><\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">> Identify the Root Cause<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Begin by analyzing:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Query execution times<\/li>\n\n\n\n<li>Connection usage metrics<\/li>\n\n\n\n<li>Application logs<\/li>\n\n\n\n<li>Database performance statistics<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Determine whether the issue originates from traffic spikes, slow queries, connection leaks, or configuration limitations.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">> Analyze Connection Usage<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Review how connections are being allocated and released.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Java Applications<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>try-with-resources<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">to automatically release connections.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Python Applications<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>with connection.cursor():<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">to ensure proper cleanup after query execution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Proper resource management prevents connection leaks and improves pool efficiency.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">> Monitor Query Performance<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Review slow query logs and execution plans to identify database bottlenecks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Optimizing query performance reduces connection hold times and increases throughput.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to Fix Connection Pool Exhaustion<\/strong><\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">> Optimize Database Queries<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Focus on:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Adding indexes<\/li>\n\n\n\n<li>Simplifying joins<\/li>\n\n\n\n<li>Reducing full table scans<\/li>\n\n\n\n<li>Limiting unnecessary data retrieval<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Faster queries release connections more quickly.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">> Adjust Pool Configuration<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Depending on workload requirements, consider:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Increasing maximum pool size<\/li>\n\n\n\n<li>Configuring appropriate idle timeouts<\/li>\n\n\n\n<li>Enabling connection validation<\/li>\n\n\n\n<li>Fine-tuning connection timeout values<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Avoid increasing pool size without evaluating database capacity, as this may simply move the bottleneck elsewhere.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">> Scale Database Infrastructure<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">If the database itself is the limitation, consider:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Increasing CPU and memory resources<\/li>\n\n\n\n<li>Migrating to faster storage<\/li>\n\n\n\n<li>Using read replicas<\/li>\n\n\n\n<li>Implementing database clustering<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Infrastructure upgrades can significantly improve throughput and reduce connection wait times.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">> Implement Monitoring and Alerts<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Monitor key metrics such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Active connections<\/li>\n\n\n\n<li>Idle connections<\/li>\n\n\n\n<li>Waiting requests<\/li>\n\n\n\n<li>Query execution times<\/li>\n\n\n\n<li>Timeout events<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Configure alerts before exhaustion occurs so teams can respond proactively.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Recommended Connection Pool Tuning Parameters<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following values can serve as a starting point for many production workloads:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><div class=\"pcrstb-wrap\"><table class=\"has-fixed-layout\"><tbody><tr><th>Parameter<\/th><th>Recommended Value<\/th><\/tr><tr><td>maxPoolSize<\/td><td>50\u2013100 (depending on workload)<\/td><\/tr><tr><td>minimumIdle<\/td><td>10<\/td><\/tr><tr><td>connectionTimeout<\/td><td>3000 ms<\/td><\/tr><tr><td>idleTimeout<\/td><td>10 minutes<\/td><\/tr><tr><td>maxLifetime<\/td><td>30 minutes<\/td><\/tr><tr><td>leakDetectionThreshold<\/td><td>5 seconds<\/td><\/tr><tr><td>validationQuery<\/td><td>SELECT 1<\/td><\/tr><tr><td>cachePrepStmts<\/td><td>true<\/td><\/tr><\/tbody><\/table><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">These values should always be adjusted based on application behavior, traffic patterns, and database capacity.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Best Practices for Preventing Connection Pool Exhaustion<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To maintain optimal database performance:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">-> Always Release Connections<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Ensure connections are returned to the pool immediately after use.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">-> Optimize Queries Regularly<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Review slow queries and maintain proper indexing strategies.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">-> Keep Transactions Short<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Avoid leaving transactions open longer than necessary.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">-> Tune Pool Settings Based on Real Usage<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Use production monitoring data to adjust pool parameters.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">-> Monitor Continuously<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Track connection metrics and establish alerting thresholds.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">-> Scale Proactively<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Leverage read replicas, database clustering, and cloud auto-scaling when growth demands additional capacity.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Implement Retry Logic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use intelligent retry mechanisms and request queues to handle temporary traffic surges gracefully.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Database connection pool exhaustion is a common but preventable performance issue. Whether caused by connection leaks, slow queries, traffic spikes, transaction mismanagement, or poor configuration, exhausted connection pools can significantly impact application reliability.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By understanding connection pool behavior, monitoring usage patterns, optimizing database performance, and implementing proper pool tuning strategies, organizations can maintain stable, scalable, and high-performing applications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A proactive approach to connection pool management not only prevents outages but also improves overall application efficiency and user experience.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Experiencing database connection pool exhaustion or application performance issues?<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.supportpro.com\/\" title=\"\">SupportPro<\/a>&#8216;s database experts can help identify connection bottlenecks, optimize pool configurations, tune database performance, and implement proactive monitoring solutions. <a href=\"https:\/\/www.supportpro.com\/requestquote.php\" title=\"\">Contact us today<\/a> to keep your applications running smoothly and efficiently.<\/p>\n\n\n\n<div class=\"wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center has-white-background-color has-background\"><div class=\"wp-block-media-text__content\">\n<p class=\"has-large-font-size wp-block-paragraph\">Facing issues? <\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Our technical support<br>engineers can solve it. <\/p>\n\n\n\n<!--HubSpot Call-to-Action Code --><span class=\"hs-cta-wrapper\" id=\"hs-cta-wrapper-3350a795-db50-482f-9911-301930d1b1be\"><span class=\"hs-cta-node hs-cta-3350a795-db50-482f-9911-301930d1b1be\" id=\"hs-cta-3350a795-db50-482f-9911-301930d1b1be\"><!--[if lte IE 8]><div id=\"hs-cta-ie-element\"><\/div><![endif]--><a href=\"https:\/\/cta-redirect.hubspot.com\/cta\/redirect\/2725694\/3350a795-db50-482f-9911-301930d1b1be\" ><img decoding=\"async\" class=\"hs-cta-img\" id=\"hs-cta-img-3350a795-db50-482f-9911-301930d1b1be\" style=\"border-width:0px;\" src=\"https:\/\/no-cache.hubspot.com\/cta\/default\/2725694\/3350a795-db50-482f-9911-301930d1b1be.png\"  alt=\"Contact Us today!\"\/><\/a><\/span><script charset=\"utf-8\" src=\"https:\/\/js.hscta.net\/cta\/current.js\"><\/script><script type=\"text\/javascript\"> hbspt.cta.load(2725694, '3350a795-db50-482f-9911-301930d1b1be', {\"useNewLoader\":\"true\",\"region\":\"na1\"}); <\/script><\/span><!-- end HubSpot Call-to-Action Code -->\n<\/div><figure class=\"wp-block-media-text__media\"><img fetchpriority=\"high\" decoding=\"async\" width=\"904\" height=\"931\" src=\"https:\/\/www.supportpro.com\/blog\/wp-content\/uploads\/2022\/09\/Free-server-checkup.png\" alt=\"guy server checkup\" class=\"wp-image-12943 size-full\" srcset=\"https:\/\/www.supportpro.com\/blog\/wp-content\/uploads\/2022\/09\/Free-server-checkup.png 904w, https:\/\/www.supportpro.com\/blog\/wp-content\/uploads\/2022\/09\/Free-server-checkup-291x300.png 291w, https:\/\/www.supportpro.com\/blog\/wp-content\/uploads\/2022\/09\/Free-server-checkup-768x791.png 768w, https:\/\/www.supportpro.com\/blog\/wp-content\/uploads\/2022\/09\/Free-server-checkup-585x602.png 585w\" sizes=\"(max-width: 904px) 100vw, 904px\" \/><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Modern applications rely heavily on databases to process transactions, retrieve information, and deliver seamless user experiences. To improve performance and reduce overhead, most applications use database connection pools to efficiently&hellip;<\/p>\n","protected":false},"author":37,"featured_media":17506,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[378],"tags":[],"class_list":["post-17505","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/posts\/17505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/comments?post=17505"}],"version-history":[{"count":3,"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/posts\/17505\/revisions"}],"predecessor-version":[{"id":17511,"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/posts\/17505\/revisions\/17511"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/media\/17506"}],"wp:attachment":[{"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/media?parent=17505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/categories?post=17505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.supportpro.com\/blog\/wp-json\/wp\/v2\/tags?post=17505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}