The following comment has been added to this issue:
Author: Darryl Miles
Created: Mon, 9 May 2005 3:11 AM
Body:
It has nothing to do with "deploying" this is purely a building issue, if the
XDoclet process fails for whatever reason deployment will not work anyway. If
this XDoclet process fails and doesn't get as far to writing out the descriptor
then you deploy well you get your "potential for all sorts of bugs" (whatever
that means).
Please take a leaf from how Makefile tasks have been constructed for years, and
how all the compilcation tools chain that work under them are specially
constructed to update the target atomically at the end of a sucessful task.
This is really a 101 issue of basic process design.
What difference it makes:
1) It updates the timestamp on the configuration file, so any timestamp based
automatic rebuilding will not rebuild the (currently corrupted) file, as it now
think that the corrupted file is an up-to-date valid file.
This situation is being used in integrated environments that know which files
have one or more XDoclet tags inside them and it checks the timestamp of those
files (for modifications) against the resulting descriptors to know if XDoclet
needs to be run before automatic (debugging) deployment of your application.
2) It leaves behind a corrupt configuration file. This is a major design
error, either the file should be built correctly or it should delete its
corrupted effort. As anything using it would always expect it to be the
complete article (as all times during its existance).
3) My suggestion of how to update resulting files makes sure that updates
appear atomically to the system, no application will ever see a half built
file, even during the moments XDoclet is executing the write() system calls to
emit the output file.
---------------------------------------------------------------------
View this comment:
http://opensource.atlassian.com/projects/xdoclet/browse/XDT-1388?page=comments#action_16511
---------------------------------------------------------------------
View the issue:
http://opensource.atlassian.com/projects/xdoclet/browse/XDT-1388
Here is an overview of the issue:
---------------------------------------------------------------------
Key: XDT-1388
Summary: Invalid files left behind after failed build process
Type: Bug
Status: Open
Priority: Major
Original Estimate: Unknown
Time Spent: Unknown
Remaining: Unknown
Project: XDoclet
Versions:
1.2.3
Assignee: xdoclet-devel (Use for new issues)
Reporter: Darryl Miles
Created: Sat, 7 May 2005 12:35 AM
Updated: Mon, 9 May 2005 3:11 AM
Description:
I think that XDoclet during its building of output files is truncating the
destination file and writing new data directly into it, instead of generateing
the new file as a tmp file in the same dir first then renaming to overwrite.
If an error occurs during the writing process XDoclet seems to just abort where
it is and leave behind a half generated descriptor file.
Bad generation sequence for output.xml:
Open output.xml with O_TRUNC
Read source files writing directly to output.xml
Close output.xml
Good generation sequence for output.xml:
Unlink output.xml.tmp (just in case)
Open output.xml.tmp with O_TRUNC|O_EXCL (any securly generated tmpfile in same
dir will do)
Read source files writing directly to output.xml
Close output.xml.tmp
Rename output.xml.tmp to output.xml
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/xdoclet/secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.
Get your fingers limbered up and give it your best shot. 4 great events, 4
opportunities to win big! Highest score wins.NEC IT Guy Games. Play to
win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20
_______________________________________________
xdoclet-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel