mongo 2.1.0.beta → 2.2.0
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/README.md +10 -3
- data/Rakefile +1 -7
- data/lib/mongo/address/ipv4.rb +6 -1
- data/lib/mongo/address/unix.rb +2 -2
- data/lib/mongo/address.rb +32 -10
- data/lib/mongo/auth/cr/conversation.rb +1 -1
- data/lib/mongo/auth/ldap/conversation.rb +7 -3
- data/lib/mongo/auth/scram/conversation.rb +9 -3
- data/lib/mongo/auth/user/view.rb +23 -2
- data/lib/mongo/auth/x509/conversation.rb +1 -1
- data/lib/mongo/bulk_write/combineable.rb +51 -0
- data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
- data/lib/mongo/bulk_write/result.rb +61 -8
- data/lib/mongo/bulk_write/result_combiner.rb +117 -0
- data/lib/mongo/bulk_write/transformable.rb +132 -0
- data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
- data/lib/mongo/bulk_write/validatable.rb +62 -0
- data/lib/mongo/bulk_write.rb +164 -23
- data/lib/mongo/client.rb +75 -18
- data/lib/mongo/cluster/topology/replica_set.rb +8 -6
- data/lib/mongo/cluster/topology/unknown.rb +5 -2
- data/lib/mongo/cluster.rb +85 -5
- data/lib/mongo/collection/view/aggregation.rb +19 -45
- data/lib/mongo/collection/view/builder/aggregation.rb +98 -0
- data/lib/mongo/collection/view/builder/find_command.rb +111 -0
- data/lib/mongo/collection/view/builder/flags.rb +62 -0
- data/lib/mongo/collection/view/builder/map_reduce.rb +134 -0
- data/lib/mongo/collection/view/builder/modifiers.rb +80 -0
- data/lib/mongo/collection/view/builder/op_query.rb +83 -0
- data/lib/mongo/collection/view/builder.rb +20 -0
- data/lib/mongo/collection/view/explainable.rb +15 -0
- data/lib/mongo/collection/view/immutable.rb +4 -11
- data/lib/mongo/collection/view/iterable.rb +40 -5
- data/lib/mongo/collection/view/map_reduce.rb +67 -37
- data/lib/mongo/collection/view/readable.rb +114 -100
- data/lib/mongo/collection/view/writable.rb +46 -22
- data/lib/mongo/collection/view.rb +25 -22
- data/lib/mongo/collection.rb +130 -12
- data/lib/mongo/cursor/builder/get_more_command.rb +71 -0
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +62 -0
- data/lib/mongo/cursor/builder/op_get_more.rb +61 -0
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +56 -0
- data/lib/mongo/cursor/builder.rb +18 -0
- data/lib/mongo/cursor.rb +76 -21
- data/lib/mongo/database/view.rb +11 -6
- data/lib/mongo/database.rb +16 -6
- data/lib/mongo/dbref.rb +9 -9
- data/lib/mongo/{bulk_write/unordered_bulk_write.rb → error/closed_stream.rb} +12 -21
- data/lib/mongo/{bulk_write/ordered_bulk_write.rb → error/extra_file_chunk.rb} +13 -27
- data/lib/mongo/error/file_not_found.rb +37 -0
- data/lib/mongo/error/invalid_file.rb +2 -2
- data/lib/mongo/error/invalid_file_revision.rb +37 -0
- data/lib/mongo/error/invalid_uri.rb +5 -4
- data/lib/mongo/error/invalid_write_concern.rb +35 -0
- data/lib/mongo/error/missing_file_chunk.rb +38 -0
- data/lib/mongo/error/operation_failure.rb +33 -2
- data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
- data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
- data/lib/mongo/error.rb +8 -0
- data/lib/mongo/grid/file/chunk.rb +9 -9
- data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
- data/lib/mongo/grid/file.rb +12 -9
- data/lib/mongo/grid/fs_bucket.rb +448 -0
- data/lib/mongo/grid/stream/read.rb +208 -0
- data/lib/mongo/grid/stream/write.rb +187 -0
- data/lib/mongo/grid/stream.rb +64 -0
- data/lib/mongo/grid.rb +2 -1
- data/lib/mongo/index/view.rb +7 -4
- data/lib/mongo/index.rb +5 -0
- data/lib/mongo/loggable.rb +34 -57
- data/lib/mongo/logger.rb +16 -78
- data/lib/mongo/monitoring/command_log_subscriber.rb +38 -14
- data/lib/mongo/monitoring/event/command_started.rb +2 -1
- data/lib/mongo/monitoring/event/command_succeeded.rb +24 -2
- data/lib/mongo/monitoring/event/secure.rb +58 -0
- data/lib/mongo/monitoring/event.rb +1 -0
- data/lib/mongo/monitoring/publishable.rb +22 -12
- data/lib/mongo/monitoring.rb +1 -5
- data/lib/mongo/operation/commands/aggregate/result.rb +89 -0
- data/lib/mongo/operation/commands/aggregate.rb +64 -0
- data/lib/mongo/operation/commands/collections_info/result.rb +41 -0
- data/lib/mongo/operation/{read → commands}/collections_info.rb +5 -3
- data/lib/mongo/operation/commands/command.rb +47 -0
- data/lib/mongo/operation/commands/find/result.rb +62 -0
- data/lib/mongo/operation/commands/find.rb +27 -0
- data/lib/mongo/operation/commands/get_more/result.rb +62 -0
- data/lib/mongo/operation/commands/get_more.rb +27 -0
- data/lib/mongo/operation/{read → commands}/indexes.rb +9 -6
- data/lib/mongo/operation/{list_collections → commands/list_collections}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_collections.rb +4 -32
- data/lib/mongo/operation/{list_indexes → commands/list_indexes}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_indexes.rb +3 -33
- data/lib/mongo/operation/commands/map_reduce/result.rb +119 -0
- data/lib/mongo/operation/commands/map_reduce.rb +49 -0
- data/lib/mongo/operation/commands/parallel_scan/result.rb +64 -0
- data/lib/mongo/operation/commands/parallel_scan.rb +52 -0
- data/lib/mongo/operation/commands/user_query.rb +71 -0
- data/lib/mongo/operation/commands/users_info/result.rb +38 -0
- data/lib/mongo/operation/commands/users_info.rb +48 -0
- data/lib/mongo/operation/commands.rb +26 -0
- data/lib/mongo/operation/executable.rb +4 -68
- data/lib/mongo/operation/kill_cursors.rb +3 -3
- data/lib/mongo/operation/object_id_generator.rb +36 -0
- data/lib/mongo/operation/read/get_more.rb +2 -22
- data/lib/mongo/operation/read/query/result.rb +40 -0
- data/lib/mongo/operation/read/query.rb +4 -21
- data/lib/mongo/operation/read.rb +0 -4
- data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
- data/lib/mongo/operation/result.rb +43 -1
- data/lib/mongo/operation/specifiable.rb +59 -1
- data/lib/mongo/operation/write/bulk/bulkable.rb +83 -0
- data/lib/mongo/operation/write/bulk/delete/result.rb +67 -0
- data/lib/mongo/operation/write/bulk/delete.rb +71 -0
- data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
- data/lib/mongo/operation/write/bulk/insert.rb +96 -0
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
- data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
- data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
- data/lib/mongo/operation/write/bulk/update.rb +81 -0
- data/lib/mongo/operation/write/bulk.rb +6 -3
- data/lib/mongo/operation/write/command/create_index.rb +0 -1
- data/lib/mongo/operation/write/command/create_user.rb +0 -1
- data/lib/mongo/operation/write/command/delete.rb +3 -3
- data/lib/mongo/operation/write/command/drop_index.rb +0 -1
- data/lib/mongo/operation/write/command/insert.rb +4 -3
- data/lib/mongo/operation/write/command/remove_user.rb +0 -1
- data/lib/mongo/operation/write/command/update.rb +6 -4
- data/lib/mongo/operation/write/command/update_user.rb +0 -1
- data/lib/mongo/operation/write/command/writable.rb +13 -18
- data/lib/mongo/operation/write/create_index.rb +4 -27
- data/lib/mongo/operation/write/create_user.rb +4 -30
- data/lib/mongo/operation/write/delete.rb +6 -29
- data/lib/mongo/operation/write/drop_index.rb +3 -3
- data/lib/mongo/operation/write/gle.rb +49 -0
- data/lib/mongo/operation/write/idable.rb +24 -2
- data/lib/mongo/operation/write/insert.rb +2 -24
- data/lib/mongo/operation/write/remove_user.rb +4 -27
- data/lib/mongo/operation/write/update.rb +13 -36
- data/lib/mongo/operation/write/update_user.rb +4 -30
- data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
- data/lib/mongo/operation/write.rb +2 -0
- data/lib/mongo/operation.rb +33 -5
- data/lib/mongo/options/mapper.rb +26 -2
- data/lib/mongo/options/redacted.rb +156 -0
- data/lib/mongo/options.rb +1 -0
- data/lib/mongo/protocol/bit_vector.rb +11 -9
- data/lib/mongo/protocol/delete.rb +78 -3
- data/lib/mongo/protocol/get_more.rb +59 -2
- data/lib/mongo/protocol/insert.rb +73 -1
- data/lib/mongo/protocol/kill_cursors.rb +66 -4
- data/lib/mongo/protocol/message.rb +44 -20
- data/lib/mongo/protocol/query.rb +153 -65
- data/lib/mongo/protocol/reply.rb +92 -1
- data/lib/mongo/protocol/serializers.rb +49 -40
- data/lib/mongo/protocol/update.rb +93 -1
- data/lib/mongo/retryable.rb +101 -0
- data/lib/mongo/server/connectable.rb +28 -8
- data/lib/mongo/server/connection.rb +52 -10
- data/lib/mongo/server/connection_pool/queue.rb +15 -0
- data/lib/mongo/server/connection_pool.rb +12 -15
- data/lib/mongo/server/description/features.rb +4 -2
- data/lib/mongo/server/description.rb +39 -3
- data/lib/mongo/server/monitor/connection.rb +49 -28
- data/lib/mongo/server/monitor.rb +3 -14
- data/lib/mongo/server.rb +31 -4
- data/lib/mongo/server_selector/selectable.rb +58 -32
- data/lib/mongo/server_selector.rb +19 -10
- data/lib/mongo/socket/ssl.rb +4 -1
- data/lib/mongo/socket/tcp.rb +2 -2
- data/lib/mongo/socket/unix.rb +5 -8
- data/lib/mongo/socket.rb +11 -4
- data/lib/mongo/uri.rb +245 -139
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern.rb +21 -6
- data/lib/mongo.rb +4 -4
- data/mongo.gemspec +1 -2
- data/spec/mongo/address/unix_spec.rb +1 -1
- data/spec/mongo/address_spec.rb +25 -0
- data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
- data/spec/mongo/auth/user/view_spec.rb +26 -1
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +284 -0
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
- data/spec/mongo/bulk_write_spec.rb +385 -161
- data/spec/mongo/client_spec.rb +193 -23
- data/spec/mongo/cluster/topology/replica_set_spec.rb +2 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +65 -0
- data/spec/mongo/collection/view/builder/find_command_spec.rb +167 -0
- data/spec/mongo/collection/view/builder/flags_spec.rb +106 -0
- data/spec/mongo/collection/view/builder/modifiers_spec.rb +210 -0
- data/spec/mongo/collection/view/builder/op_query_spec.rb +154 -0
- data/spec/mongo/collection/view/explainable_spec.rb +1 -2
- data/spec/mongo/collection/view/immutable_spec.rb +54 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +104 -9
- data/spec/mongo/collection/view/readable_spec.rb +109 -112
- data/spec/mongo/collection/view_spec.rb +119 -487
- data/spec/mongo/collection_spec.rb +1002 -33
- data/spec/mongo/command_monitoring_spec.rb +64 -0
- data/spec/mongo/connection_string_spec.rb +115 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +160 -0
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +52 -0
- data/spec/mongo/cursor_spec.rb +10 -60
- data/spec/mongo/database_spec.rb +81 -12
- data/spec/mongo/dbref_spec.rb +4 -4
- data/spec/mongo/grid/file/chunk_spec.rb +6 -6
- data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
- data/spec/mongo/grid/file_spec.rb +8 -8
- data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
- data/spec/mongo/grid/stream/read_spec.rb +275 -0
- data/spec/mongo/grid/stream/write_spec.rb +440 -0
- data/spec/mongo/grid/stream_spec.rb +48 -0
- data/spec/mongo/gridfs_spec.rb +50 -0
- data/spec/mongo/index/view_spec.rb +41 -0
- data/spec/mongo/logger_spec.rb +0 -40
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
- data/spec/mongo/monitoring/event/command_started_spec.rb +26 -0
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +26 -0
- data/spec/mongo/monitoring/event/secure_spec.rb +57 -0
- data/spec/mongo/operation/{aggregate → commands/aggregate}/result_spec.rb +1 -1
- data/spec/mongo/operation/commands/aggregate_spec.rb +69 -0
- data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +1 -19
- data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
- data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +1 -19
- data/spec/mongo/operation/kill_cursors_spec.rb +1 -17
- data/spec/mongo/operation/read/get_more_spec.rb +0 -16
- data/spec/mongo/operation/read/query_spec.rb +19 -16
- data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
- data/spec/mongo/operation/result_spec.rb +19 -0
- data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +17 -28
- data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +1 -12
- data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +7 -18
- data/spec/mongo/operation/write/command/delete_spec.rb +18 -9
- data/spec/mongo/operation/write/command/insert_spec.rb +18 -9
- data/spec/mongo/operation/write/command/update_spec.rb +18 -9
- data/spec/mongo/operation/write/delete_spec.rb +3 -3
- data/spec/mongo/operation/write/insert_spec.rb +0 -11
- data/spec/mongo/operation/write/update_spec.rb +6 -6
- data/spec/mongo/options/redacted_spec.rb +350 -0
- data/spec/mongo/protocol/delete_spec.rb +4 -4
- data/spec/mongo/protocol/get_more_spec.rb +4 -4
- data/spec/mongo/protocol/insert_spec.rb +3 -3
- data/spec/mongo/protocol/kill_cursors_spec.rb +8 -6
- data/spec/mongo/protocol/query_spec.rb +21 -7
- data/spec/mongo/protocol/update_spec.rb +5 -5
- data/spec/mongo/retryable_spec.rb +221 -0
- data/spec/mongo/server/connection_pool/queue_spec.rb +16 -0
- data/spec/mongo/server/connection_pool_spec.rb +42 -6
- data/spec/mongo/server/connection_spec.rb +86 -1
- data/spec/mongo/server/description/features_spec.rb +25 -0
- data/spec/mongo/server/description_spec.rb +42 -0
- data/spec/mongo/server/monitor_spec.rb +44 -0
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +25 -59
- data/spec/mongo/server_selection_rtt_spec.rb +37 -57
- data/spec/mongo/server_selection_spec.rb +5 -3
- data/spec/mongo/server_selector/nearest_spec.rb +35 -27
- data/spec/mongo/server_selector/primary_preferred_spec.rb +32 -30
- data/spec/mongo/server_selector/primary_spec.rb +21 -14
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +28 -26
- data/spec/mongo/server_selector/secondary_spec.rb +24 -22
- data/spec/mongo/server_selector_spec.rb +87 -24
- data/spec/mongo/server_spec.rb +78 -15
- data/spec/mongo/socket/ssl_spec.rb +101 -57
- data/spec/mongo/socket/unix_spec.rb +52 -0
- data/spec/mongo/uri_spec.rb +271 -59
- data/spec/mongo/write_concern_spec.rb +126 -0
- data/spec/spec_helper.rb +29 -23
- data/spec/support/authorization.rb +4 -5
- data/spec/support/command_monitoring/bulkWrite.yml +73 -0
- data/spec/support/command_monitoring/command.yml +42 -0
- data/spec/support/command_monitoring/deleteMany.yml +55 -0
- data/spec/support/command_monitoring/deleteOne.yml +55 -0
- data/spec/support/command_monitoring/find.yml +268 -0
- data/spec/support/command_monitoring/insertMany.yml +81 -0
- data/spec/support/command_monitoring/insertOne.yml +51 -0
- data/spec/support/command_monitoring/updateMany.yml +67 -0
- data/spec/support/command_monitoring/updateOne.yml +95 -0
- data/spec/support/command_monitoring.rb +373 -0
- data/spec/support/connection_string.rb +228 -0
- data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
- data/spec/support/connection_string_tests/valid-auth.yml +256 -0
- data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
- data/spec/support/connection_string_tests/valid-options.yml +30 -0
- data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
- data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
- data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
- data/spec/support/crud/read.rb +14 -10
- data/spec/support/crud/write.rb +36 -9
- data/spec/support/crud.rb +10 -2
- data/spec/support/gridfs.rb +637 -0
- data/spec/support/gridfs_tests/delete.yml +157 -0
- data/spec/support/gridfs_tests/download.yml +210 -0
- data/spec/support/gridfs_tests/download_by_name.yml +113 -0
- data/spec/support/gridfs_tests/upload.yml +158 -0
- data/spec/support/matchers.rb +2 -2
- data/spec/support/sdam/rs/equal_electionids.yml +1 -2
- data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -3
- data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
- data/spec/support/sdam/rs/rsother_discovered.yml +24 -3
- data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/stepdown_change_set_name.yml +59 -0
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
- data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
- data/spec/support/sdam/single/not_ok_response.yml +0 -1
- data/spec/support/server_discovery_and_monitoring.rb +3 -1
- data/spec/support/server_selection.rb +3 -1
- data/spec/support/shared/bulk_write.rb +192 -0
- data/spec/support/shared/protocol.rb +5 -5
- data/spec/support/shared/server_selector.rb +78 -13
- data/spec/support/travis.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +211 -72
- metadata.gz.sig +0 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +0 -252
- data/lib/mongo/bulk_write/deletable.rb +0 -57
- data/lib/mongo/bulk_write/insertable.rb +0 -49
- data/lib/mongo/bulk_write/replacable.rb +0 -58
- data/lib/mongo/bulk_write/updatable.rb +0 -69
- data/lib/mongo/grid/fs.rb +0 -146
- data/lib/mongo/operation/aggregate/result.rb +0 -103
- data/lib/mongo/operation/aggregate.rb +0 -108
- data/lib/mongo/operation/command.rb +0 -61
- data/lib/mongo/operation/map_reduce/result.rb +0 -122
- data/lib/mongo/operation/map_reduce.rb +0 -95
- data/lib/mongo/operation/parallel_scan/result.rb +0 -72
- data/lib/mongo/operation/parallel_scan.rb +0 -76
- data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
- data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
- data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
- data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
- data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
- data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -174
- data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
- data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
- data/spec/mongo/grid/fs_spec.rb +0 -160
- data/spec/mongo/loggable_spec.rb +0 -63
- data/spec/mongo/operation/aggregate_spec.rb +0 -127
@@ -0,0 +1,187 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
module Grid
|
17
|
+
class FSBucket
|
18
|
+
|
19
|
+
module Stream
|
20
|
+
# A stream that writes files to the FSBucket.
|
21
|
+
#
|
22
|
+
# @since 2.1.0
|
23
|
+
class Write
|
24
|
+
|
25
|
+
# @return [ FSBucket ] fs The fs bucket to which this stream writes.
|
26
|
+
#
|
27
|
+
# @since 2.1.0
|
28
|
+
attr_reader :fs
|
29
|
+
|
30
|
+
# @return [ BSON::ObjectId ] file_id The id of the file being uploaded.
|
31
|
+
#
|
32
|
+
# @since 2.1.0
|
33
|
+
attr_reader :file_id
|
34
|
+
|
35
|
+
# @return [ String ] filename The name of the file being uploaded.
|
36
|
+
#
|
37
|
+
# @since 2.1.0
|
38
|
+
attr_reader :filename
|
39
|
+
|
40
|
+
# @return [ Hash ] options The write stream options.
|
41
|
+
#
|
42
|
+
# @since 2.1.0
|
43
|
+
attr_reader :options
|
44
|
+
|
45
|
+
# Create a stream for writing files to the FSBucket.
|
46
|
+
#
|
47
|
+
# @example Create the stream.
|
48
|
+
# Stream::Write.new(fs, options)
|
49
|
+
#
|
50
|
+
# @param [ FSBucket ] fs The GridFS bucket object.
|
51
|
+
# @param [ Hash ] options The write stream options.
|
52
|
+
#
|
53
|
+
# @option opts [ Integer ] :chunk_size Override the default chunk size.
|
54
|
+
# @option opts [ Hash ] :write The write concern.
|
55
|
+
# @option opts [ Hash ] :metadata User data for the 'metadata' field of the files collection document.
|
56
|
+
# @option opts [ String ] :content_type The content type of the file.
|
57
|
+
# Deprecated, please use the metadata document instead.
|
58
|
+
# @option opts [ Array<String> ] :aliases A list of aliases.
|
59
|
+
# Deprecated, please use the metadata document instead.
|
60
|
+
#
|
61
|
+
# @since 2.1.0
|
62
|
+
def initialize(fs, options)
|
63
|
+
@fs = fs
|
64
|
+
@length = 0
|
65
|
+
@n = 0
|
66
|
+
@file_id = BSON::ObjectId.new
|
67
|
+
@options = options
|
68
|
+
@filename = @options[:filename]
|
69
|
+
@open = true
|
70
|
+
end
|
71
|
+
|
72
|
+
# Write to the GridFS bucket from the source stream.
|
73
|
+
#
|
74
|
+
# @example Write to GridFS.
|
75
|
+
# stream.write(io)
|
76
|
+
#
|
77
|
+
# @param [ IO ] io The source io stream to upload from.
|
78
|
+
#
|
79
|
+
# @return [ Stream::Write ] self The write stream itself.
|
80
|
+
#
|
81
|
+
# @since 2.1.0
|
82
|
+
def write(io)
|
83
|
+
ensure_open!
|
84
|
+
@indexes ||= ensure_indexes!
|
85
|
+
data = io.read
|
86
|
+
@length += data.length
|
87
|
+
chunks = File::Chunk.split(data, file_info, @n)
|
88
|
+
@n += chunks.size
|
89
|
+
chunks_collection.insert_many(chunks) unless chunks.empty?
|
90
|
+
self
|
91
|
+
end
|
92
|
+
|
93
|
+
# Close the write stream.
|
94
|
+
#
|
95
|
+
# @example Close the stream.
|
96
|
+
# stream.close
|
97
|
+
#
|
98
|
+
# @return [ BSON::ObjectId, Object ] The file id.
|
99
|
+
#
|
100
|
+
# @raise [ Error::ClosedStream ] If the stream is already closed.
|
101
|
+
#
|
102
|
+
# @since 2.1.0
|
103
|
+
def close
|
104
|
+
ensure_open!
|
105
|
+
update_length
|
106
|
+
files_collection.insert_one(file_info)
|
107
|
+
@open = false
|
108
|
+
file_id
|
109
|
+
end
|
110
|
+
|
111
|
+
# Get the write concern used when uploading.
|
112
|
+
#
|
113
|
+
# @example Get the write concern.
|
114
|
+
# stream.write_concern
|
115
|
+
#
|
116
|
+
# @return [ Mongo::WriteConcern ] The write concern.
|
117
|
+
#
|
118
|
+
# @since 2.1.0
|
119
|
+
def write_concern
|
120
|
+
@write_concern ||= @options[:write] ? WriteConcern.get(@options[:write]) :
|
121
|
+
fs.write_concern
|
122
|
+
end
|
123
|
+
|
124
|
+
# Is the stream closed.
|
125
|
+
#
|
126
|
+
# @example Is the stream closed.
|
127
|
+
# stream.closed?
|
128
|
+
#
|
129
|
+
# @return [ true, false ] Whether the stream is closed.
|
130
|
+
#
|
131
|
+
# @since 2.1.0
|
132
|
+
def closed?
|
133
|
+
!@open
|
134
|
+
end
|
135
|
+
|
136
|
+
# Abort the upload by deleting all chunks already inserted.
|
137
|
+
#
|
138
|
+
# @example Abort the write operation.
|
139
|
+
# stream.abort
|
140
|
+
#
|
141
|
+
# @return [ true ] True if the operation was aborted and the stream is closed.
|
142
|
+
#
|
143
|
+
# @since 2.1.0
|
144
|
+
def abort
|
145
|
+
fs.chunks_collection.find(:files_id => file_id).delete_many
|
146
|
+
@open = false || true
|
147
|
+
end
|
148
|
+
|
149
|
+
private
|
150
|
+
|
151
|
+
def chunks_collection
|
152
|
+
with_write_concern(fs.chunks_collection)
|
153
|
+
end
|
154
|
+
|
155
|
+
def files_collection
|
156
|
+
with_write_concern(fs.files_collection)
|
157
|
+
end
|
158
|
+
|
159
|
+
def with_write_concern(collection)
|
160
|
+
if collection.write_concern.options == write_concern.options
|
161
|
+
collection
|
162
|
+
else
|
163
|
+
collection.client.with(write: write_concern.options)[collection.name]
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def update_length
|
168
|
+
file_info.document[:length] = @length
|
169
|
+
end
|
170
|
+
|
171
|
+
def file_info
|
172
|
+
doc = { length: @length, _id: file_id, filename: filename }
|
173
|
+
@file_info ||= File::Info.new(options.merge(doc))
|
174
|
+
end
|
175
|
+
|
176
|
+
def ensure_indexes!
|
177
|
+
fs.send(:ensure_indexes!)
|
178
|
+
end
|
179
|
+
|
180
|
+
def ensure_open!
|
181
|
+
raise Error::ClosedStream.new if closed?
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
require 'mongo/grid/stream/read'
|
16
|
+
require 'mongo/grid/stream/write'
|
17
|
+
|
18
|
+
module Mongo
|
19
|
+
module Grid
|
20
|
+
class FSBucket
|
21
|
+
|
22
|
+
# A stream that reads and writes files from/to the FSBucket.
|
23
|
+
#
|
24
|
+
# @since 2.1.0
|
25
|
+
module Stream
|
26
|
+
extend self
|
27
|
+
|
28
|
+
# The symbol for opening a read stream.
|
29
|
+
#
|
30
|
+
# @since 2.1.0
|
31
|
+
READ_MODE = :r
|
32
|
+
|
33
|
+
# The symbol for opening a write stream.
|
34
|
+
#
|
35
|
+
# @since 2.1.0
|
36
|
+
WRITE_MODE = :w
|
37
|
+
|
38
|
+
# Mapping from mode to stream class.
|
39
|
+
#
|
40
|
+
# @since 2.1.0
|
41
|
+
MODE_MAP = {
|
42
|
+
READ_MODE => Read,
|
43
|
+
WRITE_MODE => Write
|
44
|
+
}.freeze
|
45
|
+
|
46
|
+
# Get a stream for reading/writing files from/to the FSBucket.
|
47
|
+
#
|
48
|
+
# @example Get a stream.
|
49
|
+
# FSBucket::Stream.get(fs, FSBucket::READ_MODE, options)
|
50
|
+
#
|
51
|
+
# @param [ FSBucket ] fs The GridFS bucket object.
|
52
|
+
# @param [ FSBucket::READ_MODE, FSBucket::WRITE_MODE ] mode The stream mode.
|
53
|
+
# @param [ Hash ] options The stream options.
|
54
|
+
#
|
55
|
+
# @return [ Stream::Read, Stream::Write ] The stream object.
|
56
|
+
#
|
57
|
+
# @since 2.1.0
|
58
|
+
def get(fs, mode, options = {})
|
59
|
+
MODE_MAP[mode].new(fs, options)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/mongo/grid.rb
CHANGED
data/lib/mongo/index/view.rb
CHANGED
@@ -56,6 +56,7 @@ module Mongo
|
|
56
56
|
:max => :max,
|
57
57
|
:min => :min,
|
58
58
|
:name => :name,
|
59
|
+
:partial_filter_expression => :partialFilterExpression,
|
59
60
|
:sparse => :sparse,
|
60
61
|
:sphere_version => :'2dsphereIndexVersion',
|
61
62
|
:storage_engine => :storageEngine,
|
@@ -76,7 +77,7 @@ module Mongo
|
|
76
77
|
#
|
77
78
|
# @since 2.0.0
|
78
79
|
def drop_one(name)
|
79
|
-
raise Error::MultiIndexDrop.new if name ==
|
80
|
+
raise Error::MultiIndexDrop.new if name == Index::ALL
|
80
81
|
drop_by_name(name)
|
81
82
|
end
|
82
83
|
|
@@ -89,7 +90,7 @@ module Mongo
|
|
89
90
|
#
|
90
91
|
# @since 2.0.0
|
91
92
|
def drop_all
|
92
|
-
drop_by_name(
|
93
|
+
drop_by_name(Index::ALL)
|
93
94
|
end
|
94
95
|
|
95
96
|
# Creates an index on the collection.
|
@@ -114,6 +115,8 @@ module Mongo
|
|
114
115
|
# a geo index.
|
115
116
|
# @option options [ Integer ] :min (nil) Specify the min latitude and longitude for
|
116
117
|
# a geo index.
|
118
|
+
# @option options [ Hash ] :partial_filter_expression Specify a filter for a partial
|
119
|
+
# index.
|
117
120
|
#
|
118
121
|
# @note Note that the options listed may be subset of those available.
|
119
122
|
# See the MongoDB documentation for a full list of supported options by server version.
|
@@ -179,7 +182,7 @@ module Mongo
|
|
179
182
|
#
|
180
183
|
# @since 2.0.0
|
181
184
|
def each(&block)
|
182
|
-
server = next_primary
|
185
|
+
server = next_primary(false)
|
183
186
|
cursor = Cursor.new(self, send_initial_query(server), server).to_enum
|
184
187
|
cursor.each do |doc|
|
185
188
|
yield doc
|
@@ -229,7 +232,7 @@ module Mongo
|
|
229
232
|
end
|
230
233
|
|
231
234
|
def initial_query_op
|
232
|
-
Operation::
|
235
|
+
Operation::Commands::Indexes.new(indexes_spec)
|
233
236
|
end
|
234
237
|
|
235
238
|
def limit; -1; end
|
data/lib/mongo/index.rb
CHANGED
data/lib/mongo/loggable.rb
CHANGED
@@ -24,105 +24,82 @@ module Mongo
|
|
24
24
|
# @since 2.0.0
|
25
25
|
PREFIX = 'MONGODB'.freeze
|
26
26
|
|
27
|
-
# Log the operations. If a block is provided it will be yielded to,
|
28
|
-
# otherwise only the logging will take place.
|
29
|
-
#
|
30
|
-
# @example Log a query operation.
|
31
|
-
# loggable.log(:debug, "MONGO.query", operations)
|
32
|
-
#
|
33
|
-
# @param [ Symbol ] level The log level.
|
34
|
-
# @param [ String ] prefix The prefix for the log line.
|
35
|
-
# @param [ Array<Object> ] operations The operations to log. The must
|
36
|
-
# respond to #log_message.
|
37
|
-
#
|
38
|
-
# @return [ Object ] The result of the block or nil if no block given.
|
39
|
-
#
|
40
|
-
# @since 2.0.0
|
41
|
-
def log(level, prefix, operations)
|
42
|
-
started = Time.new
|
43
|
-
begin
|
44
|
-
yield(operations) if block_given?
|
45
|
-
rescue Exception => e
|
46
|
-
raise e
|
47
|
-
ensure
|
48
|
-
if Logger.allow?(level)
|
49
|
-
runtime = format("%.4fms", (Time.now.to_f - started.to_f) * 1000.0)
|
50
|
-
operations.each do |operation|
|
51
|
-
Logger.log(level, prefix, log_inspect(operation), runtime)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
27
|
# Convenience method to log debug messages with the standard prefix.
|
58
28
|
#
|
59
29
|
# @example Log a debug message.
|
60
|
-
# log_debug(
|
30
|
+
# log_debug('Message')
|
61
31
|
#
|
62
|
-
# @param [
|
63
|
-
# to log.
|
32
|
+
# @param [ String ] message The message to log.
|
64
33
|
#
|
65
34
|
# @since 2.0.0
|
66
|
-
def log_debug(
|
67
|
-
|
35
|
+
def log_debug(message)
|
36
|
+
logger.debug(format_message(message)) if logger.debug?
|
68
37
|
end
|
69
38
|
|
70
39
|
# Convenience method to log error messages with the standard prefix.
|
71
40
|
#
|
72
41
|
# @example Log a error message.
|
73
|
-
# log_error(
|
42
|
+
# log_error('Message')
|
74
43
|
#
|
75
|
-
# @param [
|
76
|
-
# to log.
|
44
|
+
# @param [ String ] message The message to log.
|
77
45
|
#
|
78
46
|
# @since 2.0.0
|
79
|
-
def log_error(
|
80
|
-
|
47
|
+
def log_error(message)
|
48
|
+
logger.error(format_message(message)) if logger.error?
|
81
49
|
end
|
82
50
|
|
83
51
|
# Convenience method to log fatal messages with the standard prefix.
|
84
52
|
#
|
85
53
|
# @example Log a fatal message.
|
86
|
-
# log_fatal(
|
54
|
+
# log_fatal('Message')
|
87
55
|
#
|
88
|
-
# @param [
|
89
|
-
# to log.
|
56
|
+
# @param [ String ] message The message to log.
|
90
57
|
#
|
91
58
|
# @since 2.0.0
|
92
|
-
def log_fatal(
|
93
|
-
|
59
|
+
def log_fatal(message)
|
60
|
+
logger.fatal(format_message(message)) if logger.fatal?
|
94
61
|
end
|
95
62
|
|
96
63
|
# Convenience method to log info messages with the standard prefix.
|
97
64
|
#
|
98
65
|
# @example Log a info message.
|
99
|
-
# log_info(
|
66
|
+
# log_info('Message')
|
100
67
|
#
|
101
|
-
# @param [
|
102
|
-
# to log.
|
68
|
+
# @param [ String ] message The message to log.
|
103
69
|
#
|
104
70
|
# @since 2.0.0
|
105
|
-
def log_info(
|
106
|
-
|
71
|
+
def log_info(message)
|
72
|
+
logger.info(format_message(message)) if logger.info?
|
107
73
|
end
|
108
74
|
|
109
75
|
# Convenience method to log warn messages with the standard prefix.
|
110
76
|
#
|
111
77
|
# @example Log a warn message.
|
112
|
-
# log_warn(
|
78
|
+
# log_warn('Message')
|
113
79
|
#
|
114
|
-
# @param [
|
115
|
-
# to log.
|
80
|
+
# @param [ String ] message The message to log.
|
116
81
|
#
|
117
82
|
# @since 2.0.0
|
118
|
-
def log_warn(
|
119
|
-
|
83
|
+
def log_warn(message)
|
84
|
+
logger.warn(format_message(message)) if logger.warn?
|
85
|
+
end
|
86
|
+
|
87
|
+
# Get the logger instance.
|
88
|
+
#
|
89
|
+
# @example Get the logger instance.
|
90
|
+
# loggable.logger
|
91
|
+
#
|
92
|
+
# @return [ Logger ] The logger.
|
93
|
+
#
|
94
|
+
# @since 2.1.0
|
95
|
+
def logger
|
96
|
+
((options && options[:logger]) || Logger.logger)
|
120
97
|
end
|
121
98
|
|
122
99
|
private
|
123
100
|
|
124
|
-
def
|
125
|
-
|
101
|
+
def format_message(message)
|
102
|
+
format("%s | %s".freeze, PREFIX, message)
|
126
103
|
end
|
127
104
|
end
|
128
105
|
end
|
data/lib/mongo/logger.rb
CHANGED
@@ -23,76 +23,6 @@ module Mongo
|
|
23
23
|
|
24
24
|
class << self
|
25
25
|
|
26
|
-
# Log a debug level message.
|
27
|
-
#
|
28
|
-
# @example Log a debug level message.
|
29
|
-
# Logger.debug('mongo', 'message', '10ms')
|
30
|
-
#
|
31
|
-
# @param [ String ] prefix The category prefix.
|
32
|
-
# @param [ String ] message The log message.
|
33
|
-
# @param [ String ] runtime The time of the operation.
|
34
|
-
#
|
35
|
-
# @since 2.0.0
|
36
|
-
def debug(prefix, message, runtime)
|
37
|
-
self.log(:debug, prefix, message, runtime)
|
38
|
-
end
|
39
|
-
|
40
|
-
# Log a error level message.
|
41
|
-
#
|
42
|
-
# @example Log a error level message.
|
43
|
-
# Logger.error('mongo', 'message', '10ms')
|
44
|
-
#
|
45
|
-
# @param [ String ] prefix The category prefix.
|
46
|
-
# @param [ String ] message The log message.
|
47
|
-
# @param [ String ] runtime The time of the operation.
|
48
|
-
#
|
49
|
-
# @since 2.0.0
|
50
|
-
def error(prefix, message, runtime)
|
51
|
-
self.log(:error, prefix, message, runtime)
|
52
|
-
end
|
53
|
-
|
54
|
-
# Log a fatal level message.
|
55
|
-
#
|
56
|
-
# @example Log a fatal level message.
|
57
|
-
# Logger.fatal('mongo', 'message', '10ms')
|
58
|
-
#
|
59
|
-
# @param [ String ] prefix The category prefix.
|
60
|
-
# @param [ String ] message The log message.
|
61
|
-
# @param [ String ] runtime The time of the operation.
|
62
|
-
#
|
63
|
-
# @since 2.0.0
|
64
|
-
def fatal(prefix, message, runtime)
|
65
|
-
self.log(:fatal, prefix, message, runtime)
|
66
|
-
end
|
67
|
-
|
68
|
-
# Log a info level message.
|
69
|
-
#
|
70
|
-
# @example Log a info level message.
|
71
|
-
# Logger.info('mongo', 'message', '10ms')
|
72
|
-
#
|
73
|
-
# @param [ String ] prefix The category prefix.
|
74
|
-
# @param [ String ] message The log message.
|
75
|
-
# @param [ String ] runtime The time of the operation.
|
76
|
-
#
|
77
|
-
# @since 2.0.0
|
78
|
-
def info(prefix, message, runtime)
|
79
|
-
self.log(:info, prefix, message, runtime)
|
80
|
-
end
|
81
|
-
|
82
|
-
# Log a warn level message.
|
83
|
-
#
|
84
|
-
# @example Log a warn level message.
|
85
|
-
# Logger.warn('mongo', 'message', '10ms')
|
86
|
-
#
|
87
|
-
# @param [ String ] prefix The category prefix.
|
88
|
-
# @param [ String ] message The log message.
|
89
|
-
# @param [ String ] runtime The time of the operation.
|
90
|
-
#
|
91
|
-
# @since 2.0.0
|
92
|
-
def warn(prefix, message, runtime)
|
93
|
-
self.log(:warn, prefix, message, runtime)
|
94
|
-
end
|
95
|
-
|
96
26
|
# Get the wrapped logger. If none was set will return a default debug
|
97
27
|
# level logger.
|
98
28
|
#
|
@@ -120,18 +50,26 @@ module Mongo
|
|
120
50
|
@logger = other
|
121
51
|
end
|
122
52
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
53
|
+
# Get the global logger level.
|
54
|
+
#
|
55
|
+
# @example Get the global logging level.
|
56
|
+
# Mongo::Logger.level
|
57
|
+
#
|
58
|
+
# @return [ Integer ] The log level.
|
59
|
+
#
|
60
|
+
# @since 2.0.0
|
131
61
|
def level
|
132
62
|
logger.level
|
133
63
|
end
|
134
64
|
|
65
|
+
# Set the global logger level.
|
66
|
+
#
|
67
|
+
# @example Set the global logging level.
|
68
|
+
# Mongo::Logger.level == Logger::DEBUG
|
69
|
+
#
|
70
|
+
# @return [ Integer ] The log level.
|
71
|
+
#
|
72
|
+
# @since 2.0.0
|
135
73
|
def level=(level)
|
136
74
|
logger.level = level
|
137
75
|
end
|
@@ -19,6 +19,10 @@ module Mongo
|
|
19
19
|
#
|
20
20
|
# @since 2.1.0
|
21
21
|
class CommandLogSubscriber
|
22
|
+
include Loggable
|
23
|
+
|
24
|
+
# @return [ Hash ] options The options.
|
25
|
+
attr_reader :options
|
22
26
|
|
23
27
|
# Constant for the max number of characters to print when inspecting
|
24
28
|
# a query field.
|
@@ -26,6 +30,20 @@ module Mongo
|
|
26
30
|
# @since 2.1.0
|
27
31
|
LOG_STRING_LIMIT = 250
|
28
32
|
|
33
|
+
# Create the new log subscriber.
|
34
|
+
#
|
35
|
+
# @example Create the log subscriber.
|
36
|
+
# CommandLogSubscriber.new
|
37
|
+
#
|
38
|
+
# @param [ Hash ] options The options.
|
39
|
+
#
|
40
|
+
# @option options [ Logger ] :logger An optional custom logger.
|
41
|
+
#
|
42
|
+
# @since 2.1.0
|
43
|
+
def initialize(options = {})
|
44
|
+
@options = options
|
45
|
+
end
|
46
|
+
|
29
47
|
# Handle the command started event.
|
30
48
|
#
|
31
49
|
# @example Handle the event.
|
@@ -35,8 +53,8 @@ module Mongo
|
|
35
53
|
#
|
36
54
|
# @since 2.1.0
|
37
55
|
def started(event)
|
38
|
-
if
|
39
|
-
|
56
|
+
if logger.debug?
|
57
|
+
log_debug("#{prefix(event)} | STARTED | #{format_command(event.command)}")
|
40
58
|
end
|
41
59
|
end
|
42
60
|
|
@@ -49,8 +67,8 @@ module Mongo
|
|
49
67
|
#
|
50
68
|
# @since 2.1.0
|
51
69
|
def succeeded(event)
|
52
|
-
if
|
53
|
-
|
70
|
+
if logger.debug?
|
71
|
+
log_debug("#{prefix(event)} | SUCCEEDED | #{event.duration}s")
|
54
72
|
end
|
55
73
|
end
|
56
74
|
|
@@ -63,25 +81,31 @@ module Mongo
|
|
63
81
|
#
|
64
82
|
# @since 2.1.0
|
65
83
|
def failed(event)
|
66
|
-
if
|
67
|
-
|
84
|
+
if logger.debug?
|
85
|
+
log_debug("#{prefix(event)} | FAILED | #{event.message} | #{event.duration}s")
|
68
86
|
end
|
69
87
|
end
|
70
88
|
|
71
89
|
private
|
72
90
|
|
73
|
-
def
|
74
|
-
|
75
|
-
|
76
|
-
|
91
|
+
def format_command(args)
|
92
|
+
begin
|
93
|
+
truncating? ? truncate(args) : args.inspect
|
94
|
+
rescue Exception
|
95
|
+
'<Unable to inspect arguments>'
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def prefix(event)
|
100
|
+
"#{event.address.to_s} | #{event.database_name}.#{event.command_name}"
|
77
101
|
end
|
78
102
|
|
79
|
-
def
|
80
|
-
|
103
|
+
def truncate(command)
|
104
|
+
((s = command.inspect).length > LOG_STRING_LIMIT) ? "#{s[0..LOG_STRING_LIMIT]}..." : s
|
81
105
|
end
|
82
106
|
|
83
|
-
def
|
84
|
-
|
107
|
+
def truncating?
|
108
|
+
@truncating ||= (options[:truncate_logs] != false)
|
85
109
|
end
|
86
110
|
end
|
87
111
|
end
|
@@ -20,6 +20,7 @@ module Mongo
|
|
20
20
|
#
|
21
21
|
# @since 2.1.0
|
22
22
|
class CommandStarted
|
23
|
+
include Secure
|
23
24
|
|
24
25
|
# @return [ Server::Address ] address The server address.
|
25
26
|
attr_reader :address
|
@@ -57,7 +58,7 @@ module Mongo
|
|
57
58
|
@address = address
|
58
59
|
@request_id = request_id
|
59
60
|
@operation_id = operation_id
|
60
|
-
@command = command
|
61
|
+
@command = redacted(command_name, command)
|
61
62
|
end
|
62
63
|
|
63
64
|
# Create the event from a wire protocol message payload.
|