http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/email/src/main/java/org/apache/ignite/internal/processors/email/IgniteEmailProcessor.java ---------------------------------------------------------------------- diff --git a/modules/email/src/main/java/org/apache/ignite/internal/processors/email/IgniteEmailProcessor.java b/modules/email/src/main/java/org/apache/ignite/internal/processors/email/IgniteEmailProcessor.java deleted file mode 100644 index 57acecb..0000000 --- a/modules/email/src/main/java/org/apache/ignite/internal/processors/email/IgniteEmailProcessor.java +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.processors.email; - -import org.apache.ignite.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.internal.*; -import org.apache.ignite.thread.*; -import org.apache.ignite.internal.util.future.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.internal.util.worker.*; - -import javax.mail.*; -import javax.mail.internet.*; -import java.util.*; - -/** - * Email (SMTP) processor. Responsible for sending emails. - */ -public class IgniteEmailProcessor extends IgniteEmailProcessorAdapter { - /** Maximum emails queue size. */ - public static final int QUEUE_SIZE = 1024; - - /** */ - @SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"}) - private Deque<GridEmailHolder> q; - - /** */ - private IgniteThread snd; - - /** */ - private GridWorker worker; - - /** */ - private final boolean isSmtpEnabled; - - /** - * @param ctx Kernal context. - */ - public IgniteEmailProcessor(GridKernalContext ctx) { - super(ctx); - - isSmtpEnabled = ctx.config().getSmtpHost() != null; - - if (isSmtpEnabled) { - worker = new GridWorker(ctx.config().getGridName(), "email-sender-worker", log) { - @SuppressWarnings({"SynchronizeOnNonFinalField"}) - @Override protected void body() throws InterruptedException { - while (!Thread.currentThread().isInterrupted()) - synchronized (q) { - while (q.isEmpty()) - q.wait(); - - GridEmailHolder email = q.removeFirst(); - - assert email != null; - - try { - sendNow(email.subject(), email.body(), email.html(), email.addresses()); - - email.future().onDone(true); - } - catch (IgniteCheckedException e) { - U.error(log, "Failed to send email with subject: " + email.subject(), e); - - email.future().onDone(e); - } - } - } - }; - } - } - - /** {@inheritDoc} */ - @Override public void start() throws IgniteCheckedException { - if (isSmtpEnabled) { - assert q == null; - assert snd == null; - - q = new LinkedList<>(); - - snd = new IgniteThread(ctx.config().getGridName(), "email-sender-thread", worker); - - snd.start(); - } - - if (log.isDebugEnabled()) - log.debug("Started email processor" + (isSmtpEnabled ? "." : " (inactive).")); - } - - /** {@inheritDoc} */ - @Override public void stop(boolean cancel) throws IgniteCheckedException { - if (isSmtpEnabled) { - U.interrupt(snd); - U.join(snd, log); - - snd = null; - - if (q != null) { - if (!q.isEmpty()) - U.warn(log, "Emails queue is not empty on email processor stop."); - - q.clear(); - - q = null; - } - } - - if (log.isDebugEnabled()) - log.debug("Stopped email processor."); - } - - /** {@inheritDoc} */ - @Override public void sendNow(String subj, String body, boolean html) throws IgniteCheckedException { - String[] addrs = ctx.config().getAdminEmails(); - - if (addrs != null && addrs.length > 0) - sendNow(subj, body, html, Arrays.asList(addrs)); - } - - /** {@inheritDoc} */ - @Override public void sendNow(String subj, String body, boolean html, Collection<String> addrs) - throws IgniteCheckedException { - assert subj != null; - assert body != null; - assert addrs != null; - assert !addrs.isEmpty(); - - if (isSmtpEnabled) { - IgniteConfiguration cfg = ctx.config(); - - sendEmail( - // Static SMTP configuration data. - cfg.getSmtpHost(), - cfg.getSmtpPort(), - cfg.isSmtpSsl(), - cfg.isSmtpStartTls(), - cfg.getSmtpUsername(), - cfg.getSmtpPassword(), - cfg.getSmtpFromEmail(), - - // Per-email data. - subj, - body, - html, - addrs - ); - } - } - - /** {@inheritDoc} */ - @Override public IgniteInternalFuture<Boolean> schedule(String subj, String body, boolean html) { - String[] addrs = ctx.config().getAdminEmails(); - - return addrs == null || addrs.length == 0 ? new GridFinishedFuture<>(ctx, false) : - schedule(subj, body, html, Arrays.asList(addrs)); - } - - /** {@inheritDoc} */ - @SuppressWarnings({"SynchronizeOnNonFinalField"}) - @Override public IgniteInternalFuture<Boolean> schedule(String subj, String body, boolean html, Collection<String> addrs) { - assert subj != null; - assert body != null; - assert addrs != null; - assert !addrs.isEmpty(); - - if (isSmtpEnabled) - synchronized (q) { - if (q.size() == QUEUE_SIZE) { - U.warn(log, "Email '" + subj + "' failed to schedule b/c queue is full."); - - return new GridFinishedFuture<>(ctx, false); - } - else { - GridFutureAdapter<Boolean> fut = new GridFutureAdapter<Boolean>(ctx) { - @SuppressWarnings({"SynchronizeOnNonFinalField"}) - @Override public boolean cancel() { - synchronized (q) { - for (GridEmailHolder email : q) - if (email.future() == this) { - q.remove(email); // We accept full scan on removal here. - - return true; - } - } - - return false; - } - }; - - q.addLast(new GridEmailHolder(fut, subj, body, html, addrs)); - - q.notifyAll(); - - return fut; - } - } - else - return new GridFinishedFuture<>(ctx, false); - } - /** - * - * @param smtpHost SMTP host. - * @param smtpPort SMTP port. - * @param ssl SMTP SSL. - * @param startTls Start TLS flag. - * @param username Email authentication user name. - * @param pwd Email authentication password. - * @param from From email. - * @param subj Email subject. - * @param body Email body. - * @param html HTML format flag. - * @param addrs Addresses to send email to. - * @throws IgniteCheckedException Thrown in case when sending email failed. - */ - public static void sendEmail(String smtpHost, int smtpPort, boolean ssl, boolean startTls, final String username, - final String pwd, String from, String subj, String body, boolean html, Collection<String> addrs) - throws IgniteCheckedException { - assert smtpHost != null; - assert smtpPort > 0; - assert from != null; - assert subj != null; - assert body != null; - assert addrs != null; - assert !addrs.isEmpty(); - - Properties props = new Properties(); - - props.setProperty("mail.transport.protocol", "smtp"); - props.setProperty("mail.smtp.host", smtpHost); - props.setProperty("mail.smtp.port", Integer.toString(smtpPort)); - - if (ssl) - props.setProperty("mail.smtp.ssl", "true"); - - if (startTls) - props.setProperty("mail.smtp.starttls.enable", "true"); - - Authenticator auth = null; - - // Add property for authentication by username. - if (username != null && !username.isEmpty()) { - props.setProperty("mail.smtp.auth", "true"); - - auth = new Authenticator() { - @Override public PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(username, pwd); - } - }; - } - - Session ses = Session.getInstance(props, auth); - - MimeMessage email = new MimeMessage(ses); - - try { - email.setFrom(new InternetAddress(from)); - email.setSubject(subj); - email.setSentDate(new Date()); - - if (html) - email.setText(body, "UTF-8", "html"); - else - email.setText(body); - - Address[] rcpts = new Address[addrs.size()]; - - int i = 0; - - for (String addr : addrs) - rcpts[i++] = new InternetAddress(addr); - - email.setRecipients(MimeMessage.RecipientType.TO, rcpts); - - Transport.send(email); - } - catch (MessagingException e) { - throw new IgniteCheckedException("Failed to send email.", e); - } - } -}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/GridHadoopDefaultMapReducePlannerSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/GridHadoopDefaultMapReducePlannerSelfTest.java b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/GridHadoopDefaultMapReducePlannerSelfTest.java index 54de56d..0ea8def 100644 --- a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/GridHadoopDefaultMapReducePlannerSelfTest.java +++ b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/GridHadoopDefaultMapReducePlannerSelfTest.java @@ -989,16 +989,6 @@ public class GridHadoopDefaultMapReducePlannerSelfTest extends GridHadoopAbstrac } /** {@inheritDoc} */ - @Override public boolean isSmtpEnabled() { - return false; - } - - /** {@inheritDoc} */ - @Override public IgniteInternalFuture<Boolean> sendAdminEmailAsync(String subj, String body, boolean html) { - return null; - } - - /** {@inheritDoc} */ @Override public ClusterGroupEx forSubjectId(UUID subjId) { return null; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala index 79b8ae9..da9c671 100644 --- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala +++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala @@ -17,13 +17,11 @@ package org.apache.ignite.visor.commands.alert -import org.apache.ignite.internal.util.{IgniteUtils => U} -import org.apache.ignite.internal.util.lang.{GridFunc => F} - import org.apache.ignite._ import org.apache.ignite.cluster.ClusterNode import org.apache.ignite.events.EventType._ import org.apache.ignite.events.{DiscoveryEvent, Event} +import org.apache.ignite.internal.util.{IgniteUtils => U} import org.apache.ignite.lang.IgnitePredicate import java.util.UUID @@ -31,7 +29,7 @@ import java.util.concurrent.atomic._ import org.apache.ignite.visor.VisorTag import org.apache.ignite.visor.commands.{VisorConsoleCommand, VisorTextTable} -import visor.visor._ +import org.apache.ignite.visor.visor._ import scala.collection.immutable._ import scala.language.implicitConversions @@ -44,7 +42,7 @@ import scala.util.control.Breaks._ * ==Help== * {{{ * +---------------------------------------------------------------------+ - * | alert | Generates email alerts for user-defined events. | + * | alert | Generates alerts for user-defined events. | * | | Node events and grid-wide events are defined via mnemonics. | * +---------------------------------------------------------------------+ * }}} @@ -71,9 +69,6 @@ import scala.util.control.Breaks._ * Note that only one of the '-u' or '-r' is allowed. * If neither '-u' or '-r' provided - all alerts will be printed. * - * NOTE: Email settings can be specified in Ignite configu - * Email notification will be sent for the alert only - * provided mnemonic predicates evaluate to 'true'." * -t * Defines notification frequency in seconds. Default is 15 minutes. * This parameter can only appear with '-r'. @@ -110,9 +105,6 @@ import scala.util.control.Breaks._ * gte - Greater than or equal '>=' to '<value>' number. * lt - Less than '<' to 'NN' number. * lte - Less than or equal '<=' to '<value>' number. - * - * NOTE: Email notification will be sent for the alert only when all - * provided mnemonic predicates evaluate to 'true'. * }}} * * ====Examples==== @@ -256,12 +248,6 @@ class VisorAlertCommand { if (!isConnected) adviseToConnect() else { - // Warn but don't halt. - if (F.isEmpty(ignite.configuration().getAdminEmails)) - warn("Admin emails are not configured (ignoring).") - else if (!ignite.isSmtpEnabled) - warn("SMTP is not configured (ignoring).") - val dfltNodeF = (_: ClusterNode) => true val dfltGridF = () => true @@ -411,9 +397,6 @@ class VisorAlertCommand { stats = stats + (id -> stat) - // Send alert email notification. - sendEmail(alert, if (nb) Some(node) else None) - // Write to Visor log if it is started (see 'log' command). logText( "Alert [" + @@ -466,56 +449,6 @@ class VisorAlertCommand { } /** - * Sends email. - * - * @param a Alert to send email about. - * @param n `Option` for node. - */ - private def sendEmail(a: VisorAlert, n: Option[ClusterNode]) { - assert(a != null) - assert(n != null) - - val subj = "Visor alert triggered: '" + a.spec + '\'' - val headline = "Ignite ver. " + ignite.version() - - val stat = stats(a.id) - - assert(stat != null) - - var body = - headline + NL + - NL + - "----" + NL + - "Alert ID: " + a.id + NL + - "Alert spec: " + a.spec + NL - - if (n.isDefined) - body += "Related node ID: " + n.get.id + NL + - "Related node addresses: " + n.get.addresses() + NL - - body += - "Send count: " + stat.cnt + NL + - "Created on: " + formatDateTime(a.createdOn) + NL + - "First send: " + (if (stat.firstSnd == 0) "n/a" else formatDateTime(stat.firstSnd)) + NL + - "Last send: " + (if (stat.lastSnd == 0) "n/a" else formatDateTime(stat.lastSnd)) + NL + - "----" + NL + - "Grid name: " + ignite.name + NL - - body += - "----" + NL + - NL + - "NOTE:" + NL + - "This message is sent by Visor automatically to all configured admin emails." + NL + - "To change this behavior use 'adminEmails' grid configuration property." + NL + - NL + - "| www.gridgain.com" + NL + - "| supp...@gridgain.com" + NL - - // Schedule sending. - ignite.sendAdminEmailAsync(subj, body, false) - } - - /** * Prints advise. */ private def advise() { @@ -735,9 +668,9 @@ sealed private case class VisorStats( object VisorAlertCommand { addHelp( name = "alert", - shortInfo = "Email alerts for user-defined events.", + shortInfo = "Alerts for user-defined events.", longInfo = Seq( - "Generates email alerts for user-defined events.", + "Generates alerts for user-defined events.", "Node events and grid-wide events are defined via mnemonics." ), spec = Seq( @@ -759,11 +692,7 @@ object VisorAlertCommand { "-r" -> Seq( "Register new alert with mnemonic predicate(s).", "Note that only one of the '-u' or '-r' is allowed.", - "If neither '-u' or '-r' provided - all alerts will be printed.", - "", - "NOTE: Email settings can be specified in Ignite configuration file.", - " Email notification will be sent for the alert only when all", - " provided mnemonic predicates evaluate to 'true'." + "If neither '-u' or '-r' provided - all alerts will be printed." ), "-t" -> Seq( "Defines notification frequency in seconds. Default is 15 minutes.", http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala index afa1023..bbc2050 100644 --- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala +++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala @@ -294,26 +294,11 @@ class VisorConfigurationCommand { p2pT.render() - println("\nEmail:") - - val emailT = VisorTextTable() - - emailT += ("SMTP host", safe(cfg.email().smtpHost(), DFLT)) - emailT += ("SMTP port", safe(cfg.email().smtpPort(), DFLT)) - emailT += ("SMTP username", safe(cfg.email().smtpUsername(), DFLT)) - emailT += ("Admin emails", safe(cfg.email().adminEmails(), DFLT)) - emailT += ("From email", safe(cfg.email().smtpFromEmail(), DFLT)) - emailT += ("SMTP SSL enabled", bool2Str(cfg.email().smtpSsl())) - emailT += ("SMTP STARTTLS enabled", bool2Str(cfg.email().smtpStartTls())) - - emailT.render() - println("\nLifecycle:") val lifecycleT = VisorTextTable() lifecycleT += ("Beans", safe(cfg.lifecycle().beans(), DFLT)) - lifecycleT += ("Notifications", bool2Str(cfg.lifecycle().emailNotification())) lifecycleT.render() http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommandSpec.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommandSpec.scala b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommandSpec.scala index cf89e11..0a3a011 100644 --- a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommandSpec.scala +++ b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommandSpec.scala @@ -48,7 +48,6 @@ class VisorAlertCommandSpec extends VisorRuntimeBaseSpec(1) { val cfg = new IgniteConfiguration cfg.setGridName(name) - cfg.setLifeCycleEmailNotification(false) cfg.setLocalHost("127.0.0.1") val discoSpi: TcpDiscoverySpi = new TcpDiscoverySpi() http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommandSpec.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommandSpec.scala b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommandSpec.scala index 010165d..6b1b62d 100644 --- a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommandSpec.scala +++ b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommandSpec.scala @@ -37,7 +37,6 @@ class VisorConfigurationCommandSpec extends VisorRuntimeBaseSpec(1) { val cfg = new IgniteConfiguration cfg.setGridName(name) - cfg.setLifeCycleEmailNotification(false) cfg.setIncludeEventTypes(EVTS_ALL: _*) cfg http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/disco/VisorDiscoveryCommandSpec.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/disco/VisorDiscoveryCommandSpec.scala b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/disco/VisorDiscoveryCommandSpec.scala index 8bf864b..64f0e0f 100644 --- a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/disco/VisorDiscoveryCommandSpec.scala +++ b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/disco/VisorDiscoveryCommandSpec.scala @@ -47,7 +47,6 @@ class VisorDiscoveryCommandSpec extends VisorRuntimeBaseSpec(4) { val cfg = new IgniteConfiguration cfg.setGridName(name) - cfg.setLifeCycleEmailNotification(false) cfg } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/events/VisorEventsCommandSpec.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/events/VisorEventsCommandSpec.scala b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/events/VisorEventsCommandSpec.scala index 26c8fb3..365032e 100644 --- a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/events/VisorEventsCommandSpec.scala +++ b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/events/VisorEventsCommandSpec.scala @@ -36,7 +36,6 @@ class VisorEventsCommandSpec extends VisorRuntimeBaseSpec(1) { val cfg = new IgniteConfiguration cfg.setGridName(name) - cfg.setLifeCycleEmailNotification(false) cfg } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/gc/VisorGcCommandSpec.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/gc/VisorGcCommandSpec.scala b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/gc/VisorGcCommandSpec.scala index 1a59274..678aaf4 100644 --- a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/gc/VisorGcCommandSpec.scala +++ b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/gc/VisorGcCommandSpec.scala @@ -37,7 +37,6 @@ class VisorGcCommandSpec extends VisorRuntimeBaseSpec(1) { val cfg = new IgniteConfiguration cfg.setGridName(name) - cfg.setLifeCycleEmailNotification(false) cfg } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/tasks/VisorTasksCommandSpec.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/tasks/VisorTasksCommandSpec.scala b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/tasks/VisorTasksCommandSpec.scala index 9fd91d2..b8997bc 100644 --- a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/tasks/VisorTasksCommandSpec.scala +++ b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/tasks/VisorTasksCommandSpec.scala @@ -20,7 +20,6 @@ package org.apache.ignite.visor.commands.tasks import org.apache.ignite.Ignition import org.apache.ignite.compute.{ComputeJob, ComputeJobAdapter, ComputeJobResult, ComputeTaskSplitAdapter} import org.apache.ignite.configuration.IgniteConfiguration -import org.apache.ignite.events.EventType import org.apache.ignite.events.EventType._ import org.apache.ignite.visor.visor import org.scalatest._ @@ -89,7 +88,6 @@ class VisorTasksCommandSpec extends FlatSpec with Matchers with BeforeAndAfterAl val cfg = new IgniteConfiguration cfg.setGridName(name) - cfg.setLifeCycleEmailNotification(false) cfg.setIncludeEventTypes(EVTS_ALL: _*) cfg http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/da1fa4e6/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 0e65089..c50cd87 100644 --- a/pom.xml +++ b/pom.xml @@ -104,7 +104,6 @@ <module>modules/geospatial</module> <module>modules/ssh</module> <module>modules/rest-http</module> - <module>modules/email</module> <module>modules/jta</module> <module>modules/aws</module> <module>modules/schedule</module>