Repository: eagle Updated Branches: refs/heads/master 278fe87b1 -> 271fa7ff5
[EAGLE-911]: Have mongo metadata dbname configurable Support configurable database for mongo metadata implementation, this would help to ease prod migration (use a test db first) Author: ralphsu This closes #819 Project: http://git-wip-us.apache.org/repos/asf/eagle/repo Commit: http://git-wip-us.apache.org/repos/asf/eagle/commit/271fa7ff Tree: http://git-wip-us.apache.org/repos/asf/eagle/tree/271fa7ff Diff: http://git-wip-us.apache.org/repos/asf/eagle/diff/271fa7ff Branch: refs/heads/master Commit: 271fa7ff56897d8d148c25896284cf835ca7fac4 Parents: 278fe87 Author: Ralph, Su <[email protected]> Authored: Sun Feb 19 00:53:24 2017 +0800 Committer: Ralph, Su <[email protected]> Committed: Wed Feb 22 07:49:31 2017 +0800 ---------------------------------------------------------------------- .../eagle/alert/metadata/MetadataUtils.java | 15 ++-- .../metadata/impl/MongoMetadataDaoImpl.java | 74 ++++++++++++-------- .../src/test/resources/application-mongo.conf | 1 + 3 files changed, 55 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/eagle/blob/271fa7ff/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java index 658703a..30868b5 100644 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java +++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java @@ -18,20 +18,20 @@ package org.apache.eagle.alert.metadata; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + import org.apache.eagle.alert.coordination.model.ScheduleState; import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment; -import org.apache.eagle.alert.engine.coordinator.PublishmentType; import org.apache.eagle.alert.engine.coordinator.StreamDefinition; -import com.typesafe.config.Config; import org.apache.eagle.alert.engine.model.AlertPublishEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; +import com.typesafe.config.Config; public class MetadataUtils { @@ -45,6 +45,7 @@ public class MetadataUtils { public static final String JDBC_CONNECTION_PATH = "jdbc.connection"; public static final String JDBC_CONNECTION_PROPERTIES_PATH = "jdbc.connectionProperties"; public static final String MONGO_CONNECTION_PATH = "mongo.connection"; + public static final String MONGO_DATABASE = "mongo.database"; public static <T> String getKey(T t) { if (t instanceof StreamDefinition) { http://git-wip-us.apache.org/repos/asf/eagle/blob/271fa7ff/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java index e747d23..2325f90 100644 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java +++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java @@ -16,34 +16,37 @@ */ package org.apache.eagle.alert.metadata.impl; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.inject.Inject; -import com.mongodb.Block; -import com.mongodb.Function; -import com.mongodb.MongoClient; -import com.mongodb.MongoClientURI; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; -import com.mongodb.client.MongoIterable; -import com.mongodb.client.model.CreateCollectionOptions; -import com.mongodb.client.model.IndexOptions; -import com.mongodb.client.model.UpdateOptions; -import com.mongodb.client.result.DeleteResult; -import com.mongodb.client.result.UpdateResult; -import com.typesafe.config.Config; -import org.apache.eagle.alert.coordination.model.*; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.apache.eagle.alert.coordination.model.AlertBoltSpec; +import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata; +import org.apache.eagle.alert.coordination.model.PublishSpec; +import org.apache.eagle.alert.coordination.model.RouterSpec; +import org.apache.eagle.alert.coordination.model.ScheduleState; +import org.apache.eagle.alert.coordination.model.SpoutSpec; +import org.apache.eagle.alert.coordination.model.VersionedPolicyDefinition; +import org.apache.eagle.alert.coordination.model.VersionedStreamDefinition; import org.apache.eagle.alert.coordination.model.internal.MonitoredStream; import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment; import org.apache.eagle.alert.coordination.model.internal.ScheduleStateBase; import org.apache.eagle.alert.coordination.model.internal.Topology; -import org.apache.eagle.alert.engine.coordinator.*; +import org.apache.eagle.alert.engine.coordinator.PolicyDefinition; +import org.apache.eagle.alert.engine.coordinator.Publishment; +import org.apache.eagle.alert.engine.coordinator.PublishmentType; +import org.apache.eagle.alert.engine.coordinator.StreamDefinition; +import org.apache.eagle.alert.engine.coordinator.StreamingCluster; import org.apache.eagle.alert.engine.model.AlertPublishEvent; import org.apache.eagle.alert.metadata.IMetadataDao; import org.apache.eagle.alert.metadata.MetadataUtils; import org.apache.eagle.alert.metadata.resource.Models; import org.apache.eagle.alert.metadata.resource.OpResult; - import org.bson.BsonDocument; import org.bson.BsonInt32; import org.bson.BsonString; @@ -51,28 +54,42 @@ import org.bson.Document; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.util.*; -import java.util.stream.Collectors; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.inject.Inject; +import com.mongodb.Block; +import com.mongodb.Function; +import com.mongodb.MongoClient; +import com.mongodb.MongoClientURI; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.MongoIterable; +import com.mongodb.client.model.CreateCollectionOptions; +import com.mongodb.client.model.IndexOptions; +import com.mongodb.client.model.UpdateOptions; +import com.mongodb.client.result.DeleteResult; +import com.mongodb.client.result.UpdateResult; +import com.typesafe.config.Config; /** * @since Apr 11, 2016. */ public class MongoMetadataDaoImpl implements IMetadataDao { - private static final String DB_NAME = "ump_alert_metadata"; + private static final String DEFAULT_DB_NAME = "ump_alert_metadata"; private static final Logger LOG = LoggerFactory.getLogger(MongoMetadataDaoImpl.class); private static final ObjectMapper mapper = new ObjectMapper(); private static final int DEFAULT_CAPPED_MAX_SIZE = 500 * 1024 * 1024; private static final int DEFAULT_CAPPED_MAX_DOCUMENTS = 20000; - private static final String MANGO_CAPPED_MAX_SIZE = "mongo.cappedMaxSize"; - private static final String MANGO_CAPPED_MAX_DOCUMENTS = "mongo.cappedMaxDocuments"; + private static final String MONGO_CAPPED_MAX_SIZE = "mongo.cappedMaxSize"; + private static final String MONGO_CAPPED_MAX_DOCUMENTS = "mongo.cappedMaxDocuments"; static { mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private final String connection; + private final String dbname; private final MongoClient client; private final int cappedMaxSize; private final int cappedMaxDocuments; @@ -101,9 +118,10 @@ public class MongoMetadataDaoImpl implements IMetadataDao { @Inject public MongoMetadataDaoImpl(Config config) { this.connection = config.getString(MetadataUtils.MONGO_CONNECTION_PATH); - this.cappedMaxSize = config.hasPath(MANGO_CAPPED_MAX_SIZE) ? config.getInt(MANGO_CAPPED_MAX_SIZE) : DEFAULT_CAPPED_MAX_SIZE; - this.cappedMaxDocuments = config.hasPath(MANGO_CAPPED_MAX_DOCUMENTS) ? config.getInt(MANGO_CAPPED_MAX_DOCUMENTS) : DEFAULT_CAPPED_MAX_DOCUMENTS; + this.cappedMaxSize = config.hasPath(MONGO_CAPPED_MAX_SIZE) ? config.getInt(MONGO_CAPPED_MAX_SIZE) : DEFAULT_CAPPED_MAX_SIZE; + this.cappedMaxDocuments = config.hasPath(MONGO_CAPPED_MAX_DOCUMENTS) ? config.getInt(MONGO_CAPPED_MAX_DOCUMENTS) : DEFAULT_CAPPED_MAX_DOCUMENTS; this.client = new MongoClient(new MongoClientURI(this.connection)); + this.dbname = config.hasPath(MetadataUtils.MONGO_DATABASE) ? config.getString(MetadataUtils.MONGO_DATABASE) : DEFAULT_DB_NAME; init(); } @@ -135,7 +153,7 @@ public class MongoMetadataDaoImpl implements IMetadataDao { } private void init() { - db = client.getDatabase(DB_NAME); + db = client.getDatabase(this.dbname); IndexOptions io = new IndexOptions().background(true).name("nameIndex"); BsonDocument doc = new BsonDocument(); doc.append("name", new BsonInt32(1)); http://git-wip-us.apache.org/repos/asf/eagle/blob/271fa7ff/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf index 4c6fba2..80adeae 100644 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf +++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf @@ -19,6 +19,7 @@ metadata { mongo { connection = "mongodb://localhost:27017" cappedSize = 20000 + database = testdb } }
