Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ public class TaskManagerConfig

private BigDecimal levelTimeMultiplier = new BigDecimal(2.0);

private Duration longRunningSplitWarningThreshold = new Duration(10, TimeUnit.MINUTES);
private boolean enableInterruptStuckSplits = true;
private Duration interruptStuckSplitsTimeout = new Duration(10, TimeUnit.MINUTES);
private Duration stuckSplitDetectionInterval = new Duration(1, TimeUnit.MINUTES);

@MinDuration("1ms")
@MaxDuration("10s")
@NotNull
Expand Down Expand Up @@ -463,4 +468,58 @@ public TaskManagerConfig setTaskYieldThreads(int taskYieldThreads)
this.taskYieldThreads = taskYieldThreads;
return this;
}

@MinDuration("1ms")
public Duration getLongRunningSplitWarningThreshold()
{
return longRunningSplitWarningThreshold;
}

@Config("task.long-running-split-warning-threshold")
@ConfigDescription("Print out split call stack when it runs longer than this threshold")
public TaskManagerConfig setLongRunningSplitWarningThreshold(Duration longRunningSplitWarningThreshold)
{
this.longRunningSplitWarningThreshold = longRunningSplitWarningThreshold;
return this;
}

public boolean isEnableInterruptStuckSplits()
{
return enableInterruptStuckSplits;
}

@Config("task.enable-interrupt-stuck-splits")
public TaskManagerConfig setEnableInterruptStuckSplits(boolean enableInterruptStuckSplits)
{
this.enableInterruptStuckSplits = enableInterruptStuckSplits;
return this;
}

@MinDuration("1s")
public Duration getInterruptStuckSplitsTimeout()
{
return interruptStuckSplitsTimeout;
}

@Config("task.interrupt-stuck-splits-timeout")
@ConfigDescription("Interrupt task processing thread after this timeout if the thread is stuck in certain external libraries used by Trino functions")
public TaskManagerConfig setInterruptStuckSplitsTimeout(Duration interruptStuckSplitsTimeout)
{
this.interruptStuckSplitsTimeout = interruptStuckSplitsTimeout;
return this;
}

@MinDuration("1ms")
public Duration getStuckSplitDetectionInterval()
{
return stuckSplitDetectionInterval;
}

@Config("task.stuck-split-detection-interval")
@ConfigDescription("Interval between detecting stuck split")
public TaskManagerConfig setStuckSplitDetectionInterval(Duration stuckSplitDetectionInterval)
{
this.stuckSplitDetectionInterval = stuckSplitDetectionInterval;
return this;
}
}
Loading