<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:57:56 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>[SERVER-21634] Add mixed version testing for aggregations</title>
                <link>https://jira.mongodb.org/browse/SERVER-21634</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;We should add some testing of various aggregation pipelines against various mixed-version topologies. In particular, it would be good to stress:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;new stages&lt;/li&gt;
	&lt;li&gt;backwards-breaking changes like &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-14691&quot; title=&quot;$avg aggregation operator should return null instead of 0&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-14691&quot;&gt;&lt;del&gt;SERVER-14691&lt;/del&gt;&lt;/a&gt; or &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-6801&quot; title=&quot;aggregation $substr expression can output invalid UTF8&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-6801&quot;&gt;&lt;del&gt;SERVER-6801&lt;/del&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="240724">SERVER-21634</key>
            <summary>Add mixed version testing for aggregations</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="9">Done</resolution>
                                        <assignee username="charlie.swanson@mongodb.com">Charlie Swanson</assignee>
                                    <reporter username="charlie.swanson@mongodb.com">Charlie Swanson</reporter>
                        <labels>
                    </labels>
                <created>Mon, 23 Nov 2015 18:20:23 +0000</created>
                <updated>Fri, 9 Dec 2016 01:48:20 +0000</updated>
                            <resolved>Thu, 10 Dec 2015 20:09:56 +0000</resolved>
                                                                    <component>Aggregation Framework</component>
                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="1111226" author="charlie.swanson" created="Thu, 10 Dec 2015 20:09:56 +0000"  >&lt;p&gt;Manual testing done. Results summarized below&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Newstages%2Caccumulators%2Cexpressions&quot;&gt;&lt;/a&gt;New stages, accumulators, expressions&lt;/h3&gt;
&lt;p&gt;As expected, new operators are not available until the &lt;tt&gt;mongos&lt;/tt&gt; is upgraded to 3.2, as the last step in the cycle.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;SERVER14691%3A%7B%7B%24avg%7D%7Dofnonnumericsnowreturns%7B%7Bnull%7D%7D%2Cnot0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-14691&quot; title=&quot;$avg aggregation operator should return null instead of 0&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-14691&quot;&gt;&lt;del&gt;SERVER-14691&lt;/del&gt;&lt;/a&gt;: &lt;tt&gt;$avg&lt;/tt&gt; of non-numerics now returns &lt;tt&gt;null&lt;/tt&gt;, not 0&lt;/h3&gt;
&lt;p&gt;As expected, if the &lt;tt&gt;$group&lt;/tt&gt; stage is run on a 3.0 &lt;tt&gt;mongod&lt;/tt&gt;, it will return an average of 0 for non-numeric values. If the &lt;tt&gt;$group&lt;/tt&gt; stage is run on a 3.2 &lt;tt&gt;mongod&lt;/tt&gt;, it will return an average of &lt;tt&gt;null&lt;/tt&gt;.&lt;br/&gt;
To be more precise, the following table describes what an &lt;tt&gt;$avg&lt;/tt&gt; of all non-numeric inputs returns in each scenario:&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; unsharded collection &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; sharded collection &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; primary shard for the database is 3.0 &lt;/th&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; primary shard for the database is 3.2 &lt;/th&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;tt&gt;null&lt;/tt&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;tt&gt;null&lt;/tt&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;Note it is only the version of the primary shard for the database that matters for sharded collections, since a &lt;tt&gt;$group&lt;/tt&gt; stage is always run during the merging portion of the aggregation, which (when you have a 3.0 &lt;tt&gt;mongos&lt;/tt&gt;) always happens on the primary shard for that database. If the primary shard for the database is a replica set, your &lt;tt&gt;readPreference&lt;/tt&gt; will determine which node it will run on, which may impact which version of &lt;tt&gt;mongod&lt;/tt&gt; does the merging.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;SERVER6801%7B%7B%24substr%7D%7DnowerrorsifitwouldsplitasingleUTF8character&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-6801&quot; title=&quot;aggregation $substr expression can output invalid UTF8&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-6801&quot;&gt;&lt;del&gt;SERVER-6801&lt;/del&gt;&lt;/a&gt; &lt;tt&gt;$substr&lt;/tt&gt; now errors if it would split a single UTF-8 character&lt;/h3&gt;
&lt;p&gt;All worked as expected, an invalid &lt;tt&gt;$substr&lt;/tt&gt; errors when it is run on a 3.2 mongod. Note the &lt;tt&gt;$substr&lt;/tt&gt; expression can be used in the &lt;tt&gt;$project&lt;/tt&gt; stage, which does not force a split of the pipeline, so might be executed in parallel on all the relevant shards, or might be executed during the merging portion, on the primary shard for the database.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;SERVER8141Arraysarenolongerparsedasliteralexpressions&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-8141&quot; title=&quot;Avoid treating arrays as literals in the aggregation pipeline&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-8141&quot;&gt;&lt;del&gt;SERVER-8141&lt;/del&gt;&lt;/a&gt; Arrays are no longer parsed as literal expressions&lt;/h3&gt;
&lt;p&gt;This is a little more subtle. If you are using a sharded collection, the &lt;tt&gt;mongos&lt;/tt&gt; will parse the pipeline before sending part of it to the relevant shards. If your &lt;tt&gt;mongos&lt;/tt&gt; is on version 3.0, it will parse arrays as literal, then when it serializes the pipeline again to be sent to the shards, it will wrap literal values in a &lt;tt&gt;$const&lt;/tt&gt; expression (functionally the same as &lt;tt&gt;$literal&lt;/tt&gt;). Thus, on sharded collections, you will not observe any of the different parsing behavior for &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-8141&quot; title=&quot;Avoid treating arrays as literals in the aggregation pipeline&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-8141&quot;&gt;&lt;del&gt;SERVER-8141&lt;/del&gt;&lt;/a&gt; until your &lt;tt&gt;mongos&lt;/tt&gt; is upgraded.&lt;/p&gt;

&lt;p&gt;For unsharded collections, the &lt;tt&gt;mongos&lt;/tt&gt; does not need to split the pipeline and re-serialize part of it, so it sends the existing command object, as-is, directly to the shard with that collection. In this case, if the &lt;tt&gt;mongod&lt;/tt&gt; that receives it is on version 3.2, it will use the new parsing behavior.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;SummaryOfTestExecution%2CResults&quot;&gt;&lt;/a&gt;Summary Of Test Execution, Results&lt;/h3&gt;
&lt;p&gt;The testing involved starting with a sharded cluster where each process was running version 3.0.7, and slowly upgrading it as described in our &lt;a href=&quot;https://docs.mongodb.org/manual/release-notes/3.2-upgrade/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;upgrade docs&lt;/a&gt;. The cluster had one mongos, one config server, and two shards. Each shard was a 3-node replica set.&lt;/p&gt;
&lt;h5&gt;&lt;a name=&quot;Datasetup&quot;&gt;&lt;/a&gt;Data setup&lt;/h5&gt;
&lt;p&gt;&lt;tt&gt;_id&lt;/tt&gt;&apos;s have been removed to improve readability.&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; Namespace &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; Sharded &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; Primary shard for database &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; Data on shard 1 &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; Data on shard 2&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; no &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1, y: 2}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 2, string: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;&#486;&#340;&#276;&#256;&#354;&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 3, transactions: [{price: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$2&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}]}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; None &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; yes &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1, y: 2}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 2, string: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;&#486;&#340;&#276;&#256;&#354;&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 3, transactions: [{price: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$2&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}]}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1, y: 2}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 2, string: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;&#486;&#340;&#276;&#256;&#354;&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 3, transactions: [{price: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$2&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}]}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; no &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; None &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1, y: 2}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 2, string: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;&#486;&#340;&#276;&#256;&#354;&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 3, transactions: [{price: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$2&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}]}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; yes &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1, y: 2}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 2, string: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;&#486;&#340;&#276;&#256;&#354;&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 3, transactions: [{price: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$2&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}]}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 1, y: 2}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 2, string: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;&#486;&#340;&#276;&#256;&#354;&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{x: 3, transactions: [{price: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$2&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}]}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;h5&gt;&lt;a name=&quot;BehaviorsTested&quot;&gt;&lt;/a&gt;Behaviors Tested&lt;/h5&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; Pipeline run &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; Behavior intended to test &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;[{$sample: {size: 10}}] &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; if a new &lt;b&gt;stage&lt;/b&gt; would be recognized. &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;[{$project: {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;  x: {$ceil: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$x&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}}] &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; if a new &lt;b&gt;expression&lt;/b&gt; would be recognized. &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;[{$group: {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;  _id: &lt;/span&gt;&lt;span style=&quot;color: #006699; font-weight: bold; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;,&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;  x: {$stdDevSamp: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$x&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}}] &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; if a new &lt;b&gt;accumulator&lt;/b&gt; would be recognized. &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;[{$group: {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;  _id: &lt;/span&gt;&lt;span style=&quot;color: #006699; font-weight: bold; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;,&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;  x: {$avg: &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$non-existent&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}}] &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; what an average of no numeric values would return (&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-14691&quot; title=&quot;$avg aggregation operator should return null instead of 0&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-14691&quot;&gt;&lt;del&gt;SERVER-14691&lt;/del&gt;&lt;/a&gt;) &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;[{$project: {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;  x: {$substr: [&lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$string&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;, 0, 4]}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}}] &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; if an invalid substring would error, or return an invalid document (&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-6801&quot; title=&quot;aggregation $substr expression can output invalid UTF8&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-6801&quot;&gt;&lt;del&gt;SERVER-6801&lt;/del&gt;&lt;/a&gt;) &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;[{$project: {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;  x: {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    $setIntersection: [&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$transactions.price&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;,&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      [&lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;$2&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    ]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;  }&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}}] &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; if &quot;$2&quot; would be treated as a string literal, or as a field path (&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-8141&quot; title=&quot;Avoid treating arrays as literals in the aggregation pipeline&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-8141&quot;&gt;&lt;del&gt;SERVER-8141&lt;/del&gt;&lt;/a&gt;) &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;



