Skip to content

Commit 747de8f

Browse files
Update based on comments
1 parent 68120f2 commit 747de8f

File tree

7 files changed

+28
-21
lines changed

7 files changed

+28
-21
lines changed

ansible/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ ansible-playbook -i environments/$ENVIRONMENT routemgmt.yml
198198

199199
### Deploying Using MongoDB
200200

201-
You can choose MongoDB instead of CouchDB as the database backend to store entities and activations.
201+
You can choose MongoDB instead of CouchDB as the database backend to store entities.
202202

203203
- Deploy a mongodb server(Optional, for test and develop only, use an external MongoDB server in production)
204204

ansible/group_vars/all

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,6 @@ elasticsearch_connect_string: "{% set ret = [] %}\
329329
{{ ret | join(',') }}"
330330
mongodb:
331331
version: 4.4.0
332-
commonEnv:
333-
CONFIG_whisk_mongodb_uri: "{{ db.mongodb.connect_string }}"
334-
CONFIG_whisk_mongodb_database: "{{ db.mongodb.database }}"
335-
CONFIG_whisk_spi_ArtifactStoreProvider: "org.apache.openwhisk.core.database.mongodb.MongoDBArtifactStoreProvider"
336332

337333
docker:
338334
# The user to install docker for. Defaults to the ansible user if not set. This will be the user who is able to run

ansible/roles/controller/tasks/deploy.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,9 +292,17 @@
292292
env: "{{ env | combine(elastic_env) }}"
293293
when: db.activation_store.backend == "ElasticSearch"
294294

295-
- name: merge mongodb env variables
295+
- name: setup mongodb artifact store env
296296
set_fact:
297-
env: "{{ env | combine(mongodb.commonEnv) }}"
297+
mongodb_env:
298+
"CONFIG_whisk_mongodb_uri": "{{ db.mongodb.connect_string }}"
299+
"CONFIG_whisk_mongodb_database": "{{ db.mongodb.database }}"
300+
"CONFIG_whisk_spi_ArtifactStoreProvider": "org.apache.openwhisk.core.database.mongodb.MongoDBArtifactStoreProvider"
301+
when: db.backend == "MongoDB"
302+
303+
- name: merge mongodb artifact store env
304+
set_fact:
305+
env: "{{ env | combine(mongodb_env) }}"
298306
when: db.backend == "MongoDB"
299307

300308
- name: populate volumes for controller

ansible/roles/invoker/tasks/deploy.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,9 +307,17 @@
307307
env: "{{ env | combine(elastic_env) }}"
308308
when: db.activation_store.backend == "ElasticSearch"
309309

310-
- name: merge mongodb env variables
310+
- name: setup mongodb artifact store env
311311
set_fact:
312-
env: "{{ env | combine(mongodb.commonEnv) }}"
312+
mongodb_env:
313+
"CONFIG_whisk_mongodb_uri": "{{ db.mongodb.connect_string }}"
314+
"CONFIG_whisk_mongodb_database": "{{ db.mongodb.database }}"
315+
"CONFIG_whisk_spi_ArtifactStoreProvider": "org.apache.openwhisk.core.database.mongodb.MongoDBArtifactStoreProvider"
316+
when: db.backend == "MongoDB"
317+
318+
- name: merge mongodb artifact store env
319+
set_fact:
320+
env: "{{ env | combine(mongodb_env) }}"
313321
when: db.backend == "MongoDB"
314322

315323
- name: include plugins

ansible/roles/mongodb/tasks/clean.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,3 @@
2222
name: mongodb
2323
state: absent
2424
keep_volumes: False
25-
26-
- name: remove MongoDB data volume
27-
docker_volume:
28-
name: "{{ db.mongodb.data_volume }}"
29-
state: absent

common/scala/src/main/scala/org/apache/openwhisk/core/database/mongodb/MongoDBArtifactStore.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
package org.apache.openwhisk.core.database.mongodb
1919

20-
import java.security.MessageDigest
21-
2220
import akka.actor.ActorSystem
2321
import akka.event.Logging.ErrorLevel
2422
import akka.http.scaladsl.model._
@@ -81,7 +79,7 @@ class MongoDBArtifactStore[DocumentAbstraction <: DocumentSerializer](client: Mo
8179
val attachmentScheme: String = attachmentStore.map(_.scheme).getOrElse(mongodbScheme)
8280

8381
private val database = client.getDatabase(dbName)
84-
private val collection = getCollectionAndCreateIndexes
82+
private val collection = getCollectionAndCreateIndexes()
8583
private val gridFSBucket = GridFSBucket(database, collName)
8684

8785
private val jsonWriteSettings = JsonWriterSettings.builder().outputMode(JsonMode.RELAXED).build
@@ -129,6 +127,7 @@ class MongoDBArtifactStore[DocumentAbstraction <: DocumentSerializer](client: Mo
129127
DocInfo(DocId(id), DocRevision(rev))
130128
}
131129
.recover {
130+
// E11000 means a duplicate key error
132131
case t: MongoException if t.getCode == 11000 =>
133132
transid.finished(this, start, s"[PUT] '$dbName', document: '$docinfoStr'; conflict.")
134133
throw DocumentConflictException("conflict on 'put'")
@@ -570,8 +569,9 @@ class MongoDBArtifactStore[DocumentAbstraction <: DocumentSerializer](client: Mo
570569

571570
// calculate the revision manually, to be compatible with couchdb's _rev field
572571
private def revisionCalculate(doc: JsObject): (String, String) = {
573-
val md: MessageDigest = MessageDigest.getInstance("MD5")
574-
val new_rev = md.digest(doc.toString.getBytes()).map(0xFF & _).map { "%02x".format(_) }.foldLeft("") { _ + _ }
572+
val md = StoreUtils.emptyDigest()
573+
val new_rev =
574+
md.digest(doc.toString.getBytes()).map(0xFF & _).map { "%02x".format(_) }.foldLeft("") { _ + _ }.take(32)
575575
doc.fields
576576
.get("_rev")
577577
.map { value =>
@@ -615,7 +615,7 @@ class MongoDBArtifactStore[DocumentAbstraction <: DocumentSerializer](client: Mo
615615
.getOrElse(name)
616616
}
617617

618-
private def getCollectionAndCreateIndexes: MongoCollection[Document] = {
618+
private def getCollectionAndCreateIndexes(): MongoCollection[Document] = {
619619
val coll = database.getCollection(collName)
620620
// create indexes in specific collection if they do not exist
621621
coll.listIndexes().toFuture().map { idxes =>

common/scala/src/main/scala/org/apache/openwhisk/core/database/mongodb/MongoDBArtifactStoreProvider.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import spray.json.RootJsonFormat
3232
import scala.reflect.ClassTag
3333

3434
case class MongoDBConfig(uri: String, database: String) {
35-
assume(Set(database, uri).forall(_.nonEmpty), "At least one expected property is missing")
35+
assume(Set(database, uri).forall(_.trim.nonEmpty), "At least one expected property is missing")
3636

3737
def collectionFor[D](implicit tag: ClassTag[D]) = tag.runtimeClass.getSimpleName.toLowerCase
3838
}

0 commit comments

Comments
 (0)