mongo_mapper_parallel 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +8 -8
  2. data/lib/mongo_mapper_parallel.rb +9 -3
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MDBhNGRmMmVmYjRiZjFjNTgzODcwZjRjOWEwMjFhZmUyNDI3MzZiOA==
4
+ NGI5YTdhNzg5N2YwNzhiMzRlZDdkMzEzZmZjMzZiNGYxZGRlY2U0Mg==
5
5
  data.tar.gz: !binary |-
6
- ZDgwNjIwMDFlZGNkMGUyMzlmMTdmY2U1MTVlOWI3NjNlOGViNjE1Mg==
6
+ M2RjZDU0NDY0M2ZhNWM4MmIxMWRiZjY4ODJhYjk1M2VmZWE0OWFjYg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MmI5Zjk1ZmQwYTk0ZjAxMmQ1NDA5NmYzMzIxZGMyYzI3YmYwMWQxNTdjNjM2
10
- ODIwZTdkMzA4OWYzYjNjNWI4MDA0MmY0NDZjYjRmYWE3OTg1MWI2NjU4OGFm
11
- MmIwMTdmNGVlZDAzZmJkZDc5MmZjYmE0ZWU4ZTk1NmU0ZTJkNzA=
9
+ ODA2NmJkOWI4MTY3ZTkwNzkyZDY1OTM3ODExNWEyNjE1MjUzODc0YWFhY2M0
10
+ ZmE0NGZmNTlmNWNlNTU2MDBkZDlhYzFkMTM3ZGJlZDQzNGFkMmYxODQ2Mzgw
11
+ NGRhZmM2OTg5OWVlNzFhM2VlMmJhMzZhMTU1OTM4ZDIyZDliNGY=
12
12
  data.tar.gz: !binary |-
13
- YjAyOTdhYTM2ZTdlNzgwYjgxYTNlODk4MTFkMjUyZjI1YTY5OTIxMmEzOTll
14
- MzExZjMwYmVjNjNmMGQ0OTBiNTEyZjg4MjM3OGJiYzlkMGU2MGU1MDlhZDhm
15
- MWRmOTU3MjQ4YzIyY2ZhZWM2MmVjODE5NGVlMzBjYTkzNGFlYWY=
13
+ MTQwZmJkODk3MjI2MThiYjJiZGQ1OGIxYzExOTNlNDEyZTRjZmZlN2Y0YTA4
14
+ YTc4MDQxNmVkMGUwNzljNGRlYTNjMTkyYzEwNWEzYmRkMmVmNjAyN2U4Njhh
15
+ MDY2MTQ5MzAxZDIyNmQ1YzFhYmI3ODIwNGQ5NjZiZWEzNDQzYzI=
@@ -71,12 +71,18 @@ class MongoMapperParallel
71
71
  end
72
72
  end
73
73
 
74
+ # Obtains the first key
75
+ # @return [Object] the first split key.
76
+ def get_first_split_key
77
+ @command_class.where().order(@split.to_sym).fields(@split.to_sym).first.send(@split.to_sym)
78
+ end
79
+
74
80
  # Obtains the splitVectors keys to find chunks to parallelize via the MongoDB `splitVector` command.
75
81
  #
76
82
  # @return [Array<MongoMapperParallel::Key>] the list of the keys that will be used for parallel operation
77
- #
78
83
  def get_split_keys
79
84
  @split_keys, splits = [], @command_class.database.command({splitVector: "#{@command_class.database.name}.#{@command_class.collection.name}", keyPattern: {@split.to_sym => 1}, maxChunkSizeBytes: @splitSize })["splitKeys"]
85
+ splits.unshift({@split.to_s => get_first_split_key})
80
86
  splits.each_with_index do |split_key,k|
81
87
  @split_keys << MongoMapperParallel::Key.new(:position => k, :compiler => self, :key => split_key[@split.to_s], :future_key => (splits[k+1] ? splits[k+1][@split.to_s] : nil),:debug => @debug)
82
88
  end
@@ -87,8 +93,8 @@ class MongoMapperParallel
87
93
  #
88
94
  # @return [Array<MongoMapperParallel::Key>] the list of the keys that will be used for parallel operation
89
95
  def get_extreme_split_keys
90
- split_key = @command_class.where().order(@split.to_sym).fields(@split.to_sym).first.send(@split.to_sym)
91
- @split_keys << MongoMapperParallel::Key.new(:position => 0, :compiler => self, :key => split_key, :future_key => nil, :debug => @debug)
96
+ first_split_key = get_first_split_key
97
+ @split_keys << MongoMapperParallel::Key.new(:position => 0, :compiler => self, :key => first_split_key, :future_key => nil, :debug => @debug)
92
98
  end
93
99
 
94
100
  # Instantiates the parallel operation object with the right class, javascript function, and field
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_mapper_parallel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Raiman