xai-org/x-algorithm · error · IllegalArgumentException
Must read at least some data!
Error message
Must read at least some data!
What it means
EvaluationReferenceDataExtraction requires at least one of the --rectweet or --recap boolean flags to be true; both default to false, and reading nothing would produce an empty dataset, so the job throws immediately at argument validation.
Source
Thrown at simclusters/simclusters_v2/scalding/evaluation/EvaluationReferenceDataExtraction.scala:93
}
}
object AdhocTimelinesDataExtraction extends TwitterExecutionApp {
@Override
def job: Execution[Unit] = {
Execution.withArgs { args =>
implicit val dateRange: DateRange =
DateRange.parse(args.list("date"))(DateOps.UTC, DateParser.default)
val outputDir = args("output_dir")
val readRecTweet = args.boolean("rectweet")
val readRecap = args.boolean("recap")
val sampleRate = args.double("sample_rate")
val useTsv = args.boolean("output_tsv")
if (!readRecTweet && !readRecap) {
throw new IllegalArgumentException("Must read at least some data!")
}
val recTweets = if (readRecTweet) {
println("RecTweets are included in the dataset")
TimelinesEngagementDataExtractor.readTimelinesRecTweets(
recTweets =
DailySuffixFeatureSource(TimelinesEngagementDataExtractor.RecTweetHdfsPath).read,
sampleRate = sampleRate)(dateRange)
} else {
TypedPipe.empty
}
val recaps = if (readRecap) {
println("Recaps are included in the dataset")
TimelinesEngagementDataExtractor.readTimelinesRecapTweets(
recapTweets =
DailySuffixFeatureSource(TimelinesEngagementDataExtractor.RecapTweetHdfsPath).read,
sampleRate = sampleRate
)(dateRange)View on GitHub (pinned to 24c60942c5)
Solutions
- Add --rectweet true (or --recap true, or both) to the job arguments
- If you need only one dataset, set exactly one flag and the corresponding reader will run
- Add a usage/help check in the job wrapper that prints required flags before submission
Example fix
// before
val readRecTweet = args.boolean("rectweet")
val readRecap = args.boolean("recap")
if (!readRecTweet && !readRecap) {
throw new IllegalArgumentException("Must read at least some data!")
}
// after (default rectweet to true when neither is specified)
val readRecTweet = args.boolean("rectweet", default = true)
val readRecap = args.boolean("recap")
if (!readRecTweet && !readRecap) {
throw new IllegalArgumentException("Must read at least some data!")
} Defensive patterns
Strategy: validation
Validate before calling
require(args.boolean("rectweet") || args.boolean("recap"),
"At least one of --rectweet or --recap must be true") Prevention
- Always set --rectweet true and/or --recap true in launch configs
- Add a usage banner listing required flags on failure
When it happens
Trigger: Running the job with neither --rectweet true nor --recap true set (they are not defaulting to true via args.boolean).
Common situations: Ad-hoc runs copying a minimal arg set; a scheduler template that omits both flags; renaming of the flags between versions.
Related errors
- Input user_states $str is invalid. Valid states are: " + Use
- Argument [--entity-type] must be provided. Supported options
- --$preferred (or deprecated --$deprecated) must be an intege
- Adhoc runs require a window: pass --date START END or --mont
- (ScoreType, Entity) ($scoreType, ${entity.toString}) not sup
AI-assisted analysis of xai-org/x-algorithm@24c60942c5 (2026-08-28).
Data as JSON: /api/errors/bf397c3ba40f5a51.
Report an issue: GitHub.