I remember seeing this issue on this forum already, but afair I couldn't reproduce it.
While Jaikiran and me are guessing something strange is going on with (your) system clock.
hmm.... I strongly doubt though the problem is my system-clock.
It is my development work-station (WinXP), I use it everyday since 2 years and never noticed anything like that.
But I will also try to deploy it on a different Win-box and also a Linux-box here, to see if the behaviour is the same.
Under Win-XP, I found out this:
When you have a new war-file, and hot-deploy it the first time, it seems I always get the double-deploy behaviour.
If I then hot-undeploy, and hot-deploy it again (with same timestamp on the war-file), it does not double-deploy, but only normal single-deploy.
If I then hot-undeploy again, and update the war-file-timestamp + hot-deploy again, it will again double-deploy.
So it seems the double-deploy occurs when it is hot-deployed with a new timestamp not seen before,
but on hot-undeploy + hot-deploy still somehow remembers the last timestamp, which determines if the double-deploy occurs or not.
Hope this can provide you some clue for you?
On Linux, I do not get the double-deploy behaviour.
Hmm.... looking at the log again, it actually looks like it might be a Struts/xwork-issue again...
The last two lines in the server-log, before the automatic second deploy, is:
2011-04-08 INFO [com.opensymphony.xwork2.config.impl.DefaultConfiguration] Overriding property struts.i18n.reload - old value: false new value: true
15:41:36,603 INFO [com.opensymphony.xwork2.config.impl.DefaultConfiguration] Overriding property struts.configuration.xml.reload - old value: false new value: true
Since it says "...reload..." in there....... hmmm.......