Hello,

I have a problem for implementing the auto-compile feature of clojuredev
eclipse plugin.

My problem is that it seems that the function 'compile returns very fast to
the clojure dev builder, and when the builder refreshes the workspace
(operation needed to "see" the newly compiled classes), it's ... to early !!

I guess something could be done in clojure.lang.Compiler.writeClassFile()
method to avoid this situation.
The idea could be to make it guarantee that whenever it returns, the changes
are not only flushed to the OS, but also written on disk.
I don't know if this could have significant performance impacts, so maybe it
could be necessary to make this behaviour dependent on some new parameter,
or on a global var (something like *ensure-filesystem-sync*).

I don't have clojuredev yet to test, but the modification would be something
like (new end of clojure.lang.Compiler.writeClassFile()) (case without
conditional on the sync mechanism) :
    FileOutputStream cfs = new FileOutputStream(cf); /// <<<<<<<< change cfs
type to FileOutputStream
    try
        {
        cfs.write(bytecode);
        cfs.flush(); // <<<<<<<<<<<<<<<<<<<<<<<<<<< flush cfs content
        cfs.getFD().sync(); // <<<<<<<<<<<<<<<<<<<<<<<<< call cfs
FileDescriptor's sync() method
        }
    finally
        {
        cfs.close();
        cf.lastModified();
        }


If it is proved that it solves the above mentioned problem, would it be an
acceptable patch ?
Or, if you can think of another way to solve the general problem, please
tell, I'll be glad to know about it !

Regards,

-- 
Laurent PETIT

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to