mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-18 19:40:55 +01:00
Conpherence - improve reliability of message delivery
Summary: Ref T7755. T7755#107290 reproduced for me reliably and now it does not. Cleaned up the logic around in flight updates as it was not correct. Not sure this is enough to close T7755, but maybe? Test Plan: T7755#107290 no longer reproduces! Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T6713, T7755 Differential Revision: https://secure.phabricator.com/D12755
This commit is contained in:
parent
88b1ad7e92
commit
791e897c0d
2 changed files with 24 additions and 18 deletions
|
@ -8,7 +8,7 @@
|
|||
return array(
|
||||
'names' => array(
|
||||
'core.pkg.css' => 'ca3f6a60',
|
||||
'core.pkg.js' => 'ff529dc7',
|
||||
'core.pkg.js' => 'f6b48b53',
|
||||
'darkconsole.pkg.js' => 'e7393ebb',
|
||||
'differential.pkg.css' => 'bb338e4b',
|
||||
'differential.pkg.js' => '895b8d62',
|
||||
|
@ -346,7 +346,7 @@ return array(
|
|||
'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'ea681761',
|
||||
'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18',
|
||||
'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de',
|
||||
'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '6709c934',
|
||||
'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => 'f8dace3b',
|
||||
'rsrc/js/application/conpherence/behavior-drag-and-drop-photo.js' => 'cf86d16a',
|
||||
'rsrc/js/application/conpherence/behavior-durable-column.js' => '657c2b50',
|
||||
'rsrc/js/application/conpherence/behavior-menu.js' => '804b0773',
|
||||
|
@ -513,7 +513,7 @@ return array(
|
|||
'conpherence-menu-css' => 'f389e048',
|
||||
'conpherence-message-pane-css' => '3150e2a2',
|
||||
'conpherence-notification-css' => 'd208f806',
|
||||
'conpherence-thread-manager' => '6709c934',
|
||||
'conpherence-thread-manager' => 'f8dace3b',
|
||||
'conpherence-transaction-css' => '25138b7f',
|
||||
'conpherence-update-css' => '1099a660',
|
||||
'conpherence-widget-pane-css' => '2af42ebe',
|
||||
|
@ -1288,16 +1288,6 @@ return array(
|
|||
'phabricator-keyboard-shortcut',
|
||||
'conpherence-thread-manager',
|
||||
),
|
||||
'6709c934' => array(
|
||||
'javelin-dom',
|
||||
'javelin-util',
|
||||
'javelin-stratcom',
|
||||
'javelin-install',
|
||||
'javelin-workflow',
|
||||
'javelin-router',
|
||||
'javelin-behavior-device',
|
||||
'javelin-vector',
|
||||
),
|
||||
'6882e80a' => array(
|
||||
'javelin-dom',
|
||||
),
|
||||
|
@ -1997,6 +1987,16 @@ return array(
|
|||
'javelin-util',
|
||||
'phabricator-busy',
|
||||
),
|
||||
'f8dace3b' => array(
|
||||
'javelin-dom',
|
||||
'javelin-util',
|
||||
'javelin-stratcom',
|
||||
'javelin-install',
|
||||
'javelin-workflow',
|
||||
'javelin-router',
|
||||
'javelin-behavior-device',
|
||||
'javelin-vector',
|
||||
),
|
||||
'f9539603' => array(
|
||||
'javelin-behavior',
|
||||
'javelin-dom',
|
||||
|
|
|
@ -164,15 +164,19 @@ JX.install('ConpherenceThreadManager', {
|
|||
// Message event for something we already know about.
|
||||
return;
|
||||
}
|
||||
// If we're currently updating, wait for the update to complete.
|
||||
|
||||
// If this notification tells us about a message which is newer than
|
||||
// the newest one we know to exist, keep track of it so we can
|
||||
// update once the in-flight update finishes.
|
||||
// the newest one we know to exist, update our latest knownID so we
|
||||
// can properly update later.
|
||||
if (this._updating &&
|
||||
this._updating.threadPHID == this._loadedThreadPHID) {
|
||||
if (message.messageID > this._updating.knownID) {
|
||||
this._updating.knownID = message.messageID;
|
||||
return;
|
||||
// We're currently updating, so wait for the update to complete.
|
||||
// this.syncWorkflow has us covered in this case.
|
||||
if (this._updating.active) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -226,7 +230,8 @@ JX.install('ConpherenceThreadManager', {
|
|||
syncWorkflow: function(workflow, stage) {
|
||||
this._updating = {
|
||||
threadPHID: this._loadedThreadPHID,
|
||||
knownID: this._latestTransactionID
|
||||
knownID: this._latestTransactionID,
|
||||
active: true
|
||||
};
|
||||
workflow.listen(stage, JX.bind(this, function() {
|
||||
// TODO - do we need to handle if we switch threads somehow?
|
||||
|
@ -235,6 +240,7 @@ JX.install('ConpherenceThreadManager', {
|
|||
if (need_sync) {
|
||||
return this._updateThread();
|
||||
}
|
||||
this._updating.active = false;
|
||||
}));
|
||||
workflow.start();
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue