Hi,

To help some migration process with Artemis, we want to add a feature
in our app server to export and import its journal files.

My idea was to leverage the XmlDataExporter and XmlDataImporter from
artemis-cli so that the generated XML is opaque to us and we just have
to deal with the generated files.

First, what is your requirements for this generated XML?
Can I be sure that it will remain compatible with newer versions? i.e.
I can export from Artemis 1.0.0 and import it to Artemis 2.0.0.

There are a few issues with the tools in their current state that
prevents me to use them.

* The exporter only prints to System.out. This is a bug as it should
be able to print to its ActionContext's out stream instead.
* The error are written to System.err. Again, this should be printed
to the ActionContext's err stream instead.
* The commands uses the io.airlift library to display errors.
=> that one is a problem for us. We have our own library to deal with
user input and output. If a problem occurs in the command, I would
like to have access to the exception directly and handle the
presentation to the user myself.

Would it make sense to split these exporter/importer into 2 classes?
* one doing the actual job of reading files and creating the XML. I
would then use this class
* a wrapper built with io.airlift that would be used by artemis-cli

I also noticed a problem with the check in DataAbstract that expects
all directories (journal, paging, bindings, largeMessages) to exist
before exporting their content.
That's actually not true. Artemis will autocreate the journal and
paging directories if the corresponding parameters (create-journal-dir
and create-bindings-dir) is set to true in its configuration. There is
no such parameters for the paging and largemessages directories.

Somehow when our app server starts Artemis, Artemis also creates the
largemessages directory but the paging dir is not created until paging
is actually performed.

Note that you don't see that when using standalone Artemis as the
"artemis run" command explicitly creates them.

What is the correct way to deal with this?
* should the exporter tool accept that some directories do not exist?
* should artemis also allow to auto create the paging and largemessages dir?

thanks,
jeff

-- 
Jeff Mesnil
jmes...@gmail.com
http://jmesnil.net/weblog/

Reply via email to