I opened a case about this (01763953) and was told that it was expected behaviour and that I should post a feature request on the forum. And here we are!
Veeam 9.0 Update 1 with a 8 slots HP LTO4 tape backup library connected by SCSI to a physical tape server.
Whenever a tape is full and there is no other tape from the same media pool available in the tape library, the tape stays in the drive until a tape is replaced by another one that has free space. When Veeam sees the new tape, it ejects the full tape from the drive to the library slot and loads the new tape. For example, in a 8 slots library, I have 6 slots for the Weekly tapes and 2 slots for the Daily tapes. When both Daily tapes are full, I have 1 Daily tape in the drive and 1 Daily tape in the library. At that point, I have to open the library to replace the Daily tapes but I can only replace the tape that is in the library because the other one is still in the drive. When I replace 1 tape, Veeam loads the new Daily tape and ejects the full Daily tape in the library. Only then can I replace the 2nd Daily tape with a new one.
Why not eject the tape as soon as it's full? There is no point in keeping it in the drive and this would prevent me from having to open the library twice in 5 minutes. The tape jobs are configured to "Eject media upon job completion" and this is working great. The issue is only when there is no tape available in the library. I had this behaviour in 8.0 and there was no change after the upgrade to 9.0 Update 1.