I am doing bulk data loading through Gatling. I need to step through 5.5 million records in a .csv file. WAY too many to load in at once, so I broke the data into 1000 line .csv files, and use a symlink to point to the “current” chunk of the data. I have a scenario (see below) that plows through the list and makes the necessary requests. When the feeder runs out, everything shuts down, and it’s all good. USUALLY.
In a wrapper script, I consult a configuration file (so I can turn on and off the data load based on time of day), and if the time of day says no-data-load, then it just sleeps. Otherwise, it points the symlink to the next file, and restarts the scenario.
After a couple of weeks of working just fine, something weird happened. Over the weekend, Gatling sat there doing nothing for over 200,000 seconds. So Monday I added a maxDuration of 2,000 seconds. Last night, around midnight, it locked up again and in spite of the maxDuration, it sat there and spun until around 8 am. So far this morning, it has done it at least 3 more times.
NORMALLY, when it exits “cleanly” there is a stack trace right after the line that says “13:12:59.163 [ERROR] i.g.c.a.SingletonFeed - Feeder is now empty, stopping engine”
When it doesn’t exit cleanly, there are log entries about dead letters, and then it sits there indefinitely.
Any ideas about what could be causing this? Or how to fix it? (I am on 2.0.1 at the moment, I will update to 2.2 when it goes gold)
Here’s what the simulation looks like:
`
val findUser =
scenario(“Find User”)
.exec( SessionVariables.initialize )
.exec( RTDE.Login.useExistingTrustedClientToken )
.exitHereIfFailed
.forever {
feed( csv(“add-to-pvs.csv”) )
.exec( _.set( INDIVIDUAL_ID, “NOT-FOUND” ) )
.exec( search( “CED” ) )
.exec( search( “HCMS” ) )
.exec( search( “PYSL” ) )
.exec( search( “FML” ) )
.exec( search( “GWFC” ) )
.exec( search( “CBHR” ) )
.exec( search( “GADB” ) )
.exec( search( “CBH” ) )
.exec( search( “DMND” ) )
.exec( search( “BEN” ) )
.exec( search( “ACLM” ) )
.exec( search( “IFP” ) )
.exec( search( “CPTK” ) )
.exec( search( “QCRE” ) )
.exec( search( “WDEN” ) )
.exec( search( “CWEB” ) )
.exec( search( “CIEB” ) )
.exec( search( “RA” ) )
.exec( search( “PCLG” ) )
.exec( search( “MRR” ) )
.exec( search( “CPI” ) )
}
setUp(
TrustedLogin.flow.inject( atOnceUsers(1) ),
findUser.inject(
nothingFor( 30 seconds ),
rampUsers( Test.numUsers ) over ( Test.rampTime )
)
)
.maxDuration( Test.duration )
`