-
Notifications
You must be signed in to change notification settings - Fork 929
Open
Labels
bugSomething isn't workingSomething isn't workingpkg:instrumentation-fetchpriority:p1Bugs which cause problems in end-user applications such as crashes, data inconsistencies, etcBugs which cause problems in end-user applications such as crashes, data inconsistencies, etc
Description
What happened?
Problem Description
When using flv.js
to play video streams, the player.destroy()
method successfully releases HTTP connections before integrating OpenTelemetry. However, after adding OpenTelemetry instrumentation, the HTTP connections remain active and are not properly released when calling player.destroy()
.
Environment
- Framework: Vite + Vanilla JavaScript
- Video Player: flv.js v1.6.2
- OpenTelemetry Packages:
- @opentelemetry/sdk-trace-web
- @opentelemetry/instrumentation-fetch
- @opentelemetry/context-zone
- @opentelemetry/instrumentation
Steps to Reproduce
-
Without OpenTelemetry (Working):
// Create FLV player const flvPlayer = flvjs.createPlayer({ type: 'flv', url: 'http://example.com/stream.flv' }); // Attach to video element flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); // Destroy player - HTTP connections are properly released flvPlayer.destroy();
-
With OpenTelemetry (Not Working):
// Initialize OpenTelemetry import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'; import { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; const provider = new WebTracerProvider(); provider.register(); registerInstrumentations({ instrumentations: [new FetchInstrumentation()], }); // Create FLV player (same as above) const flvPlayer = flvjs.createPlayer({ type: 'flv', url: 'http://example.com/stream.flv' }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); // Destroy player - HTTP connections remain active flvPlayer.destroy();
Expected Behavior
- HTTP connections should be properly closed and released when calling
player.destroy()
- Network resources should be cleaned up
- No lingering connections in browser's Network tab
Actual Result
- HTTP connections remain active after
player.destroy()
- Network requests continue to show as not finished in browser's Network tab
- Memory usage may increase over time due to unreleased connections
OpenTelemetry Setup Code
import {
ConsoleSpanExporter,
SimpleSpanProcessor,
WebTracerProvider,
} from '@opentelemetry/sdk-trace-web';
import { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch';
import { ZoneContextManager } from '@opentelemetry/context-zone';
import { registerInstrumentations } from '@opentelemetry/instrumentation';
import flvjs from 'flv.js';
const provider = new WebTracerProvider({
spanProcessors: [new SimpleSpanProcessor(new ConsoleSpanExporter())]
});
provider.register({
contextManager: new ZoneContextManager(),
});
registerInstrumentations({
instrumentations: [new FetchInstrumentation()],
});
package.json
{
"name": "flv.js-otl",
"version": "1.0.0",
"description": "FLV.js demo project with OpenTelemetry integration",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"devDependencies": {
"vite": "^7.1.3"
},
"dependencies": {
"@opentelemetry/context-zone": "^2.0.1",
"@opentelemetry/instrumentation": "^0.203.0",
"@opentelemetry/instrumentation-fetch": "^0.203.0",
"flv.js": "^1.6.2"
}
}
Relevant log output
content.js:1 Simple Autoscroll Loaded
flv__js.js?v=609e0f72:9113 [MSEController] > MediaSource onSourceOpen
flv__js.js?v=609e0f72:9113 [FLVDemuxer] > Parsed onMetaData
flv__js.js?v=609e0f72:9113 [FLVDemuxer] > Parsed AudioSpecificConfig
flv__js.js?v=609e0f72:9113 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord
flv__js.js?v=609e0f72:9113 [MSEController] > Received Initialization Segment, mimeType: audio/mp4;codecs=mp4a.40.2
flv__js.js?v=609e0f72:9113 [MSEController] > Received Initialization Segment, mimeType: video/mp4;codecs=avc1.64001e
hook.js:608 [FlvPlayer] > Playback seems stuck at 0, seek to 1.032
overrideMethod @ hook.js:608
__webpack_modules__../src/utils/logger.js.Log2.w @ flv__js.js?v=609e0f72:9082
__webpack_modules__../src/player/flv-player.js.FlvPlayer2._checkAndResumeStuckPlayback @ flv__js.js?v=609e0f72:6855
__webpack_modules__../src/player/flv-player.js.FlvPlayer2._onvProgress @ flv__js.js?v=609e0f72:6912
invokeTask @ @opentelemetry_context-zone.js?v=609e0f72:545
runTask @ @opentelemetry_context-zone.js?v=609e0f72:326
invokeTask @ @opentelemetry_context-zone.js?v=609e0f72:622
invokeTask @ @opentelemetry_context-zone.js?v=609e0f72:1123
globalCallback @ @opentelemetry_context-zone.js?v=609e0f72:1144
globalZoneAwareCallback @ @opentelemetry_context-zone.js?v=609e0f72:1169
Operating System and Version
Ubuntu 24.04
Runtime and Version
Chrome 135
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingpkg:instrumentation-fetchpriority:p1Bugs which cause problems in end-user applications such as crashes, data inconsistencies, etcBugs which cause problems in end-user applications such as crashes, data inconsistencies, etc