Skip to content

MigrationOpTracker incorrectly reports latency values greater than 999 ms #132

@thatfrankdev

Description

@thatfrankdev

Describe the bug

MigrationOpTracker reports the sub-second millisecond part of the TimeSpan instances provided via the Latency method, rather than their full ms duration.

To reproduce

using System;
using LaunchDarkly.Logging;
using LaunchDarkly.Sdk;
using LaunchDarkly.Sdk.Server;
using LaunchDarkly.Sdk.Server.Migrations;
using Xunit;
using Xunit.Abstractions;

namespace LdBugReport;

public class ReproTest
{
    private readonly ITestOutputHelper _output;

    public ReproTest(ITestOutputHelper output)
    {
        _output = output;
    }
    
    [Fact]
    public void ReproduceBug()
    {
        using var ldClient = new LdClient(
            Configuration.Builder("YOUR-KEY")
            .Logging(Logs.ToMethod(msg => _output.WriteLine(msg)))
            .Build());

        var variation = ldClient.MigrationVariation(
            "YOUR-MIGRATION-FLAG",
            Context.Builder(ContextKind.Default, "anon").Anonymous(true).Build(),
            MigrationStage.Off);
        
        variation.Tracker.Op(MigrationOperation.Write);
        variation.Tracker.Invoked(MigrationOrigin.Old);
        variation.Tracker.Invoked(MigrationOrigin.New);
        variation.Tracker.Latency(MigrationOrigin.Old, TimeSpan.FromMilliseconds(1100));
        variation.Tracker.Latency(MigrationOrigin.New, TimeSpan.FromMilliseconds(1200));
        
        ldClient.TrackMigration(variation.Tracker);
        
        // By observing test output, we can see that latencies values sent are 100 and 200, which are
        // the sub-second millisecond part of the TimeSpan instances, rather that being their TotalMillisecond value
    }
}

Expected behavior

TimeSpan.TotalMilliseconds should be used here:

Old = _oldLatency?.Milliseconds,

SDK version
8.9.0

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions