mongo 2.18.0 → 2.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/mongo/bulk_write.rb +7 -5
- data/lib/mongo/client.rb +1 -1
- data/lib/mongo/collection/view/writable.rb +0 -2
- data/lib/mongo/collection.rb +150 -45
- data/lib/mongo/crypt/auto_encrypter.rb +30 -9
- data/lib/mongo/crypt/binding.rb +93 -1
- data/lib/mongo/crypt/explicit_encrypter.rb +5 -1
- data/lib/mongo/crypt/handle.rb +33 -0
- data/lib/mongo/crypt/kms.rb +0 -1
- data/lib/mongo/cursor.rb +6 -1
- data/lib/mongo/error/invalid_read_option.rb +1 -1
- data/lib/mongo/operation/aggregate.rb +1 -2
- data/lib/mongo/operation/collections_info.rb +3 -15
- data/lib/mongo/operation/command.rb +1 -2
- data/lib/mongo/operation/count.rb +1 -2
- data/lib/mongo/operation/create.rb +1 -2
- data/lib/mongo/operation/create_index.rb +1 -2
- data/lib/mongo/operation/create_user.rb +1 -2
- data/lib/mongo/operation/delete.rb +0 -1
- data/lib/mongo/operation/distinct.rb +1 -2
- data/lib/mongo/operation/drop.rb +1 -2
- data/lib/mongo/operation/drop_database.rb +1 -2
- data/lib/mongo/operation/drop_index.rb +1 -2
- data/lib/mongo/operation/explain.rb +1 -3
- data/lib/mongo/operation/find/builder.rb +0 -1
- data/lib/mongo/operation/find.rb +1 -3
- data/lib/mongo/operation/get_more.rb +1 -3
- data/lib/mongo/operation/indexes.rb +1 -17
- data/lib/mongo/operation/insert.rb +0 -1
- data/lib/mongo/operation/kill_cursors.rb +1 -2
- data/lib/mongo/operation/list_collections.rb +1 -2
- data/lib/mongo/operation/map_reduce.rb +1 -2
- data/lib/mongo/operation/parallel_scan.rb +1 -2
- data/lib/mongo/operation/remove_user.rb +1 -2
- data/lib/mongo/operation/shared/{polymorphic_operation.rb → op_msg_executable.rb} +11 -6
- data/lib/mongo/operation/shared/sessions_supported.rb +7 -3
- data/lib/mongo/operation/update.rb +0 -1
- data/lib/mongo/operation/update_user.rb +1 -2
- data/lib/mongo/operation/users_info.rb +1 -2
- data/lib/mongo/operation/write_command.rb +1 -2
- data/lib/mongo/operation.rb +1 -3
- data/lib/mongo/protocol.rb +0 -3
- data/lib/mongo/query_cache.rb +20 -20
- data/lib/mongo/session.rb +1 -1
- data/lib/mongo/version.rb +1 -1
- data/spec/README.md +5 -1
- data/spec/integration/bulk_write_spec.rb +16 -0
- data/spec/integration/command_spec.rb +1 -23
- data/spec/integration/ocsp_verifier_spec.rb +2 -0
- data/spec/mongo/client_construction_spec.rb +4 -4
- data/spec/mongo/collection_crud_spec.rb +56 -0
- data/spec/mongo/collection_spec.rb +11 -1
- data/spec/mongo/crypt/auto_encrypter_spec.rb +41 -6
- data/spec/mongo/crypt/binding/version_spec.rb +8 -0
- data/spec/mongo/crypt/handle_spec.rb +102 -0
- data/spec/mongo/crypt/kms_spec.rb +12 -9
- data/spec/mongo/cursor_spec.rb +50 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +15 -5
- data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +3 -0
- data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey.yml +3 -3
- data/spec/spec_tests/data/sdam_integration/hello-command-error.yml +6 -14
- data/spec/spec_tests/data/sdam_integration/hello-network-error.yml +4 -14
- data/spec/spec_tests/data/sdam_integration/hello-timeout.yml +8 -14
- data/spec/spec_tests/data/transactions_unified/do-not-retry-read-in-transaction.yml +64 -0
- data/spec/spec_tests/data/transactions_unified/retryable-abort-handshake.yml +118 -0
- data/spec/spec_tests/data/transactions_unified/retryable-commit-handshake.yml +118 -0
- data/spec/support/certificates/retrieve-atlas-cert +38 -0
- data/spec/support/spec_config.rb +4 -0
- data.tar.gz.sig +0 -0
- metadata +1133 -1178
- metadata.gz.sig +0 -0
- data/lib/mongo/operation/aggregate/command.rb +0 -55
- data/lib/mongo/operation/collections_info/command.rb +0 -48
- data/lib/mongo/operation/command/command.rb +0 -41
- data/lib/mongo/operation/count/command.rb +0 -47
- data/lib/mongo/operation/create/command.rb +0 -47
- data/lib/mongo/operation/create_index/command.rb +0 -61
- data/lib/mongo/operation/create_user/command.rb +0 -46
- data/lib/mongo/operation/delete/command.rb +0 -52
- data/lib/mongo/operation/distinct/command.rb +0 -47
- data/lib/mongo/operation/drop/command.rb +0 -41
- data/lib/mongo/operation/drop_database/command.rb +0 -41
- data/lib/mongo/operation/drop_index/command.rb +0 -45
- data/lib/mongo/operation/explain/command.rb +0 -58
- data/lib/mongo/operation/explain/legacy.rb +0 -52
- data/lib/mongo/operation/find/builder/legacy.rb +0 -123
- data/lib/mongo/operation/find/command.rb +0 -51
- data/lib/mongo/operation/find/legacy/result.rb +0 -46
- data/lib/mongo/operation/find/legacy.rb +0 -52
- data/lib/mongo/operation/get_more/command.rb +0 -43
- data/lib/mongo/operation/get_more/legacy.rb +0 -39
- data/lib/mongo/operation/indexes/command.rb +0 -42
- data/lib/mongo/operation/indexes/legacy.rb +0 -48
- data/lib/mongo/operation/insert/command.rb +0 -55
- data/lib/mongo/operation/kill_cursors/command.rb +0 -48
- data/lib/mongo/operation/list_collections/command.rb +0 -46
- data/lib/mongo/operation/map_reduce/command.rb +0 -51
- data/lib/mongo/operation/parallel_scan/command.rb +0 -57
- data/lib/mongo/operation/remove_user/command.rb +0 -46
- data/lib/mongo/operation/shared/op_msg_or_command.rb +0 -41
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +0 -44
- data/lib/mongo/operation/update/command.rb +0 -53
- data/lib/mongo/operation/update_user/command.rb +0 -45
- data/lib/mongo/operation/users_info/command.rb +0 -46
- data/lib/mongo/operation/write_command/command.rb +0 -51
- data/lib/mongo/protocol/delete.rb +0 -172
- data/lib/mongo/protocol/insert.rb +0 -181
- data/lib/mongo/protocol/update.rb +0 -214
- data/spec/mongo/operation/delete/command_spec.rb +0 -115
- data/spec/mongo/operation/find/legacy_spec.rb +0 -131
- data/spec/mongo/operation/get_more_spec.rb +0 -63
- data/spec/mongo/operation/insert/command_spec.rb +0 -118
- data/spec/mongo/operation/update/command_spec.rb +0 -122
- data/spec/mongo/protocol/delete_spec.rb +0 -185
- data/spec/mongo/protocol/insert_spec.rb +0 -179
- data/spec/mongo/protocol/update_spec.rb +0 -204
data/lib/mongo/crypt/handle.rb
CHANGED
@@ -50,6 +50,15 @@ module Mongo
|
|
50
50
|
# and schemaMap, an error will be raised.
|
51
51
|
# @option options [ Boolean | nil ] :bypass_query_analysis When true
|
52
52
|
# disables automatic analysis of outgoing commands.
|
53
|
+
# @option options [ String | nil ] :crypt_shared_lib_path Path that should
|
54
|
+
# be the used to load the crypt shared library. Providing this option
|
55
|
+
# overrides default crypt shared library load paths for libmongocrypt.
|
56
|
+
# @option options [ Boolean | nil ] :crypt_shared_lib_required Whether
|
57
|
+
# crypt_shared library is required. If 'true', an error will be raised
|
58
|
+
# if a crypt_shared library cannot be loaded by libmongocrypt.
|
59
|
+
# @option options [ Boolean | nil ] :explicit_encryption_only Whether this
|
60
|
+
# handle is going to be used only for explicit encryption. If true,
|
61
|
+
# libmongocrypt is instructed not to load crypt shared library.
|
53
62
|
# @option options [ Logger ] :logger A Logger object to which libmongocrypt logs
|
54
63
|
# will be sent
|
55
64
|
def initialize(kms_providers, kms_tls_options, options={})
|
@@ -70,13 +79,29 @@ module Mongo
|
|
70
79
|
@bypass_query_analysis = options[:bypass_query_analysis]
|
71
80
|
set_bypass_query_analysis if @bypass_query_analysis
|
72
81
|
|
82
|
+
@crypt_shared_lib_path = options[:crypt_shared_lib_path]
|
83
|
+
@explicit_encryption_only = options[:explicit_encryption_only]
|
84
|
+
if @crypt_shared_lib_path
|
85
|
+
Binding.setopt_set_crypt_shared_lib_path_override(self, @crypt_shared_lib_path)
|
86
|
+
elsif !@bypass_query_analysis && !@explicit_encryption_only
|
87
|
+
Binding.setopt_append_crypt_shared_lib_search_path(self, "$SYSTEM")
|
88
|
+
end
|
89
|
+
|
73
90
|
@logger = options[:logger]
|
74
91
|
set_logger_callback if @logger
|
75
92
|
|
76
93
|
set_crypto_hooks
|
77
94
|
|
78
95
|
Binding.setopt_kms_providers(self, kms_providers.to_document)
|
96
|
+
|
79
97
|
initialize_mongocrypt
|
98
|
+
|
99
|
+
@crypt_shared_lib_required = !!options[:crypt_shared_lib_required]
|
100
|
+
if @crypt_shared_lib_required && crypt_shared_lib_version == 0
|
101
|
+
raise Mongo::Error::CryptError.new(
|
102
|
+
"Crypt shared library is required, but cannot be loaded according to libmongocrypt"
|
103
|
+
)
|
104
|
+
end
|
80
105
|
end
|
81
106
|
|
82
107
|
# Return the reference to the underlying @mongocrypt object
|
@@ -96,6 +121,14 @@ module Mongo
|
|
96
121
|
@kms_tls_options.fetch(provider, {})
|
97
122
|
end
|
98
123
|
|
124
|
+
def crypt_shared_lib_version
|
125
|
+
Binding.crypt_shared_lib_version(self)
|
126
|
+
end
|
127
|
+
|
128
|
+
def crypt_shared_lib_available?
|
129
|
+
crypt_shared_lib_version != 0
|
130
|
+
end
|
131
|
+
|
99
132
|
private
|
100
133
|
|
101
134
|
# Set the schema map option on the underlying mongocrypt_t object
|
data/lib/mongo/crypt/kms.rb
CHANGED
data/lib/mongo/cursor.rb
CHANGED
@@ -251,7 +251,12 @@ module Mongo
|
|
251
251
|
#
|
252
252
|
# @since 2.2.0
|
253
253
|
def batch_size
|
254
|
-
@view.batch_size && @view.batch_size > 0 ? @view.batch_size : limit
|
254
|
+
value = @view.batch_size && @view.batch_size > 0 ? @view.batch_size : limit
|
255
|
+
if value == 0
|
256
|
+
nil
|
257
|
+
else
|
258
|
+
value
|
259
|
+
end
|
255
260
|
end
|
256
261
|
|
257
262
|
# Is the cursor closed?
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/aggregate/command'
|
19
18
|
require 'mongo/operation/aggregate/op_msg'
|
20
19
|
require 'mongo/operation/aggregate/result'
|
21
20
|
|
@@ -33,7 +32,7 @@ module Mongo
|
|
33
32
|
# @since 2.0.0
|
34
33
|
class Aggregate
|
35
34
|
include Specifiable
|
36
|
-
include
|
35
|
+
include OpMsgExecutable
|
37
36
|
end
|
38
37
|
end
|
39
38
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/collections_info/command'
|
19
18
|
require 'mongo/operation/collections_info/result'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,23 +27,12 @@ module Mongo
|
|
28
27
|
# @since 2.0.0
|
29
28
|
class CollectionsInfo
|
30
29
|
include Specifiable
|
31
|
-
include
|
32
|
-
include PolymorphicLookup
|
30
|
+
include OpMsgExecutable
|
33
31
|
|
34
32
|
private
|
35
33
|
|
36
|
-
def final_operation
|
37
|
-
|
38
|
-
if connection.features.op_msg_enabled?
|
39
|
-
ListCollections::OpMsg
|
40
|
-
else
|
41
|
-
ListCollections::Command
|
42
|
-
end
|
43
|
-
else
|
44
|
-
CollectionsInfo::Command
|
45
|
-
end
|
46
|
-
|
47
|
-
op_class.new(spec)
|
34
|
+
def final_operation
|
35
|
+
ListCollections::OpMsg.new(spec)
|
48
36
|
end
|
49
37
|
end
|
50
38
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/command/command'
|
19
18
|
require 'mongo/operation/command/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.0.0
|
29
28
|
class Command
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/count/command'
|
19
18
|
require 'mongo/operation/count/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.0.0
|
29
28
|
class Count
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/create/command'
|
19
18
|
require 'mongo/operation/create/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.0.0
|
29
28
|
class Create
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/create_index/command'
|
19
18
|
require 'mongo/operation/create_index/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.0.0
|
29
28
|
class CreateIndex
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/create_user/command'
|
19
18
|
require 'mongo/operation/create_user/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.0.0
|
29
28
|
class CreateUser
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/delete/command'
|
19
18
|
require 'mongo/operation/delete/op_msg'
|
20
19
|
require 'mongo/operation/delete/result'
|
21
20
|
require 'mongo/operation/delete/bulk_result'
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/distinct/command'
|
19
18
|
require 'mongo/operation/distinct/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.5.0
|
29
28
|
class Distinct
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
data/lib/mongo/operation/drop.rb
CHANGED
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/drop/command'
|
19
18
|
require 'mongo/operation/drop/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.4.0
|
29
28
|
class Drop
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/drop_database/command'
|
19
18
|
require 'mongo/operation/drop_database/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.4.0
|
29
28
|
class DropDatabase
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/drop_index/command'
|
19
18
|
require 'mongo/operation/drop_index/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.0.0
|
29
28
|
class DropIndex
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -17,8 +17,6 @@
|
|
17
17
|
|
18
18
|
require 'mongo/operation/explain/result'
|
19
19
|
require 'mongo/operation/explain/op_msg'
|
20
|
-
require 'mongo/operation/explain/command'
|
21
|
-
require 'mongo/operation/explain/legacy'
|
22
20
|
|
23
21
|
module Mongo
|
24
22
|
module Operation
|
@@ -30,7 +28,7 @@ module Mongo
|
|
30
28
|
# @since 2.5.0
|
31
29
|
class Explain
|
32
30
|
include Specifiable
|
33
|
-
include
|
31
|
+
include OpMsgExecutable
|
34
32
|
end
|
35
33
|
end
|
36
34
|
end
|
data/lib/mongo/operation/find.rb
CHANGED
@@ -15,9 +15,7 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/find/command'
|
19
18
|
require 'mongo/operation/find/op_msg'
|
20
|
-
require 'mongo/operation/find/legacy'
|
21
19
|
require 'mongo/operation/find/result'
|
22
20
|
require 'mongo/operation/find/builder'
|
23
21
|
|
@@ -31,7 +29,7 @@ module Mongo
|
|
31
29
|
# @since 2.0.0
|
32
30
|
class Find
|
33
31
|
include Specifiable
|
34
|
-
include
|
32
|
+
include OpMsgExecutable
|
35
33
|
end
|
36
34
|
end
|
37
35
|
end
|
@@ -16,9 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
18
|
require 'mongo/operation/get_more/command_builder'
|
19
|
-
require 'mongo/operation/get_more/command'
|
20
19
|
require 'mongo/operation/get_more/op_msg'
|
21
|
-
require 'mongo/operation/get_more/legacy'
|
22
20
|
require 'mongo/operation/get_more/result'
|
23
21
|
|
24
22
|
module Mongo
|
@@ -31,7 +29,7 @@ module Mongo
|
|
31
29
|
# @since 2.5.0
|
32
30
|
class GetMore
|
33
31
|
include Specifiable
|
34
|
-
include
|
32
|
+
include OpMsgExecutable
|
35
33
|
end
|
36
34
|
end
|
37
35
|
end
|
@@ -15,9 +15,7 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/indexes/command'
|
19
18
|
require 'mongo/operation/indexes/op_msg'
|
20
|
-
require 'mongo/operation/indexes/legacy'
|
21
19
|
require 'mongo/operation/indexes/result'
|
22
20
|
|
23
21
|
module Mongo
|
@@ -30,21 +28,7 @@ module Mongo
|
|
30
28
|
# @since 2.0.0
|
31
29
|
class Indexes
|
32
30
|
include Specifiable
|
33
|
-
include
|
34
|
-
include PolymorphicLookup
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def final_operation(connection)
|
39
|
-
cls = if connection.features.op_msg_enabled?
|
40
|
-
polymorphic_class(self.class.name, :OpMsg)
|
41
|
-
elsif connection.features.list_indexes_enabled?
|
42
|
-
polymorphic_class(self.class.name, :Command)
|
43
|
-
else
|
44
|
-
polymorphic_class(self.class.name, :Legacy)
|
45
|
-
end
|
46
|
-
cls.new(spec)
|
47
|
-
end
|
31
|
+
include OpMsgExecutable
|
48
32
|
end
|
49
33
|
end
|
50
34
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/insert/command'
|
19
18
|
require 'mongo/operation/insert/op_msg'
|
20
19
|
require 'mongo/operation/insert/result'
|
21
20
|
require 'mongo/operation/insert/bulk_result'
|
@@ -16,7 +16,6 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
18
|
require 'mongo/operation/kill_cursors/command_builder'
|
19
|
-
require 'mongo/operation/kill_cursors/command'
|
20
19
|
require 'mongo/operation/kill_cursors/op_msg'
|
21
20
|
|
22
21
|
module Mongo
|
@@ -29,7 +28,7 @@ module Mongo
|
|
29
28
|
# @since 2.0.0
|
30
29
|
class KillCursors
|
31
30
|
include Specifiable
|
32
|
-
include
|
31
|
+
include OpMsgExecutable
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/list_collections/command'
|
19
18
|
require 'mongo/operation/list_collections/op_msg'
|
20
19
|
require 'mongo/operation/list_collections/result'
|
21
20
|
|
@@ -29,7 +28,7 @@ module Mongo
|
|
29
28
|
# @since 2.0.0
|
30
29
|
class ListCollections
|
31
30
|
include Specifiable
|
32
|
-
include
|
31
|
+
include OpMsgExecutable
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/map_reduce/command'
|
19
18
|
require 'mongo/operation/map_reduce/op_msg'
|
20
19
|
require 'mongo/operation/map_reduce/result'
|
21
20
|
|
@@ -29,7 +28,7 @@ module Mongo
|
|
29
28
|
# @since 2.5.0
|
30
29
|
class MapReduce
|
31
30
|
include Specifiable
|
32
|
-
include
|
31
|
+
include OpMsgExecutable
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/parallel_scan/command'
|
19
18
|
require 'mongo/operation/parallel_scan/op_msg'
|
20
19
|
require 'mongo/operation/parallel_scan/result'
|
21
20
|
|
@@ -29,7 +28,7 @@ module Mongo
|
|
29
28
|
# @since 2.0.0
|
30
29
|
class ParallelScan
|
31
30
|
include Specifiable
|
32
|
-
include
|
31
|
+
include OpMsgExecutable
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/remove_user/command'
|
19
18
|
require 'mongo/operation/remove_user/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.0.0
|
29
28
|
class RemoveUser
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
|
-
# Copyright (C)
|
4
|
+
# Copyright (C) 2018-2020 MongoDB Inc.
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
@@ -18,11 +18,11 @@
|
|
18
18
|
module Mongo
|
19
19
|
module Operation
|
20
20
|
|
21
|
-
# Shared behavior of
|
22
|
-
# the server that will be executing the operation.
|
21
|
+
# Shared behavior of executing the operation as an OpMsg.
|
23
22
|
#
|
24
23
|
# @api private
|
25
|
-
module
|
24
|
+
module OpMsgExecutable
|
25
|
+
include PolymorphicLookup
|
26
26
|
|
27
27
|
# Execute the operation.
|
28
28
|
#
|
@@ -46,8 +46,13 @@ module Mongo
|
|
46
46
|
#
|
47
47
|
# @return [ Mongo::Operation::Result ] The operation result.
|
48
48
|
def execute_with_connection(connection, context:, options: {})
|
49
|
-
|
50
|
-
|
49
|
+
final_operation.execute(connection, context: context, options: options)
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def final_operation
|
55
|
+
polymorphic_class(self.class.name, :OpMsg).new(spec)
|
51
56
|
end
|
52
57
|
end
|
53
58
|
end
|
@@ -257,10 +257,14 @@ module Mongo
|
|
257
257
|
super.tap do |message|
|
258
258
|
if session = context.session
|
259
259
|
# Serialize the message to detect client-side problems,
|
260
|
-
# such as invalid BSON keys
|
260
|
+
# such as invalid BSON keys or too large messages.
|
261
|
+
# The message will be serialized again
|
261
262
|
# later prior to being sent to the connection.
|
262
|
-
|
263
|
-
|
263
|
+
buf = BSON::ByteBuffer.new
|
264
|
+
message.serialize(buf)
|
265
|
+
if buf.length > connection.max_message_size
|
266
|
+
raise Error::MaxMessageSize.new(connection.max_message_size)
|
267
|
+
end
|
264
268
|
session.update_state!
|
265
269
|
end
|
266
270
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/update/command'
|
19
18
|
require 'mongo/operation/update/op_msg'
|
20
19
|
require 'mongo/operation/update/result'
|
21
20
|
require 'mongo/operation/update/bulk_result'
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/update_user/command'
|
19
18
|
require 'mongo/operation/update_user/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -28,7 +27,7 @@ module Mongo
|
|
28
27
|
# @since 2.0.0
|
29
28
|
class UpdateUser
|
30
29
|
include Specifiable
|
31
|
-
include
|
30
|
+
include OpMsgExecutable
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/users_info/command'
|
19
18
|
require 'mongo/operation/users_info/op_msg'
|
20
19
|
require 'mongo/operation/users_info/result'
|
21
20
|
|
@@ -29,7 +28,7 @@ module Mongo
|
|
29
28
|
# @since 2.0.0
|
30
29
|
class UsersInfo
|
31
30
|
include Specifiable
|
32
|
-
include
|
31
|
+
include OpMsgExecutable
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
require 'mongo/operation/write_command/command'
|
19
18
|
require 'mongo/operation/write_command/op_msg'
|
20
19
|
|
21
20
|
module Mongo
|
@@ -26,7 +25,7 @@ module Mongo
|
|
26
25
|
# @api private
|
27
26
|
class WriteCommand
|
28
27
|
include Specifiable
|
29
|
-
include
|
28
|
+
include OpMsgExecutable
|
30
29
|
end
|
31
30
|
end
|
32
31
|
end
|
data/lib/mongo/operation.rb
CHANGED
@@ -9,7 +9,6 @@ require 'mongo/operation/shared/executable'
|
|
9
9
|
require 'mongo/operation/shared/executable_no_validate'
|
10
10
|
require 'mongo/operation/shared/executable_transaction_label'
|
11
11
|
require 'mongo/operation/shared/polymorphic_lookup'
|
12
|
-
require 'mongo/operation/shared/polymorphic_operation'
|
13
12
|
require 'mongo/operation/shared/polymorphic_result'
|
14
13
|
require 'mongo/operation/shared/read_preference_supported'
|
15
14
|
require 'mongo/operation/shared/bypass_document_validation'
|
@@ -22,8 +21,7 @@ require 'mongo/operation/shared/idable'
|
|
22
21
|
require 'mongo/operation/shared/specifiable'
|
23
22
|
require 'mongo/operation/shared/validatable'
|
24
23
|
require 'mongo/operation/shared/object_id_generator'
|
25
|
-
require 'mongo/operation/shared/
|
26
|
-
require 'mongo/operation/shared/op_msg_or_find_command'
|
24
|
+
require 'mongo/operation/shared/op_msg_executable'
|
27
25
|
|
28
26
|
require 'mongo/operation/op_msg_base'
|
29
27
|
require 'mongo/operation/command'
|
data/lib/mongo/protocol.rb
CHANGED
@@ -10,12 +10,9 @@ require 'mongo/protocol/caching_hash'
|
|
10
10
|
|
11
11
|
# Client Requests
|
12
12
|
require 'mongo/protocol/compressed'
|
13
|
-
require 'mongo/protocol/delete'
|
14
13
|
require 'mongo/protocol/get_more'
|
15
|
-
require 'mongo/protocol/insert'
|
16
14
|
require 'mongo/protocol/kill_cursors'
|
17
15
|
require 'mongo/protocol/query'
|
18
|
-
require 'mongo/protocol/update'
|
19
16
|
require 'mongo/protocol/msg'
|
20
17
|
|
21
18
|
# Server Responses
|