Skip to content

Getting issue in segment syncing after upgrading to 4.18.2 and disabling streaming #613

@Prarabdh05

Description

@Prarabdh05

Getting this error from split io:

[split-segmentFetcher-0] ERROR io.split.engine.segments.SegmentFetcherImp - RefreshableSegmentFetcher failed: Error occurred when trying to sync segment: moisture-management, since: 1646842584290. Details: java.lang.IllegalStateException: Problem in http get operation: javax.net.ssl.SSLException: Connection reset

Earlier I was using 4.4.2 SDK which was causing unnecessary threads in thread dump even after closing the connection, earlier split.io config we were using:
int featuresRefreshRate = 5;
int segmentsRefreshRate = 60;
int impressionsRefreshRate = 60;

    SplitClientConfig splitConfig =
        SplitClientConfig.builder()
            .featuresRefreshRate(featuresRefreshRate)
            .segmentsRefreshRate(segmentsRefreshRate)
            .impressionsRefreshRate(impressionsRefreshRate)
            .setBlockUntilReadyTimeout(5 * 60 * 60)
            .build();

there we were getting multiple threads of following type whenever creating and closing a connection:
Split-SSERefreshToken-0
SPLIT-SSEConnection-0
SPLIT-PushStatusMonitor-0
SPLIT-PollingMode-0

Later I upgraded the SDK to 4.18.2 with same configs as above and then even after creating a connection, following threads were not getting closed (As checked by getting thread dump locally ) :
Split-SSERefreshToken-0
SPLIT-SSEConnection-0

so I changed the config a little bit:
disabled streaming and increased featureRefreshRate from 5 seconds to 60 seconds
int featuresRefreshRate = 60;
int segmentsRefreshRate = 60;
int impressionsRefreshRate = 60;

    SplitClientConfig splitConfig =
        SplitClientConfig.builder()
            .featuresRefreshRate(featuresRefreshRate)
            .segmentsRefreshRate(segmentsRefreshRate)
            .impressionsRefreshRate(impressionsRefreshRate)
            .streamingEnabled(false)
            .setBlockUntilReadyTimeout(5 * 60 * 60)
            .build();

which is now closing all the threads
after deploying to production, threads are getting closed but noticing this issue for multiple segments:

[split-segmentFetcher-0] ERROR io.split.engine.segments.SegmentFetcherImp - RefreshableSegmentFetcher failed: Error occurred when trying to sync segment: moisture-management, since: 1646842584290. Details: java.lang.IllegalStateException: Problem in http get operation: javax.net.ssl.SSLException: Connection reset

also memory usage of our system are increasing rapidly after making above config changes on prod.

is it due to disabling streaming ? If I am enabling streaming then below threads are not getting closed even after destroying the client:
Split-SSERefreshToken-0
SPLIT-SSEConnection-0

above both are an issue in this version or I am using configs incorrectly ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions