|
|
|
@ -14,9 +14,7 @@ |
|
|
|
|
# See the License for the specific language governing permissions and |
|
|
|
|
# limitations under the License. |
|
|
|
|
import logging |
|
|
|
|
import sys |
|
|
|
|
|
|
|
|
|
import six |
|
|
|
|
from six import iteritems, itervalues, string_types |
|
|
|
|
|
|
|
|
|
from canonicaljson import encode_canonical_json, json |
|
|
|
@ -624,6 +622,9 @@ class EventCreationHandler(object): |
|
|
|
|
event, context |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
# reraise does not allow inlineCallbacks to preserve the stacktrace, so we |
|
|
|
|
# hack around with a try/finally instead. |
|
|
|
|
success = False |
|
|
|
|
try: |
|
|
|
|
# If we're a worker we need to hit out to the master. |
|
|
|
|
if self.config.worker_app: |
|
|
|
@ -636,6 +637,7 @@ class EventCreationHandler(object): |
|
|
|
|
ratelimit=ratelimit, |
|
|
|
|
extra_users=extra_users, |
|
|
|
|
) |
|
|
|
|
success = True |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
yield self.persist_and_notify_client_event( |
|
|
|
@ -645,17 +647,16 @@ class EventCreationHandler(object): |
|
|
|
|
ratelimit=ratelimit, |
|
|
|
|
extra_users=extra_users, |
|
|
|
|
) |
|
|
|
|
except: # noqa: E722, as we reraise the exception this is fine. |
|
|
|
|
# Ensure that we actually remove the entries in the push actions |
|
|
|
|
# staging area, if we calculated them. |
|
|
|
|
tp, value, tb = sys.exc_info() |
|
|
|
|
|
|
|
|
|
run_in_background( |
|
|
|
|
self.store.remove_push_actions_from_staging, |
|
|
|
|
event.event_id, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
six.reraise(tp, value, tb) |
|
|
|
|
success = True |
|
|
|
|
finally: |
|
|
|
|
if not success: |
|
|
|
|
# Ensure that we actually remove the entries in the push actions |
|
|
|
|
# staging area, if we calculated them. |
|
|
|
|
run_in_background( |
|
|
|
|
self.store.remove_push_actions_from_staging, |
|
|
|
|
event.event_id, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
def persist_and_notify_client_event( |
|
|
|
|