<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:39:40 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[GODRIVER-2933] Allow operation circuit-breaking in the Go driver</title>
                <link>https://jira.mongodb.org/browse/GODRIVER-2933</link>
                <project id="14289" key="GODRIVER">Go Driver</project>
                    <description>&lt;h2&gt;&lt;a name=&quot;Summary&quot;&gt;&lt;/a&gt;Summary&lt;/h2&gt;
&lt;p&gt;Some software and services provide a &quot;circuit-breaker&quot; mechanism, which can selectively disable remote system calls on-demand to prevent cascading failures when there is an outage in part of a distributed system.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;Background&quot;&gt;&lt;/a&gt;Background&lt;/h2&gt;
&lt;p&gt;Here are some quotes from helpful resources that explain the concept in more detail:&lt;/p&gt;

&lt;p&gt;From Martin Fowler&apos;s blog post on &lt;a href=&quot;https://martinfowler.com/bliki/CircuitBreaker.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;circuit breakers&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The basic idea behind the circuit breaker is very simple. You wrap a protected function call in a circuit breaker object, which monitors for failures. Once the failures reach a certain threshold, the circuit breaker trips, and all further calls to the circuit breaker return with an error, without the protected call being made at all. Usually you&apos;ll also want some kind of monitor alert if the circuit breaker trips.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;From NewRelic&apos;s blog post &lt;a href=&quot;https://newrelic.com/blog/best-practices/circuit-breaker-pattern&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;The Circuit Breaker Pattern Is A Great Tool (When Used Appropriately)&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Developers can use a circuit breaker to prevent a resource dependency (typically a downstream HTTP service or database) from becoming overloaded. The circuit trips open automatically based on configured settings, like elevated response time, timeouts, or other errors, and then automatically closes (again, based on configurations such as elapsed time or some other trigger), ideally after the dependency has recovered. In some cases, this circuit breaker pattern can help you reduce overall downtime if you allow the dependencies to recover on their own before you start hammering on them.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;From Netflix&apos;s circuit-breaker library &lt;a href=&quot;https://github.com/Netflix/Hystrix&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Hystrix&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h2&gt;&lt;a name=&quot;Definitionofdone&quot;&gt;&lt;/a&gt;Definition of done&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Research and document use cases for circuit-breakers in software and services that use MongoDB.
	&lt;ul&gt;
		&lt;li&gt;Answer open questions below.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Implement a proof-of-concept for a circuit breaker API in the Go driver.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Open questions:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Should we add a circuit-breaking feature to all MongoDB drivers?&lt;/li&gt;
	&lt;li&gt;MongoDB drivers (including the Go driver) already have features similar to a &quot;circuit breaker&quot;, like the pausable connection pool, that prevent sending operations to MongoDB nodes that are in specific degraded states. What are the use cases for adding externally controllable circuit-breaking logic?&lt;/li&gt;
	&lt;li&gt;Should the circuit breaker heuristics be built into drivers or controllable externally via arbitrary heuristics (e.g. a callback that controls the circuit breaker)?&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="2409564">GODRIVER-2933</key>
            <summary>Allow operation circuit-breaking in the Go driver</summary>
                <type id="2" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14711&amp;avatarType=issuetype">New Feature</type>
                                            <priority id="10300" iconUrl="https://jira.mongodb.org/images/icons/priorities/medium.svg">Unknown</priority>
                        <status id="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="matt.dale@mongodb.com">Matt Dale</reporter>
                        <labels>
                    </labels>
                <created>Fri, 4 Aug 2023 18:48:58 +0000</created>
                <updated>Fri, 4 Aug 2023 20:31:15 +0000</updated>
                                                                                                <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                    <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i231bs:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>