A newly initialized firehose is valid, because IndexTask will read the data multiple times. If input is finished, dataFile will refer to the complete data, which can be read by an unregistered firehose. 

If input is not finished yet but the firehose got killed for some reason, the next firehose created will have to register itself to receive the rest of the data.