VirtualKimi commited on
Commit
e1590cf
·
verified ·
1 Parent(s): eaa5a03

Upload kimi-utils.js

Browse files
Files changed (1) hide show
  1. kimi-js/kimi-utils.js +27 -0
kimi-js/kimi-utils.js CHANGED
@@ -1532,6 +1532,15 @@ class KimiVideoManager {
1532
  }
1533
  this._recentFailures.set(videoSrc, performance.now());
1534
  this._consecutiveErrorCount++;
 
 
 
 
 
 
 
 
 
1535
  if (videoSrc !== fallbackVideo) {
1536
  // Try fallback video
1537
  this._fallbackIndex = (this._fallbackIndex + 1) % this._fallbackPool.length; // advance for next time
@@ -1594,6 +1603,24 @@ class KimiVideoManager {
1594
  }, this._timeoutExtension);
1595
  return;
1596
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1597
  if (this.inactiveVideo.readyState >= 2) {
1598
  onReady();
1599
  } else {
 
1532
  }
1533
  this._recentFailures.set(videoSrc, performance.now());
1534
  this._consecutiveErrorCount++;
1535
+ // Stop runaway fallback loop: pause if too many sequential errors relative to pool size
1536
+ if (this._fallbackPool && this._consecutiveErrorCount >= this._fallbackPool.length * 2) {
1537
+ console.error("Temporarily pausing fallback loop after repeated failures. Retrying in 2s.");
1538
+ setTimeout(() => {
1539
+ this._consecutiveErrorCount = 0;
1540
+ this.loadAndSwitchVideo(fallbackVideo, "high");
1541
+ }, 2000);
1542
+ return;
1543
+ }
1544
  if (videoSrc !== fallbackVideo) {
1545
  // Try fallback video
1546
  this._fallbackIndex = (this._fallbackIndex + 1) % this._fallbackPool.length; // advance for next time
 
1603
  }, this._timeoutExtension);
1604
  return;
1605
  }
1606
+ // Grace retry: still fetching over network (networkState=2) with no data (readyState=0)
1607
+ if (
1608
+ this.inactiveVideo.networkState === 2 &&
1609
+ this.inactiveVideo.readyState === 0 &&
1610
+ (this._graceRetryCounts?.[videoSrc] || 0) < 1
1611
+ ) {
1612
+ if (!this._graceRetryCounts) this._graceRetryCounts = {};
1613
+ this._graceRetryCounts[videoSrc] = (this._graceRetryCounts[videoSrc] || 0) + 1;
1614
+ const extra = this._timeoutExtension + 600;
1615
+ console.debug(`Grace retry for ${videoSrc} (network loading). Extending by ${extra}ms`);
1616
+ this._loadTimeout = setTimeout(() => {
1617
+ if (!fired) {
1618
+ if (this.inactiveVideo.readyState >= 2) onReady();
1619
+ else this._currentErrorHandler();
1620
+ }
1621
+ }, extra);
1622
+ return;
1623
+ }
1624
  if (this.inactiveVideo.readyState >= 2) {
1625
  onReady();
1626
  } else {