<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:25:55 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>[DRIVERS-2581] Benchmark and use `mongocrypt_binary_t` definition to improve performance of In-Use Encryption</title>
                <link>https://jira.mongodb.org/browse/DRIVERS-2581</link>
                <project id="10980" key="DRIVERS">Drivers</project>
                    <description>&lt;div class=&quot;panel&quot; style=&quot;background-color: #fafbfc;border-width: 1px;&quot;&gt;&lt;div class=&quot;panelContent&quot; style=&quot;background-color: #fafbfc;&quot;&gt;
&lt;h3&gt;&lt;a name=&quot;Summary&quot;&gt;&lt;/a&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;/h3&gt;

&lt;p&gt;Reduce overhead of encryption callbacks by providing bulk-oriented encryption and decryption callbacks&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;HELP-27047 identified a slow workload with In-Use Encryption: decrypting documents with many encrypted fields. The &lt;a href=&quot;https://github.com/mongodb/libmongocrypt/blob/b81e66e0208d13e07c2e5e60b3170f0cfc61e1e2/src/mongocrypt.h#L1296-L1304&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;crypto callbacks in libmongocrypt&lt;/a&gt; were identified as a possible cause.&lt;/p&gt;

&lt;p&gt;Driver bindings optionally set crypto callbacks to provide the crypto functions (HMAC, AES, SHA). Setting the callback enables using libmongocrypt without taking a dependency on OpenSSL or a system native crypto library. On &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1NKtmYEr_Zrf_eDATpfCBfWyLH8GC1vj075aSCLqrca0/edit#gid=0&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;last survey&lt;/a&gt;, Java, Python, C#, Ruby, Node, and Rust implement the crypto callbacks.&lt;/p&gt;

&lt;p&gt;The crypto callbacks showed in profiling HELP-27047. &lt;a href=&quot;https://jira.mongodb.org/browse/MONGOCRYPT-589&quot; title=&quot;Export mongocrypt_binary_t&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MONGOCRYPT-589&quot;&gt;&lt;del&gt;MONGOCRYPT-589&lt;/del&gt;&lt;/a&gt; exports the fields of &lt;tt&gt;mongocrypt_binary_t&lt;/tt&gt;. This allows bindings to use fields of &lt;tt&gt;mongocrypt_binary_t&lt;/tt&gt; in callbacks directly and avoid calls to &lt;tt&gt;mongocrypt_binary_data&lt;/tt&gt; and &lt;tt&gt;mongocrypt_binary_len&lt;/tt&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Whoistheaffectedenduser%3F&quot;&gt;&lt;/a&gt;Who is the affected end user?&lt;/h4&gt;

&lt;p&gt;Applications using implicit encryption where a single command requires many encryption/decryption operations&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Howdoesthisaffecttheenduser%3F&quot;&gt;&lt;/a&gt;How does this affect the end user?&lt;/h4&gt;

&lt;p&gt;They are annoyed because implicit encryption/decryption is slower than they expect&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Howlikelyisitthatthisproblemorusecasewilloccur%3F&quot;&gt;&lt;/a&gt;How likely is it that this problem or use case will occur?&lt;/h4&gt;

&lt;p&gt;Fairly likely for users of implicit encryption.&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Iftheproblemdoesoccur%2Cwhataretheconsequencesandhowseverearethey%3F&quot;&gt;&lt;/a&gt;If the problem does occur, what are the consequences and how severe are they?&lt;/h4&gt;

&lt;p&gt;It&apos;s a performance concern.&#160;&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Isthisissueurgent%3F&quot;&gt;&lt;/a&gt;Is this issue urgent?&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;No&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color=&quot;#1a1a1a&quot;&gt;Is this ticket required by a downstream team?&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;No&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Isthisticketonlyfortests%3F&quot;&gt;&lt;/a&gt;Is this ticket only for tests?&lt;/h4&gt;

&lt;p&gt;No&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;AcceptanceCriteria&quot;&gt;&lt;/a&gt;&lt;b&gt;Acceptance Criteria&lt;/b&gt;&lt;/h3&gt;

&lt;p&gt;Implicit decryption is benchmarked. Implicit decryption performance is improved.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="2297710">DRIVERS-2581</key>
            <summary>Benchmark and use `mongocrypt_binary_t` definition to improve performance of In-Use Encryption</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="10300" iconUrl="https://jira.mongodb.org/images/icons/priorities/medium.svg">Unknown</priority>
                        <status id="13453" iconUrl="https://jira.mongodb.org/images/icons/status_generic.gif" description="">Implementing</status>
                    <statusCategory id="4" key="indeterminate" colorName="inprogress"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="kevin.albertson@mongodb.com">Kevin Albertson</assignee>
                                    <reporter username="jeff.yemin@mongodb.com">Jeffrey Yemin</reporter>
                        <labels>
                    </labels>
                <created>Fri, 24 Mar 2023 18:25:25 +0000</created>
                <updated>Mon, 2 Oct 2023 16:51:36 +0000</updated>
                                                                <component>Client Side Encryption</component>
                    <component>Performance</component>
                                        <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="5745890" author="xgen-internal-githook" created="Mon, 2 Oct 2023 16:43:20 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Kevin Albertson&apos;, &apos;email&apos;: &apos;kevin.albertson@mongodb.com&apos;, &apos;username&apos;: &apos;kevinAlbs&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-2581&quot; title=&quot;Benchmark and use `mongocrypt_binary_t` definition to improve performance of In-Use Encryption&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-2581&quot;&gt;DRIVERS-2581&lt;/a&gt; specify bindings benchmark (#1463)&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/specifications/commit/db3114e957f7c0976a1af09882dbb46cb4a70049&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/db3114e957f7c0976a1af09882dbb46cb4a70049&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10620">
                    <name>Issue split</name>
                                            <outwardlinks description="split to">
                                        <issuelink>
            <issuekey id="2392027">GODRIVER-2907</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392029">NODE-5455</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392033">RUBY-3299</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392024">CDRIVER-4685</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392026">CSHARP-4719</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392025">CXX-2716</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392028">JAVA-5073</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392030">MOTOR-1155</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392032">PHPC-2304</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392031">PYTHON-3838</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2392034">RUST-1704</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2437410">DRIVERS-2718</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2430026">MONGOCRYPT-589</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2446033">MONGOCRYPT-595</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="439244" name="Screen Shot 2021-09-27 at 3.04.35 PM.png" size="261595" author="jeff.yemin@mongodb.com" created="Fri, 24 Mar 2023 18:32:03 +0000"/>
                    </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_17052" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Downstream Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;Goal: Improve performance of In-Use Encryption for the workload identified in HELP-27047.&lt;/p&gt;

&lt;p&gt;Proposed changes for drivers:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Benchmark throughput of decrypting documents with many (e.g. 1500) encrypted fields. The benchmark is specified here: &lt;a href=&quot;https://github.com/mongodb/specifications/commit/db3114e957f7c0976a1af09882dbb46cb4a70049&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/db3114e957f7c0976a1af09882dbb46cb4a70049&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Attempt to use fields of `mongocrypt_binary_t` to avoid calls to `mongocrypt_binary_data` and `mongocrypt_binary_len`. The fields are exported as of &lt;a href=&quot;https://jira.mongodb.org/browse/MONGOCRYPT-589&quot; title=&quot;Export mongocrypt_binary_t&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MONGOCRYPT-589&quot;&gt;&lt;del&gt;MONGOCRYPT-589&lt;/del&gt;&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;Expect an improvement in throughput.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Refer to the changes made for the Java driver bindings:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Benchmark added in: &lt;a href=&quot;https://github.com/mongodb/libmongocrypt/pull/690&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/libmongocrypt/pull/690&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Use of `mongocrypt_binary_t` fields done in: &lt;a href=&quot;https://github.com/mongodb/libmongocrypt/pull/693&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/libmongocrypt/pull/693&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The benchmark may be useful for testing future performance improvements (&lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-2718&quot; title=&quot;Enable use of native crypto in libmongocrypt bindings&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-2718&quot;&gt;DRIVERS-2718&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Proposed changes may not apply to languages with no extra cost for calling into a C library: (C, C++, PHP via C driver)&lt;/p&gt;</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10951" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Driver Changes</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10748"><![CDATA[Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_23952" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Driver Compliance</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<style type='text/css'>
         #scriptField, #scriptField *{
                border: 1px solid black;
            }

            #scriptField{
                border-collapse: collapse;
            }

            #scriptField td {
                text-align: center; /* Center-align text in table cells */
            }

            #scriptField td.key {
                text-align: left; /* Left-align text in the Key column */
            }

            #scriptField a {
                text-decoration: none; /* Remove underlines from links */
                border: none; /* Remove border from links */
            }
            
            /* Add green background color to cells with FixVersion */
            #scriptField td.hasFixVersion {
                background-color: #00FF00; /* Green color code */
            }

            /* Center-align the first row headers */
            #scriptField th {
                text-align: center;
            }
        </style>
<table id='scriptField'>
  <tr>
    <th>Key</th>
    <th>Status/Resolution</th>
    <th>FixVersion</th>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CDRIVER-4685'>CDRIVER-4685</a>
    </td>
    <td>Works as Designed</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CXX-2716'>CXX-2716</a>
    </td>
    <td>Works as Designed</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CSHARP-4719'>CSHARP-4719</a>
    </td>
    <td>Done</td>
    <td class='hasFixVersion'>2.24.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/GODRIVER-2907'>GODRIVER-2907</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/JAVA-5073'>JAVA-5073</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/NODE-5455'>NODE-5455</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/MOTOR-1155'>MOTOR-1155</a>
    </td>
    <td>Won't Do</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PYTHON-3838'>PYTHON-3838</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>pymongocrypt-1.8.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PHPC-2304'>PHPC-2304</a>
    </td>
    <td>Works as Designed</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUBY-3299'>RUBY-3299</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUST-1704'>RUST-1704</a>
    </td>
    <td>Won't Do</td>
    <td class=''></td>
  </tr>
</table>]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18362" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                        <customfieldname>Engineering Lead</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>james.kovacs@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_18359" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                        <customfieldname>Program Manager</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>esha.bhargava@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_21553" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Quarter</customfieldname>
                        <customfieldvalues>
                                        <label>FY24Q3</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i1k5cg:</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>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_14261" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>Start date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 2 Oct 2023 00:00:00 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>