prestodb/presto · error · IllegalArgumentException
could not create spill path %s; adjust experimental.spiller-
Error message
could not create spill path %s; adjust experimental.spiller-spill-path config property or filesystem permissions
What it means
Configuration error raised when FileSingleStreamSpillerFactory initializes: none of the configured spill paths could be created. This is a sentinel guard for a server-side setup problem — the query cannot spill memory to disk until the spill path config or filesystem permissions are fixed.
Source
Thrown at presto-main-base/src/main/java/com/facebook/presto/spiller/FileSingleStreamSpillerFactory.java:106
ListeningExecutorService executor,
BlockEncodingSerde blockEncodingSerde,
SpillerStats spillerStats,
List<Path> spillPaths,
double maxUsedSpaceThreshold,
CompressionCodec spillCompressionCodec,
boolean spillEncryptionEnabled)
{
this.serdeFactory = new PagesSerdeFactory(requireNonNull(blockEncodingSerde, "blockEncodingSerde is null"), spillCompressionCodec);
this.executor = requireNonNull(executor, "executor is null");
this.spillerStats = requireNonNull(spillerStats, "spillerStats can not be null");
requireNonNull(spillPaths, "spillPaths is null");
this.spillPaths = ImmutableList.copyOf(spillPaths);
spillPaths.forEach(path -> {
try {
createDirectories(path);
}
catch (IOException e) {
throw new IllegalArgumentException(
format("could not create spill path %s; adjust experimental.spiller-spill-path config property or filesystem permissions", path), e);
}
if (!path.toFile().canWrite()) {
throw new IllegalArgumentException(
format("spill path %s is not writable; adjust experimental.spiller-spill-path config property or filesystem permissions", path));
}
});
this.maxUsedSpaceThreshold = maxUsedSpaceThreshold;
this.spillEncryptionEnabled = spillEncryptionEnabled;
this.roundRobinIndex = 0;
}
@PostConstruct
public void cleanupOldSpillFiles()
{
spillPaths.forEach(FileSingleStreamSpillerFactory::cleanupOldSpillFiles);
}
View on GitHub (pinned to 55bb57d202)
Solutions
- Set experimental.spiller-spill-path to an existing writable directory
- Grant write permission on the spill directory to the Presto service user
- Create the spill directories on all worker nodes and restart workers
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-main-base/src/main/java/com/facebook/presto/spiller/FileSingleStreamSpillerFactory.java:106 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/76e1ec800a4f637e.
Report an issue: GitHub.