Most battles resolve in a few watches, but some battles between missile-armed and missile-protected combatants can last for hours or days.
A good example is duels between starcruisers and Stingers- small Stinger wings can't generate enough combined firepower to have a high chance of destroying a starcruiser, but can fully intercept all missiles. This results in battles that last until one fleet is lost to attrition or a player orders a manual retreat.
I've seen battles go on for days! These were player vs. AI battles; I don't know if this can occur between player fleets but I suspect that it can.
This could become an issue if calculating battles is resource-intensive to the server. Malicious players could set up endless battles to hog server CPU cycles.
The easiest fix would be a timer check to end battles automatically 5 or so watches from the last time that either a player issues an order or a fleet enters the battle (battles that get joined by incoming fleets can go on pretty long too, but this is fun and fine.)
Alternately, an attacking wing could automatically cycle to another target if it isn't destroying any units while firing (not maneuvering) within a certain timeframe, and a fleet should disengage entirely if no wings do damage within a certain time frame. Ideally, missile-equipped wings could merge when their only possible targets are protected- in order to overwhelm defenses- but this might not be possible.
Alternately, a more sophisticated metric than "space forces" could be used to evaluate fleet strength, and battles likely to result in missile protection stalemates could be rejected with an appropriate message without ever starting.