You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/10/01 22:01:12 UTC

[13/19] git commit: changing task manager name; adding more queue logic to push

changing task manager name; adding more queue logic to push


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/377b0747
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/377b0747
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/377b0747

Branch: refs/heads/two-dot-o-rebuildable-index
Commit: 377b0747d75cfb8c732cb075d21176f565185e45
Parents: abbd76e
Author: Shawn Feldman <sf...@apache.org>
Authored: Wed Oct 1 10:16:55 2014 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Wed Oct 1 10:16:55 2014 -0600

----------------------------------------------------------------------
 .../notifications/ApplicationQueueManager.java  |  23 ++-
 .../notifications/SingleQueueTaskManager.java   | 177 ------------------
 .../services/notifications/TaskManager.java     | 179 +++++++++++++++++++
 .../services/notifications/TaskTracker.java     |   4 +-
 .../gcm/NotificationsServiceIT.java             |   3 +-
 5 files changed, 197 insertions(+), 189 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/377b0747/stack/services/src/main/java/org/apache/usergrid/services/notifications/ApplicationQueueManager.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/notifications/ApplicationQueueManager.java b/stack/services/src/main/java/org/apache/usergrid/services/notifications/ApplicationQueueManager.java
index cde14a5..a00d676 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/notifications/ApplicationQueueManager.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/notifications/ApplicationQueueManager.java
@@ -47,7 +47,7 @@ import java.util.concurrent.atomic.AtomicInteger;
  */
 public class ApplicationQueueManager implements QueueManager {
 
-    public static  String DEFAULT_QUEUE_NAME = "notifications/queuelistenerv1_34;notifications/queuelistenerv1_35;notifications/queuelistenerv1_36";
+    public static  String DEFAULT_QUEUE_NAME = "notifications/queuelistenerv1_40;notifications/queuelistenerv1_41;notifications/queuelistenerv1_42";
     public static final String DEFAULT_QUEUE_PROPERTY = "usergrid.notifications.listener.queueName";
     private static final Logger LOG = LoggerFactory.getLogger(ApplicationQueueManager.class);
 
@@ -234,7 +234,7 @@ public class ApplicationQueueManager implements QueueManager {
 
         //do i have devices, and have i already started batching.
         if (deviceCount.get() <= 0) {
-            SingleQueueTaskManager taskManager = new SingleQueueTaskManager(em, qm, this, notification,queueName);
+            TaskManager taskManager = new TaskManager(em, qm, this, notification,queueName);
             //if i'm in a test value will be false, do not mark finished for test orchestration, not ideal need real tests
             taskManager.finishedBatch();
         }
@@ -291,12 +291,13 @@ public class ApplicationQueueManager implements QueueManager {
 
         final Map<Object, Notifier> notifierMap = getNotifierMap();
         final QueueManager proxy = this;
-        final ConcurrentHashMap<UUID,SingleQueueTaskManager> taskMap = new ConcurrentHashMap<UUID, SingleQueueTaskManager>(messages.size());
+        final ConcurrentHashMap<UUID,TaskManager> taskMap = new ConcurrentHashMap<UUID, TaskManager>(messages.size());
         final ConcurrentHashMap<UUID,Notification> notificationMap = new ConcurrentHashMap<UUID, Notification>(messages.size());
 
         final Func1<ApplicationQueueMessage, ApplicationQueueMessage> func = new Func1<ApplicationQueueMessage, ApplicationQueueMessage>() {
             @Override
             public ApplicationQueueMessage call(ApplicationQueueMessage message) {
+                boolean messageCommitted = false;
                 try {
                     LOG.info("start sending notification for device {} for Notification: {} on thread "+Thread.currentThread().getId(), message.getDeviceId(), message.getNotificationId());
 
@@ -307,10 +308,9 @@ public class ApplicationQueueManager implements QueueManager {
                         notification = em.get(message.getNotificationId(), Notification.class);
                         notificationMap.put(message.getNotificationId(), notification);
                     }
-                    SingleQueueTaskManager taskManager;
-                    taskManager = taskMap.get(message.getNotificationId());
+                    TaskManager taskManager = taskMap.get(message.getNotificationId());
                     if (taskManager == null) {
-                        taskManager = new SingleQueueTaskManager(em, qm, proxy, notification,queuePath);
+                        taskManager = new TaskManager(em, qm, proxy, notification,queuePath);
                         taskMap.putIfAbsent(message.getNotificationId(), taskManager);
                         taskManager = taskMap.get(message.getNotificationId());
                     }
@@ -332,7 +332,6 @@ public class ApplicationQueueManager implements QueueManager {
                             if (payload == null) {
                                 LOG.debug("selected device {} for notification {} doesn't have a valid payload. skipping.", deviceUUID, notification.getUuid());
                                 tracker.failed(0, "failed to match payload to " + message.getNotifierId() + " notifier");
-
                             } else {
                                 long now = System.currentTimeMillis();
                                 try {
@@ -345,12 +344,20 @@ public class ApplicationQueueManager implements QueueManager {
                                 }
                             }
                         }
+                        messageCommitted = true;
                     } finally {
                         sendMeter.mark();
                     }
 
                 } catch (Exception e) {
                     LOG.error("Failure while sending",e);
+                    try {
+                        if(!messageCommitted) {
+                            qm.commitTransaction(queuePath, message.getTransaction(), null);
+                        }
+                    }catch (Exception queueException){
+                        LOG.error("Failed to commit message.",queueException);
+                    }
                 }
                 return message;
             }
@@ -379,7 +386,7 @@ public class ApplicationQueueManager implements QueueManager {
                         for (ApplicationQueueMessage message : queueMessages) {
                             if (notifications.get(message.getNotificationId()) == null) {
                                 try {
-                                    SingleQueueTaskManager taskManager = taskMap.get(message.getNotificationId());
+                                    TaskManager taskManager = taskMap.get(message.getNotificationId());
                                     notifications.put(message.getNotificationId(), message);
                                     taskManager.finishedBatch();
                                 } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/377b0747/stack/services/src/main/java/org/apache/usergrid/services/notifications/SingleQueueTaskManager.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/notifications/SingleQueueTaskManager.java b/stack/services/src/main/java/org/apache/usergrid/services/notifications/SingleQueueTaskManager.java
deleted file mode 100644
index e89267d..0000000
--- a/stack/services/src/main/java/org/apache/usergrid/services/notifications/SingleQueueTaskManager.java
+++ /dev/null
@@ -1,177 +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.usergrid.services.notifications;
-
-import org.apache.usergrid.persistence.EntityManager;
-import org.apache.usergrid.persistence.EntityRef;
-import org.apache.usergrid.persistence.SimpleEntityRef;
-import org.apache.usergrid.persistence.entities.Device;
-import org.apache.usergrid.persistence.entities.Notification;
-import org.apache.usergrid.persistence.entities.Notifier;
-import org.apache.usergrid.persistence.entities.Receipt;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
-
-public class SingleQueueTaskManager {
-
-    private static final Logger LOG = LoggerFactory
-            .getLogger(SingleQueueTaskManager.class);
-    private final QueueManager proxy;
-    private final String queuePath;
-
-    private Notification notification;
-    private AtomicLong successes = new AtomicLong();
-    private AtomicLong failures = new AtomicLong();
-    private org.apache.usergrid.mq.QueueManager qm;
-    private EntityManager em;
-    private ConcurrentHashMap<UUID, ApplicationQueueMessage> messageMap;
-    private boolean hasFinished;
-
-    public SingleQueueTaskManager(EntityManager em, org.apache.usergrid.mq.QueueManager qm, QueueManager proxy, Notification notification,String queuePath) {
-        this.em = em;
-        this.qm = qm;
-        this.notification = notification;
-        this.proxy = proxy;
-        this.messageMap = new ConcurrentHashMap<UUID, ApplicationQueueMessage>();
-        hasFinished = false;
-        this.queuePath = queuePath;
-    }
-
-    public void addMessage(UUID deviceId, ApplicationQueueMessage message) {
-        messageMap.put(deviceId, message);
-    }
-
-    public void completed(Notifier notifier, Receipt receipt, UUID deviceUUID, String newProviderId) throws Exception {
-        LOG.debug("REMOVED {}", deviceUUID);
-        try {
-            EntityRef deviceRef = new SimpleEntityRef(Device.ENTITY_TYPE, deviceUUID);
-            if (receipt != null) {
-                LOG.debug("notification {} sent to device {}. saving receipt.", notification.getUuid(), deviceUUID);
-                receipt.setSent(System.currentTimeMillis());
-                this.saveReceipt(notification, deviceRef, receipt);
-                LOG.debug("notification {} receipt saved for device {}", notification.getUuid(), deviceUUID);
-                successes.incrementAndGet();
-            }
-
-            LOG.debug("notification {} removing device {} from remaining", notification.getUuid(), deviceUUID);
-            qm.commitTransaction(queuePath, messageMap.get(deviceUUID).getTransaction(), null);
-            if (newProviderId != null) {
-                LOG.debug("notification {} replacing device {} notifierId", notification.getUuid(), deviceUUID);
-                replaceProviderId(deviceRef, notifier, newProviderId);
-            }
-
-            LOG.debug("notification {} completed device {}", notification.getUuid(), deviceUUID);
-
-        } finally {
-            LOG.debug("COUNT is: {}", successes.get());
-            if (hasFinished) { //process has finished but notifications are still coming in
-                finishedBatch();
-
-            }
-        }
-    }
-
-    public void failed(Notifier notifier, Receipt receipt, UUID deviceUUID, Object code, String message) throws Exception {
-
-        try {
-            if (LOG.isDebugEnabled()) {
-                StringBuilder sb = new StringBuilder();
-                sb.append("notification ").append(notification.getUuid());
-                sb.append(" for device ").append(deviceUUID);
-                sb.append(" got error ").append(code);
-                LOG.debug(sb.toString());
-            }
-
-            failures.incrementAndGet();
-            if (receipt.getUuid() != null) {
-                successes.decrementAndGet();
-            }
-            receipt.setErrorCode(code);
-            receipt.setErrorMessage(message);
-            this.saveReceipt(notification, new SimpleEntityRef(Device.ENTITY_TYPE, deviceUUID), receipt);
-            LOG.debug("notification {} receipt saved for device {}", notification.getUuid(), deviceUUID);
-        } finally {
-            completed(notifier, null, deviceUUID, null);
-        }
-    }
-
-    /*
-    * called from TaskManager - creates a persistent receipt and updates the
-    * passed one w/ the UUID
-    */
-    private void saveReceipt(EntityRef notification, EntityRef device, Receipt receipt) throws Exception {
-        if (receipt.getUuid() == null) {
-            Receipt savedReceipt = em.create(receipt);
-            receipt.setUuid(savedReceipt.getUuid());
-
-            List<EntityRef> entities = Arrays.asList(notification, device);
-//            em.addToCollections(entities, Notification.RECEIPTS_COLLECTION, savedReceipt);
-        } else {
-            em.update(receipt);
-        }
-    }
-
-    protected void replaceProviderId(EntityRef device, Notifier notifier,
-                                     String newProviderId) throws Exception {
-        Object value = em.getProperty(device, notifier.getName()
-                + NotificationsService.NOTIFIER_ID_POSTFIX);
-        if (value != null) {
-            em.setProperty(device, notifier.getName() + NotificationsService.NOTIFIER_ID_POSTFIX, newProviderId);
-        } else {
-            value = em.getProperty(device, notifier.getUuid()
-                    + NotificationsService.NOTIFIER_ID_POSTFIX);
-            if (value != null) {
-                em.setProperty(device, notifier.getUuid() + NotificationsService.NOTIFIER_ID_POSTFIX, newProviderId);
-            }
-        }
-    }
-
-    public void finishedBatch() throws Exception {
-        long successes = this.successes.getAndSet(0); //reset counters
-        long failures = this.failures.getAndSet(0); //reset counters
-        this.hasFinished = true;
-
-        // refresh notification
-        Notification notification = em.get(this.notification.getUuid(), Notification.class);
-        notification.setModified(System.currentTimeMillis());
-
-        long sent = successes, errors = failures;
-        //and write them out again, this will produce the most accurate count
-        Map<String, Long> stats = new HashMap<>(2);
-        stats.put("sent", sent);
-        stats.put("errors", errors);
-        notification.updateStatistics(successes, errors);
-
-        //none of this is known and should you ever do this
-        if (notification.getExpectedCount() <= (notification.getStatistics().get("sent") + notification.getStatistics().get("errors"))) {
-            Map<String, Object> properties = new HashMap<>();
-            notification.setFinished(notification.getModified());
-            properties.put("finished", notification.getModified());
-            properties.put("state", notification.getState());
-            LOG.info("done sending to devices in {} ms", notification.getFinished() - notification.getStarted());
-            notification.addProperties(properties);
-        }
-        LOG.info("notification finished batch: {} of {} devices", notification.getUuid(),sent+errors);
-        em.update(notification);
-//        Set<Notifier> notifiers = new HashSet<>(proxy.getNotifierMap().values()); // remove dups
-//        proxy.asyncCheckForInactiveDevices(notifiers);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/377b0747/stack/services/src/main/java/org/apache/usergrid/services/notifications/TaskManager.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/notifications/TaskManager.java b/stack/services/src/main/java/org/apache/usergrid/services/notifications/TaskManager.java
new file mode 100644
index 0000000..f163431
--- /dev/null
+++ b/stack/services/src/main/java/org/apache/usergrid/services/notifications/TaskManager.java
@@ -0,0 +1,179 @@
+/*
+ * 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.usergrid.services.notifications;
+
+import org.apache.usergrid.persistence.EntityManager;
+import org.apache.usergrid.persistence.EntityRef;
+import org.apache.usergrid.persistence.SimpleEntityRef;
+import org.apache.usergrid.persistence.entities.Device;
+import org.apache.usergrid.persistence.entities.Notification;
+import org.apache.usergrid.persistence.entities.Notifier;
+import org.apache.usergrid.persistence.entities.Receipt;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+
+public class TaskManager {
+
+    private static final Logger LOG = LoggerFactory
+            .getLogger(TaskManager.class);
+    private final QueueManager proxy;
+    private final String queuePath;
+
+    private Notification notification;
+    private AtomicLong successes = new AtomicLong();
+    private AtomicLong failures = new AtomicLong();
+    private org.apache.usergrid.mq.QueueManager qm;
+    private EntityManager em;
+    private ConcurrentHashMap<UUID, ApplicationQueueMessage> messageMap;
+    private boolean hasFinished;
+
+    public TaskManager(EntityManager em, org.apache.usergrid.mq.QueueManager qm, QueueManager proxy, Notification notification, String queuePath) {
+        this.em = em;
+        this.qm = qm;
+        this.notification = notification;
+        this.proxy = proxy;
+        this.messageMap = new ConcurrentHashMap<UUID, ApplicationQueueMessage>();
+        hasFinished = false;
+        this.queuePath = queuePath;
+    }
+
+    public void addMessage(UUID deviceId, ApplicationQueueMessage message) {
+        messageMap.put(deviceId, message);
+    }
+
+    public void completed(Notifier notifier, Receipt receipt, UUID deviceUUID, String newProviderId) throws Exception {
+        LOG.debug("REMOVED {}", deviceUUID);
+        try {
+            LOG.debug("notification {} removing device {} from remaining", notification.getUuid(), deviceUUID);
+            qm.commitTransaction(queuePath, messageMap.get(deviceUUID).getTransaction(), null);
+
+            EntityRef deviceRef = new SimpleEntityRef(Device.ENTITY_TYPE, deviceUUID);
+            if (receipt != null) {
+                LOG.debug("notification {} sent to device {}. saving receipt.", notification.getUuid(), deviceUUID);
+                receipt.setSent(System.currentTimeMillis());
+                this.saveReceipt(notification, deviceRef, receipt);
+                LOG.debug("notification {} receipt saved for device {}", notification.getUuid(), deviceUUID);
+                successes.incrementAndGet();
+            }
+
+
+            if (newProviderId != null) {
+                LOG.debug("notification {} replacing device {} notifierId", notification.getUuid(), deviceUUID);
+                replaceProviderId(deviceRef, notifier, newProviderId);
+            }
+
+            LOG.debug("notification {} completed device {}", notification.getUuid(), deviceUUID);
+
+        } finally {
+            LOG.debug("COUNT is: {}", successes.get());
+            if (hasFinished) { //process has finished but notifications are still coming in
+                finishedBatch();
+
+            }
+        }
+    }
+
+    public void failed(Notifier notifier, Receipt receipt, UUID deviceUUID, Object code, String message) throws Exception {
+
+        try {
+            if (LOG.isDebugEnabled()) {
+                StringBuilder sb = new StringBuilder();
+                sb.append("notification ").append(notification.getUuid());
+                sb.append(" for device ").append(deviceUUID);
+                sb.append(" got error ").append(code);
+                LOG.debug(sb.toString());
+            }
+
+            failures.incrementAndGet();
+            if (receipt.getUuid() != null) {
+                successes.decrementAndGet();
+            }
+            receipt.setErrorCode(code);
+            receipt.setErrorMessage(message);
+            this.saveReceipt(notification, new SimpleEntityRef(Device.ENTITY_TYPE, deviceUUID), receipt);
+            LOG.debug("notification {} receipt saved for device {}", notification.getUuid(), deviceUUID);
+        } finally {
+            completed(notifier, null, deviceUUID, null);
+        }
+    }
+
+    /*
+    * called from TaskManager - creates a persistent receipt and updates the
+    * passed one w/ the UUID
+    */
+    private void saveReceipt(EntityRef notification, EntityRef device, Receipt receipt) throws Exception {
+        if (receipt.getUuid() == null) {
+            Receipt savedReceipt = em.create(receipt);
+            receipt.setUuid(savedReceipt.getUuid());
+
+            List<EntityRef> entities = Arrays.asList(notification, device);
+//            em.addToCollections(entities, Notification.RECEIPTS_COLLECTION, savedReceipt);
+        } else {
+            em.update(receipt);
+        }
+    }
+
+    protected void replaceProviderId(EntityRef device, Notifier notifier,
+                                     String newProviderId) throws Exception {
+        Object value = em.getProperty(device, notifier.getName()
+                + NotificationsService.NOTIFIER_ID_POSTFIX);
+        if (value != null) {
+            em.setProperty(device, notifier.getName() + NotificationsService.NOTIFIER_ID_POSTFIX, newProviderId);
+        } else {
+            value = em.getProperty(device, notifier.getUuid()
+                    + NotificationsService.NOTIFIER_ID_POSTFIX);
+            if (value != null) {
+                em.setProperty(device, notifier.getUuid() + NotificationsService.NOTIFIER_ID_POSTFIX, newProviderId);
+            }
+        }
+    }
+
+    public void finishedBatch() throws Exception {
+        long successes = this.successes.getAndSet(0); //reset counters
+        long failures = this.failures.getAndSet(0); //reset counters
+        this.hasFinished = true;
+
+        // refresh notification
+        Notification notification = em.get(this.notification.getUuid(), Notification.class);
+        notification.setModified(System.currentTimeMillis());
+
+        long sent = successes, errors = failures;
+        //and write them out again, this will produce the most accurate count
+        Map<String, Long> stats = new HashMap<>(2);
+        stats.put("sent", sent);
+        stats.put("errors", errors);
+        notification.updateStatistics(successes, errors);
+
+        //none of this is known and should you ever do this
+        if (notification.getExpectedCount() <= (notification.getStatistics().get("sent") + notification.getStatistics().get("errors"))) {
+            Map<String, Object> properties = new HashMap<>();
+            notification.setFinished(notification.getModified());
+            properties.put("finished", notification.getModified());
+            properties.put("state", notification.getState());
+            LOG.info("done sending to devices in {} ms", notification.getFinished() - notification.getStarted());
+            notification.addProperties(properties);
+        }
+        LOG.info("notification finished batch: {} of {} devices", notification.getUuid(),sent+errors);
+        em.update(notification);
+//        Set<Notifier> notifiers = new HashSet<>(proxy.getNotifierMap().values()); // remove dups
+//        proxy.asyncCheckForInactiveDevices(notifiers);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/377b0747/stack/services/src/main/java/org/apache/usergrid/services/notifications/TaskTracker.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/notifications/TaskTracker.java b/stack/services/src/main/java/org/apache/usergrid/services/notifications/TaskTracker.java
index 8dfa0dc..f2837dd 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/notifications/TaskTracker.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/notifications/TaskTracker.java
@@ -26,11 +26,11 @@ import java.util.UUID;
 public class TaskTracker {
 
     private Notifier notifier;
-    private SingleQueueTaskManager taskManager;
+    private TaskManager taskManager;
     private Receipt receipt;
     private UUID deviceId;
 
-    public TaskTracker(Notifier notifier, SingleQueueTaskManager taskManager, Receipt receipt, UUID deviceId) {
+    public TaskTracker(Notifier notifier, TaskManager taskManager, Receipt receipt, UUID deviceId) {
         this.notifier = notifier;
         this.taskManager = taskManager;
         this.receipt = receipt;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/377b0747/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
index c540c5a..fd1c36c 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
@@ -47,8 +47,7 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT {
      * all run correctly
      */
     private static final boolean USE_REAL_CONNECTIONS = false;
-    private static final String PROVIDER = USE_REAL_CONNECTIONS ? "google"
-            : "noop";
+    private static final String PROVIDER = USE_REAL_CONNECTIONS ? "google" : "noop";
 
     private static final String API_KEY = "AIzaSyCIH_7WC0mOqBGMOXyQnFgrBpOePgHvQJM";
     private static final String PUSH_TOKEN = "APA91bGxRGnMK8tKgVPzSlxtCFvwSVqx0xEPjA06sBmiK0k"