Have you tried to decrease the value of stat_interval?
I'm not sure how exactly logstash will shutdown, which tasks it will cancel and which ones it will finish, but I'm assuming that this may have some influence.
From the documentation you have this:
Discovering new files and checking whether they have grown/or shrunk occurs in a loop. This loop will sleep for
stat_intervalseconds before looping again. However, if files have grown, the new content is read and lines are enqueued. Reading and enqueuing across all grown files can take time, especially if the pipeline is congested. So the overall loop time is a combination of thestat_intervaland the file read time.