&lt;h5&gt;&lt;a name=&quot;TestingProcess&quot;&gt;&lt;/a&gt;Testing Process&lt;/h5&gt;
&lt;ol&gt;
	&lt;li&gt;Started a sharded cluster, everything on 3.0.7, verify the following expected behaviors (columns correspond to tests described in &apos;Behaviors Tested&apos; section)
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$sample&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$ceil&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$stdDevSamp&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$avg&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$substr&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$setIntersection&lt;/tt&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; invalid UTF-8 character &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
	&lt;li&gt;Upgrade the secondaries of shard1 to 3.2. Verify the following behavior
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; ReadPreference &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; namespace &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;  &lt;tt&gt;$sample&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$ceil&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$stdDevSamp&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$avg&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$substr&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$setIntersection&lt;/tt&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &quot;primary&quot; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; invalid UTF-8 character &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; invalid UTF-8 character &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; invalid UTF-8 character &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; invalid UTF-8 character &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &quot;secondary&quot; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; invalid UTF-8 character &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
	&lt;li&gt;Upgrade the primary of shard1 to 3.2, observe the following behavior:
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; namespace &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;  &lt;tt&gt;$sample&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$ceil&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$stdDevSamp&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$avg&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$substr&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$setIntersection&lt;/tt&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; invalid UTF-8 character &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
	&lt;li&gt;Upgrade the secondaries of shard2 to 3.2, observe the following behavior:
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; ReadPreference &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; namespace &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;  &lt;tt&gt;$sample&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$ceil&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$stdDevSamp&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$avg&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$substr&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$setIntersection&lt;/tt&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &quot;primary&quot; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; invalid UTF-8 character &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 0 &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &quot;secondary&quot; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
	&lt;li&gt;Upgrade primary of shard 2 to 3.2, observe the following behavior:
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; ReadPreference &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; namespace &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;  &lt;tt&gt;$sample&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$ceil&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$stdDevSamp&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$avg&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$substr&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$setIntersection&lt;/tt&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &quot;primary&quot; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &quot;secondary&quot; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; fails &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; treated as literal, so matches &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
	&lt;li&gt;Upgrade the config server, then the &lt;tt&gt;mongos&lt;/tt&gt; to 3.2, observe the following behavior:
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; namespace &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;  &lt;tt&gt;$sample&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$ceil&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$stdDevSamp&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$avg&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$substr&lt;/tt&gt; &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; &lt;tt&gt;$setIntersection&lt;/tt&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard1.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.unsharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; shard2.sharded &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;succeeds&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;&lt;tt&gt;null&lt;/tt&gt;&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;error&lt;/b&gt; &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; &lt;b&gt;treated as field path, so no match&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
</comment>
                            <comment id="1109774" author="charlie.swanson" created="Wed, 9 Dec 2015 18:50:15 +0000"  >&lt;p&gt;After discussing with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=kamran.khan&quot; class=&quot;user-hover&quot; rel=&quot;kamran.khan&quot;&gt;kamran.khan&lt;/a&gt;, we&apos;ve decided to just manually verify that things work as expected in an upgrade/downgrade scenario. Adding an automated test for these cases won&apos;t add much value, and we don&apos;t think it&apos;s a high-risk area. I will do the manual tests and close the ticket once verified. I&apos;ll comment with the specifics of how it was tested once it&apos;s been done.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="291061">SERVER-27296</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        8 years, 9 weeks, 6 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            8 years, 9 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>charlie.swanson@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrkntb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hrdvmv:</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_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="794">QuInt D (12/14/15)</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrj6an:</customfieldvalue>

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