Skip to content

Commit 4712a68

Browse files
committed
RUBY-133 maximum insert size
1 parent 62d917e commit 4712a68

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

lib/mongo/collection.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,8 @@ def insert_documents(documents, collection_name=@name, check_keys=true, safe=fal
670670
message = BSON::ByteBuffer.new([0, 0, 0, 0])
671671
BSON::BSON_RUBY.serialize_cstr(message, "#{@db.name}.#{collection_name}")
672672
documents.each { |doc| message.put_array(BSON::BSON_CODER.serialize(doc, check_keys, true).to_a) }
673+
raise InvalidOperation, "Exceded maximum insert size of 16,000,000 bytes" if message.size > 16_000_000
674+
673675
if safe
674676
@connection.send_message_with_safe_check(Mongo::Constants::OP_INSERT, message, @db.name,
675677
"#{@db.name}['#{collection_name}'].insert(#{documents.inspect})", safe)

test/collection_test.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,17 @@ def test_safe_insert
115115
end
116116
end
117117

118+
def test_maximum_insert_size
119+
docs = []
120+
16.times do
121+
docs << {'foo' => 'a' * 1_000_000}
122+
end
123+
124+
assert_raise InvalidOperation do
125+
@@test.insert(docs)
126+
end
127+
end
128+
118129
if @@version >= "1.5.1"
119130
def test_safe_mode_with_advanced_safe_with_invalid_options
120131
assert_raise_error ArgumentError, "Unknown key(s): wtime" do

0 commit comments

Comments
 (0)