From 1ac249565ae9af7fb415abef660a8e876bb90a97 Mon Sep 17 00:00:00 2001 From: Matt Lott Date: Fri, 1 May 2015 11:08:17 -0700 Subject: [PATCH] Add debug logging to recent subs API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unclear why this isn’t working in production. --- server/payments/subscription_handler.coffee | 58 ++++++++++++--------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/server/payments/subscription_handler.coffee b/server/payments/subscription_handler.coffee index 85d918a21..b58112355 100644 --- a/server/payments/subscription_handler.coffee +++ b/server/payments/subscription_handler.coffee @@ -1,6 +1,7 @@ # Not paired with a document in the DB, just handles coordinating between # the stripe property in the user with what's being stored in Stripe. +log = require 'winston' MongoClient = require('mongodb').MongoClient mongoose = require 'mongoose' async = require 'async' @@ -90,32 +91,41 @@ class SubscriptionHandler extends Handler userMap = {} userMap[user.id] = user.toObject() for user in users - # Get conversion data directly from analytics database and add it to results - url = "mongodb://#{config.mongo.analytics_host}:#{config.mongo.analytics_port}/#{config.mongo.analytics_db}" - MongoClient.connect url, (err, db) => - return @sendDatabaseError(res, err) if err - userEventMap = {} - db.collection('log').find({user: {$in: subscriberUserIDs}}).sort({_id: -1}).each (err, doc) => + try + # Get conversion data directly from analytics database and add it to results + url = "mongodb://#{config.mongo.analytics_host}:#{config.mongo.analytics_port}/#{config.mongo.analytics_db}" + log.debug "Analytics url: #{url}" + MongoClient.connect url, (err, db) => if err - db.close() + log.debug 'Analytics connect error: ' + err return @sendDatabaseError(res, err) - if (doc) - userEventMap[doc.user] ?= [] - userEventMap[doc.user].push doc - else - db.close() - for userID, eventList of userEventMap - finishedPurchase = false - for event in eventList - finishedPurchase = true if event.event is 'Finished subscription purchase' - if finishedPurchase - if event.event is 'Show subscription modal' and event.properties?.level? - userMap[userID].conversion = event.properties.level - break - else if event.event is 'Show subscription modal' and event.properties?.label is 'buy gems modal' - userMap[userID].conversion = event.properties.label - break - @sendSuccess(res, userMap) + log.debug 'Analytics established connection to analytics server.' + userEventMap = {} + db.collection('log').find({user: {$in: subscriberUserIDs}}).sort({_id: -1}).each (err, doc) => + if err + db.close() + return @sendDatabaseError(res, err) + if (doc) + userEventMap[doc.user] ?= [] + userEventMap[doc.user].push doc + else + log.debug 'Analytics finished received docs, closing db connection. ' + Object.keys(userEventMap).length + db.close() + for userID, eventList of userEventMap + finishedPurchase = false + for event in eventList + finishedPurchase = true if event.event is 'Finished subscription purchase' + if finishedPurchase + if event.event is 'Show subscription modal' and event.properties?.level? + userMap[userID].conversion = event.properties.level + break + else if event.event is 'Show subscription modal' and event.properties?.label is 'buy gems modal' + userMap[userID].conversion = event.properties.label + break + @sendSuccess(res, userMap) + catch err + log.debug 'Analytics error:\n' + err + @sendSuccess(res, userMap) getSubscriptions: (req, res) -> # console.log 'subscription_handler getSubscriptions'