@@ -1364,6 +1364,11 @@ exports.extend_PostgreSQL = (ext) -> class PostgreSQL extends ext
1364
1364
if pg_changefeed == ' projects'
1365
1365
tracker_add = (project_id ) => feed .insert ({project_id : project_id})
1366
1366
tracker_remove = (project_id ) => feed .delete ({project_id : project_id})
1367
+
1368
+ # Any tracker error means this changefeed is now broken and
1369
+ # has to be recreated.
1370
+ tracker_error = () => changes .cb (" tracker error - ${err}" )
1371
+
1367
1372
pg_changefeed = (db , account_id ) =>
1368
1373
where : (obj ) =>
1369
1374
# Check that this is a project we have read access to
@@ -1381,11 +1386,14 @@ exports.extend_PostgreSQL = (ext) -> class PostgreSQL extends ext
1381
1386
init_tracker : (tracker ) =>
1382
1387
tracker .on " add_user_to_project-#{ account_id} " , tracker_add
1383
1388
tracker .on " remove_user_from_project-#{ account_id} " , tracker_remove
1389
+ tracker .once ' error' , tracker_error
1390
+
1384
1391
1385
1392
free_tracker : (tracker ) =>
1386
1393
dbg (" freeing project tracker events" )
1387
1394
tracker .removeListener (" add_user_to_project-#{ account_id} " , tracker_add)
1388
1395
tracker .removeListener (" remove_user_from_project-#{ account_id} " , tracker_remove)
1396
+ tracker .removeListener (" error" , tracker_error)
1389
1397
1390
1398
1391
1399
else if pg_changefeed == ' news'
@@ -1423,6 +1431,7 @@ exports.extend_PostgreSQL = (ext) -> class PostgreSQL extends ext
1423
1431
return
1424
1432
tracker_add = (collab_id ) => feed .insert ({account_id : collab_id})
1425
1433
tracker_remove = (collab_id ) => feed .delete ({account_id : collab_id})
1434
+ tracker_error = () => changes .cb (" tracker error - ${err}" )
1426
1435
pg_changefeed = (db , account_id ) ->
1427
1436
shared_tracker = undefined
1428
1437
where : (obj ) -> # test of "is a collab with me"
@@ -1431,10 +1440,12 @@ exports.extend_PostgreSQL = (ext) -> class PostgreSQL extends ext
1431
1440
shared_tracker = tracker
1432
1441
tracker .on " add_collaborator-#{ account_id} " , tracker_add
1433
1442
tracker .on " remove_collaborator-#{ account_id} " , tracker_remove
1443
+ tracker .once ' error' , tracker_error
1434
1444
free_tracker : (tracker ) =>
1435
1445
dbg (" freeing collab tracker events" )
1436
1446
tracker .removeListener (" add_collaborator-#{ account_id} " , tracker_add)
1437
1447
tracker .removeListener (" remove_collaborator-#{ account_id} " , tracker_remove)
1448
+ tracker .removeListener (" error" , tracker_error)
1438
1449
1439
1450
1440
1451
x = pg_changefeed (@ , account_id)
@@ -1470,11 +1481,10 @@ exports.extend_PostgreSQL = (ext) -> class PostgreSQL extends ext
1470
1481
select : select
1471
1482
where : where
1472
1483
watch : watch
1473
- cb : (err , _feed ) =>
1484
+ cb : (err , feed ) =>
1474
1485
if err
1475
1486
cb (err)
1476
1487
return
1477
- feed = _feed
1478
1488
feed .on ' change' , (x ) ->
1479
1489
process (x)
1480
1490
changes .cb (undefined , x)
@@ -1484,16 +1494,13 @@ exports.extend_PostgreSQL = (ext) -> class PostgreSQL extends ext
1484
1494
if tracker? and free_tracker?
1485
1495
dbg (" free_tracker" )
1486
1496
free_tracker (tracker)
1487
- dbg (" do NOT free_tracker" )
1497
+ else
1498
+ dbg (" do NOT free_tracker" )
1488
1499
feed .on ' error' , (err ) ->
1489
1500
changes .cb (" feed error - #{ err} " )
1490
1501
@_changefeeds ?= {}
1491
1502
@_changefeeds [changes .id ] = feed
1492
1503
init_tracker? (tracker)
1493
- # Any tracker error means this changefeed is now broken and
1494
- # has to be recreated.
1495
- tracker ? .once ' error' , (err ) ->
1496
- changes .cb (" tracker error - #{ err} " )
1497
1504
cb ()
1498
1505
], cb)
1499
1506
0 commit comments