embulk-output-aerospike 0.3.1 → 0.3.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
- data/build.gradle +1 -1
- data/src/main/scala/org/embulk/output/aerospike/AerospikePageOutput.scala +49 -37
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4a1acaffea6df8cbf6035f159eed41ca0309754
|
4
|
+
data.tar.gz: e663c8a6e0d909ecb991eeffc75e8565491b4ea0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe02878851b13d8fc585d93298f90436aedef1135c1b87cc5c90ea0fe01854ba019761189acd8fb20458f369058bc1702727a7e47bdc55d8eb73bc72c639ccae
|
7
|
+
data.tar.gz: 2482bb08fa0d7956ea94027f68311b17d4fcde9a260015ac49339ceb92d8c01792ede4c1bcec10c3931e4a15f675ff35b815301849762b71b2c598e610420cbd
|
data/build.gradle
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
package org.embulk.output.aerospike
|
2
2
|
|
3
|
+
import java.util.concurrent.{ CountDownLatch, ConcurrentLinkedQueue }
|
3
4
|
import java.util.concurrent.atomic.AtomicLong
|
4
5
|
|
5
6
|
import aerospiker._
|
@@ -16,6 +17,7 @@ import org.embulk.spi.time.Timestamp
|
|
16
17
|
import scala.collection.concurrent.TrieMap
|
17
18
|
import scala.collection.mutable.{ Map => MMap, ListBuffer }
|
18
19
|
import scala.collection.JavaConversions._
|
20
|
+
import scalaz.{ \/-, -\/ }
|
19
21
|
import scalaz.concurrent.Task
|
20
22
|
import scalaz.stream._
|
21
23
|
|
@@ -134,53 +136,63 @@ class AerospikePageOutput(taskSource: TaskSource, schema: Schema, taskIndex: Int
|
|
134
136
|
}
|
135
137
|
|
136
138
|
val updater: Sink[Task, Seq[Map[String, Any]]] = sink.lift[Task, Seq[Map[String, Any]]] { records =>
|
137
|
-
val
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
139
|
+
val latch = new CountDownLatch(records.size)
|
140
|
+
val queue = new ConcurrentLinkedQueue[Throwable Xor String]()
|
141
|
+
records foreach { record =>
|
142
|
+
val keyObj = record.getOrElse(tsk.getKeyName.get, "")
|
143
|
+
val deRec = record - tsk.getKeyName.get
|
144
|
+
if (tsk.getSingleBinName.isPresent)
|
145
|
+
aerospike.put(keyObj.toString, Map(tsk.getSingleBinName.get() -> deRec)) runAsync {
|
146
|
+
case -\/(e) => queue.add(Xor.left(e)); latch.countDown()
|
147
|
+
case \/-(r) => queue.add(r); latch.countDown()
|
148
|
+
}
|
149
|
+
else
|
150
|
+
aerospike.put(keyObj.toString, deRec) runAsync {
|
151
|
+
case -\/(e) => queue.add(Xor.left(e)); latch.countDown()
|
152
|
+
case \/-(r) => queue.add(r); latch.countDown()
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
latch.await()
|
147
157
|
|
148
158
|
Task.delay {
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
successCount.addAndGet(1L)
|
161
|
-
}
|
159
|
+
queue foreach {
|
160
|
+
case Left(e @ PutError(key, cause)) =>
|
161
|
+
log.error(e.toString, e)
|
162
|
+
failures += key -> cause.getMessage
|
163
|
+
failCount.addAndGet(1L)
|
164
|
+
case Left(e) =>
|
165
|
+
log.error(e.toString, e)
|
166
|
+
failures += e.getMessage -> e.getMessage
|
167
|
+
failCount.addAndGet(1L)
|
168
|
+
case Right(_) =>
|
169
|
+
successCount.addAndGet(1L)
|
162
170
|
}
|
163
171
|
}
|
164
172
|
}
|
165
173
|
|
166
174
|
val deleter: Sink[Task, Seq[Map[String, Any]]] = sink.lift[Task, Seq[Map[String, Any]]] { records =>
|
167
|
-
val
|
168
|
-
|
169
|
-
|
170
|
-
|
175
|
+
val latch = new CountDownLatch(records.size)
|
176
|
+
val queue = new ConcurrentLinkedQueue[DeleteError Xor Boolean]()
|
177
|
+
records foreach { record =>
|
178
|
+
val keyObj = record.getOrElse(tsk.getKeyName.get, "")
|
179
|
+
val key = keyObj.toString
|
180
|
+
aerospike.delete(key) runAsync {
|
181
|
+
case -\/(e) => queue.add(Xor.left(DeleteError(key, e))); latch.countDown()
|
182
|
+
case \/-(r) => queue.add(r); latch.countDown()
|
171
183
|
}
|
172
|
-
}
|
184
|
+
}
|
185
|
+
|
186
|
+
latch.await()
|
173
187
|
|
174
188
|
Task.delay {
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
successCount.addAndGet(1L)
|
183
|
-
}
|
189
|
+
queue foreach {
|
190
|
+
case Left(DeleteError(key, cause)) =>
|
191
|
+
log.error(key, cause)
|
192
|
+
failures += key -> cause.getMessage
|
193
|
+
failCount.addAndGet(1L)
|
194
|
+
case Right(_) =>
|
195
|
+
successCount.addAndGet(1L)
|
184
196
|
}
|
185
197
|
}
|
186
198
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-output-aerospike
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takeru Sato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -77,7 +77,7 @@ files:
|
|
77
77
|
- classpath/circe-jawn_2.11-0.1.1.jar
|
78
78
|
- classpath/commons-math3-3.2.jar
|
79
79
|
- classpath/discipline_2.11-0.3.jar
|
80
|
-
- classpath/embulk-output-aerospike-0.3.
|
80
|
+
- classpath/embulk-output-aerospike-0.3.2.jar
|
81
81
|
- classpath/gnu-crypto-2.0.1.jar
|
82
82
|
- classpath/jawn-parser_2.11-0.8.0.jar
|
83
83
|
- classpath/jbcrypt-0.3m.jar
|