Re: [vfs] LRUFilesCache safe for production use? Google App Engine/Java plug-in
On May 25, 2009, at 7:10 PM, Vince Bonfanti wrote: I'm working on a Google App Engine/Java (GAE/J) plug-in for VFS (it's almost done) and have a few questions: 1. Is the LRUFilesCache safe for production use? GAE/J won't allow using the default SoftRefFilesCache because it doesn't allow background threads. I've found a few really old messages saying things like SoftRefFilesCache is the only implementation suitable for production use and other file cache implementation might cause resouce leaks, etc. To be honest, I've only glanced over these classes. 2. I might be interested in contributing my implementation, either as a 3rd party plug-in or to be included with the standard VFS package, but don't know how to go about this. Is there someone currently in charge of VFS? This is an Apache project. The Apache Commons PMC manages all the Commons projects, but it is up to the committers to collectively make decisions. The normal route of contributing is to create a Jira issue and attach a patch. One of the VFS committers will review it and then comment on it one way or another. However, as this is a completely volunteer organization it is unpredictable how long that might take. If you continue to contribute and participate on this list the community will take notice and at some point might offer commit rights. See http://www.apache.org/foundation/how-it-works.html#meritocracy . Ralph - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
RE: [vfs] LRUFilesCache safe for production use? Google App Engine/Java plug-in
Hi! 1. Is the LRUFilesCache safe for production use? GAE/J won't allow using the default SoftRefFilesCache because it doesn't allow background threads. I 've found a few really old messages saying things like SoftRefFilesCache is the only implementation suitable for production use and other file cache implementation might cause resouce leaks, etc. Yes, these messages are still true. Sad to say that, but I realized that too late and planned to fix this, which is not that easy. Using any thing else than the SoftRefFilesChache will introduce memory leaks as the file-system object will not be discarded. You have to call close() on the filesystem, or even better call close on the DefaultFileSystemManager at all and do not use the VFS.getManager() singleton approach. That will also ensure that each and every resource used by the underlaying libraries are closed then too. Ciao, Mario - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [vfs] LRUFilesCache safe for production use? Google App Engine/Java plug-in
On May 25, 2009, at 11:28 PM, Mario Ivankovits wrote: Hi! 1. Is the LRUFilesCache safe for production use? GAE/J won't allow using the default SoftRefFilesCache because it doesn't allow background threads. I 've found a few really old messages saying things like SoftRefFilesCache is the only implementation suitable for production use and other file cache implementation might cause resouce leaks, etc. Yes, these messages are still true. Sad to say that, but I realized that too late and planned to fix this, which is not that easy. Using any thing else than the SoftRefFilesChache will introduce memory leaks as the file-system object will not be discarded. You have to call close() on the filesystem, or even better call close on the DefaultFileSystemManager at all and do not use the VFS.getManager() singleton approach. That will also ensure that each and every resource used by the underlaying libraries are closed then too. Actually, I commented out the call to filesystemclose in SoftRelFilesCache. While looking at the FileSystem implementation I realized that the way close is implemented is not thread safe and can't be called while the system is running. I believe the fix for this is non-trivial. Ralph - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[Commons Wiki] Update of CLI by EmmanuelBourg
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by EmmanuelBourg: http://wiki.apache.org/commons/CLI The comment on the change is: Updated the URL of the project -- = About the Commons CLI Library = This wiki site is used for discussion of topics associated with the - commons-cli project whose home page is http://jakarta.apache.org/commons/cli + commons-cli project whose home page is http://commons.apache.org/cli @@ -79, +79 @@ The above code will not work in all cases, hence I discarded it. The problem is that the Activator.CreateInstance method's second parameter requires either a null value for a parameterless constructor, or a parameter array to pass to the constructor of the type you are attempting to create. As seen in OptionTest.java (and now OptionTest.cs), the DefaultOption class that extends Option does not implement a parameterless constructor, and in fact does not even override all of Option's constructors, just one. So, while using the CreateInstance method *would* result in the proper object type once cloned, it is cumbersome (although possible) to know the right constructor parameters to pass to the CreateInstance method. Even if you do figure out the parameters needed, you still have the task of cloning the new Option's properties, some of which are not publicly scoped. - Instead, I am serializing the object to be cloned and deserialzing it into a new copy. Like so: + Instead, I am serializing the object to be cloned and deserializing it into a new copy. Like so: {{{ BinaryFormatter bf = new BinaryFormatter(); - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[Commons Wiki] Update of CLI by EmmanuelBourg
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by EmmanuelBourg: http://wiki.apache.org/commons/CLI The comment on the change is: Removed the documentation bugs (obsolete) -- * [http://www.devx.com/Java/Article/30117 Extend the JDK Classes with Jakarta Commons, Part III] - Explore Jakarta Commons components that enable you to parse arguments in a command-line application, connect to various file systems at the same time, allow an application to uniformly access configurations loaded from various sources, and pool any object. - = Documentation Bugs = - - The Usage Scenarios documentation shows the PosixParser being used for the Ant example. This won't work. Either the BasicParser or GnuParser should be used for this example. - - The [http://jakarta.apache.org/commons/cli/usage.html Usage Scenarios] documentation gives an API usage example for the Ant '''logfile''' option of: - - {{{Option logfile = OptionBuilder.withArgName( file )}}}[[BR]] - {{{.hasArg()}}}[[BR]] - {{{.withDescription( use given file for log )}}}[[BR]] - {{{.create( }}}''file''{{{ );}}} - - This should instead be: - - {{{Option logfile = OptionBuilder.withArgName( file )}}}[[BR]] - {{{.hasArg()}}}[[BR]] - {{{.withDescription( use given file for log )}}}[[BR]] - {{{.create( }}}'''logfile'''{{{ );}}} - - Similarly for the '''find''' option: - - {{{Option find = OptionBuilder.withArgName( file )}}}[[BR]] - {{{.hasArg()}}}[[BR]] - {{{.withDescription( use given file for log )}}}[[BR]] - {{{.create( }}}'''find'''{{{ );}}} - - - The section titled Retrieving the argument value shows an example of accessing the getOptionValue() method of Options. This is actually a method of CommandLine. - - {{{// get c option value}}}[[BR]] - {{{String countryCode = }}}''options''{{{.getOptionValue(c);}}} // (Wrong if options is an instance of Options) - - This should instead be: - - {{{// get c option value}}}[[BR]] - {{{String countryCode = }}}'''cmd'''{{{.getOptionValue(c);}}} // (Here cmd is an instance of CommandLine) - - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[Commons Wiki] Update of CLI by EmmanuelBourg
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by EmmanuelBourg: http://wiki.apache.org/commons/CLI The comment on the change is: Removed the mention of CLI 2 being almost finished -- There has only been minimal bug testing performed on the port, as it was ported to serve a particular need. Please [http://code.lostcreations.com/newticket?id=code/newticketowner=akutzpriority=minorcomponent=CLI submit bug reports] as you find them, or [http://code.lostcreations.com/report/16 view a list of outstanding issues]. + == Release 2.0 - Update == - We are currently working on the final touches of releasing the 2.0 release. The tasks that remain are to improve code coverage, review and complete javadoc, and complete user documentation. + CLI2 has been moved to the sandbox and becomes a separate project. Contributions are welcome! + == Bad 1.0 release on Ibiblio (Maven) == - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[Commons Wiki] Update of CLI/Projects by EmmanuelBourg
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by EmmanuelBourg: http://wiki.apache.org/commons/CLI/Projects The comment on the change is: Updated the version used by Groovy -- - * [http://groovy.codehaus.org/ Groovy] version 1.? + * [http://groovy.codehaus.org/ Groovy] version 1.2 * [http://azureus.sourceforge.net/ Azureus] (optional command line interface) version 1.1 * [http://checkstyle.sourceforge.net/cmdline.html CheckStyle] version 1.0 * [http://www.nanocontainer.org/ NanoContainer] (Booter component) version 1.0 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[Commons Wiki] Update of CLI/Projects by RusselWinder
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by RusselWinder: http://wiki.apache.org/commons/CLI/Projects -- - * [http://groovy.codehaus.org/ Groovy] version 1.2 + * [http://groovy.codehaus.org/ Groovy] version 1.6 * [http://azureus.sourceforge.net/ Azureus] (optional command line interface) version 1.1 * [http://checkstyle.sourceforge.net/cmdline.html CheckStyle] version 1.0 * [http://www.nanocontainer.org/ NanoContainer] (Booter component) version 1.0 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[Commons Wiki] Update of CLI/dotnet by EmmanuelBourg
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by EmmanuelBourg: http://wiki.apache.org/commons/CLI/dotnet The comment on the change is: Created a separate page for the C# port New page: .NET CLI is a C# port of the Commons CLI API. The project is hosted on SourceForge and maintained by Schley Andrew Kutz. For more information see http://sf.net/projects/dotnetcli = News = == .NET CLI and Object.MemberwiseClone == A helpful reader pointed out that .NET '''does''' have a shallow clone method defined on the Object class called '''MemberwiseClone'''. I have updated the Option class to use this method (that I somehow stupidly forgot about) and removed the requirement that anything deriving from Option must implement ICloneable or be serializable. == C# port now referred to as .NET CLI == The port is called .NET CLI, and the unix name on SourceForge is dotnetcli. The project has a default namespace of net.sf.dotnetcli. == C# port now hosted on SourceForge == The URL is http://sf.net/projects/dotnetcli/. == Updates on C# port - Unit testing almost complete, and changes == The unit tests from 1.1 of CLI have almost all been ported to the C# version. I am happy to say that the port passes 45/45 of the tests ported so far. The following additional changes have been implemented in the C# port: - In C# you cannot access a static method, field, or property accessor from an instance reference (static or otherwise), hence the following code is illegal: {{{ Option timeLimit = OptionBuilder .withLongOpt(limit) .hasArg() .withValueSeparator() .withDescription(Set time limit for execution, in mintues) .create(l); }}} So, in order to maintain elegance I have come up with a solution. I have changed OptionBuilder's static methods to instance methods, but created a static property accessor called 'Factory'. Factory is defined as such: {{{ /// summary /// Returns a static instance of OptionBuilder. /// /summary public static OptionBuilder Factory { get { return instance; } } }}} So the original code now works with one small variation: {{{ Option timeLimit = OptionBuilder.Factory .withLongOpt(limit) .hasArg() .withValueSeparator() .withDescription(Set time limit for execution, in mintues) .create(l); }}} - In C# all classes derive from Object, just like Java. Even primitive types are automatically boxed and unboxed into Object-derived subclasses, just like Java. For a class to be cloneable it must implement the interface ICloneable and the method 'public object Clone()', just like Java. However, unlike Java, Object does not implement a shallow clone method. This means that the logic you implement in your own clone method cannot call the super (or base as it is in C#) class's Clone method to get a typed, shallow clone. This would not necessarily be a big deal as you could just create a new class that you are attempting to clone, but if you do this you would have to be able to clone its properties (assuming they are publicly accessible or can be set via a constructor) manually -- a cumbersome task. '''check this.MemberwiseClone()''' You see the problem. Option is cloneable, and it relies on the Object's clone method. I toyed around porting this functionality via two methods. The first method looked like this: {{{ object clone = Activator.CreateInstance( this.GetType(), null ); ( clone as Option ).m_alist_values = new Liststring( m_alist_values ); return clone; }}} The above code will not work in all cases, hence I discarded it. The problem is that the Activator.CreateInstance method's second parameter requires either a null value for a parameterless constructor, or a parameter array to pass to the constructor of the type you are attempting to create. As seen in OptionTest.java (and now OptionTest.cs), the DefaultOption class that extends Option does not implement a parameterless constructor, and in fact does not even override all of Option's constructors, just one. So, while using the CreateInstance method *would* result in the proper object type once cloned, it is cumbersome (although possible) to know the right constructor parameters to pass to the CreateInstance method. Even if you do figure out the parameters needed, you still have the task of cloning the new Option's properties, some of which are not publicly scoped. Instead, I am serializing the object to be cloned and deserializing it into a new copy. Like so: {{{ BinaryFormatter bf = new BinaryFormatter(); MemoryStream memStream = new MemoryStream(); bf.Serialize( memStream, this ); memStream.Flush(); memStream.Position = 0; object clone = ( bf.Deserialize( memStream ) ); ( clone as Option ).m_alist_values = new Liststring( m_alist_values ); return clone; }}} This method is certainly not as efficient as a simple
[Commons Wiki] Update of CLI by EmmanuelBourg
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by EmmanuelBourg: http://wiki.apache.org/commons/CLI The comment on the change is: Removed the news about .NET CLI and added a link to the project in the resources -- = News = - - == .NET CLI and Object.MemberwiseClone == - - A helpful reader pointed out that .NET '''does''' have a shallow clone method defined on the Object class called '''MemberwiseClone'''. I have updated the Option class to use this method (that I somehow stupidly forgot about) and removed the requirement that anything deriving from Option must implement ICloneable or be serializable. - - == C# port now referred to as .NET CLI == - - The port is called .NET CLI, and the unix name on SourceForge is dotnetcli. The project has a default namespace of net.sf.dotnetcli. - - == C# port now hosted on SourceForge == - - The URL is http://sf.net/projects/dotnetcli/. - - == Updates on C# port - Unit testing almost complete, and changes == - - The unit tests from 1.1 of CLI have almost all been ported to the C# version. I am happy to say that the port passes 45/45 of the tests ported so far. The following additional changes have been implemented in the C# port: - - - In C# you cannot access a static method, field, or property accessor from an instance reference (static or otherwise), hence the following code is illegal: - - {{{ - Option timeLimit = OptionBuilder - .withLongOpt(limit) - .hasArg() - .withValueSeparator() - .withDescription(Set time limit for execution, in mintues) - .create(l); - }}} - - So, in order to maintain elegance I have come up with a solution. I have changed OptionBuilder's static methods to instance methods, but created a static property accessor called 'Factory'. Factory is defined as such: - - {{{ - /// summary - /// Returns a static instance of OptionBuilder. - /// /summary - public static OptionBuilder Factory - { - get { return instance; } - } - }}} - - So the original code now works with one small variation: - - {{{ - Option timeLimit = OptionBuilder.Factory - .withLongOpt(limit) - .hasArg() - .withValueSeparator() - .withDescription(Set time limit for execution, in mintues) - .create(l); - }}} - - - In C# all classes derive from Object, just like Java. Even primitive types are automatically boxed and unboxed into Object-derived subclasses, just like Java. For a class to be cloneable it must implement the interface ICloneable and the method 'public object Clone()', just like Java. However, unlike Java, Object does not implement a shallow clone method. This means that the logic you implement in your own clone method cannot call the super (or base as it is in C#) class's Clone method to get a typed, shallow clone. This would not necessarily be a big deal as you could just create a new class that you are attempting to clone, but if you do this you would have to be able to clone its properties (assuming they are publicly accessible or can be set via a constructor) manually -- a cumbersome task. - - '''check this.MemberwiseClone()''' - - You see the problem. Option is cloneable, and it relies on the Object's clone method. I toyed around porting this functionality via two methods. The first method looked like this: - - {{{ - object clone = Activator.CreateInstance( this.GetType(), null ); - ( clone as Option ).m_alist_values = new Liststring( m_alist_values ); - return clone; - }}} - - The above code will not work in all cases, hence I discarded it. The problem is that the Activator.CreateInstance method's second parameter requires either a null value for a parameterless constructor, or a parameter array to pass to the constructor of the type you are attempting to create. As seen in OptionTest.java (and now OptionTest.cs), the DefaultOption class that extends Option does not implement a parameterless constructor, and in fact does not even override all of Option's constructors, just one. So, while using the CreateInstance method *would* result in the proper object type once cloned, it is cumbersome (although possible) to know the right constructor parameters to pass to the CreateInstance method. Even if you do figure out the parameters needed, you still have the task of cloning the new Option's properties, some of which are not publicly scoped. - - Instead, I am serializing the object to be cloned and deserializing it into a new copy. Like so: - - {{{ - BinaryFormatter bf = new BinaryFormatter(); - MemoryStream memStream = new MemoryStream(); - bf.Serialize( memStream, this ); - memStream.Flush(); - memStream.Position = 0; - object clone = ( bf.Deserialize( memStream ) ); - ( clone as Option ).m_alist_values = new Liststring( m_alist_values ); - return clone; -
[g...@vmgump]: Project commons-configuration-test (in module apache-commons) failed
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at gene...@gump.apache.org. Project commons-configuration-test has an issue affecting its community integration. This issue affects 1 projects, and has been outstanding for 99 runs. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - commons-configuration-test : Apache Commons Full details are available at: http://vmgump.apache.org/gump/public/apache-commons/commons-configuration-test/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -WARNING- Overriding Maven2 settings: [/srv/gump/public/workspace/apache-commons/configuration/gump_mvn_settings.xml] -DEBUG- (Gump generated) Maven2 Settings in: /srv/gump/public/workspace/apache-commons/configuration/gump_mvn_settings.xml -INFO- Failed with reason build failed -DEBUG- Maven POM in: /srv/gump/public/workspace/apache-commons/configuration/pom.xml -INFO- Project Reports in: /srv/gump/public/workspace/apache-commons/configuration/target/surefire-reports The following work was performed: http://vmgump.apache.org/gump/public/apache-commons/commons-configuration-test/gump_work/build_apache-commons_commons-configuration-test.html Work Name: build_apache-commons_commons-configuration-test (Type: Build) Work ended in a state of : Failed Elapsed: 1 min 40 secs Command Line: mvn --batch-mode --settings /srv/gump/public/workspace/apache-commons/configuration/gump_mvn_settings.xml test [Working Directory: /srv/gump/public/workspace/apache-commons/configuration] CLASSPATH: /usr/lib/jvm/java-6-sun/lib/tools.jar:/srv/gump/public/workspace/apache-commons/configuration/target/commons-configuration-1.7-SNAPSHOT.jar - testAddNodesCopy(org.apache.commons.configuration.TestXMLConfiguration) testInitCopy(org.apache.commons.configuration.TestXMLConfiguration) testSetRootAttribute(org.apache.commons.configuration.TestXMLConfiguration) testLoadAndSaveFromFile(org.apache.commons.configuration.TestXMLConfiguration) testSaveToURL(org.apache.commons.configuration.TestXMLConfiguration) testSaveToStream(org.apache.commons.configuration.TestXMLConfiguration) testAutoSave(org.apache.commons.configuration.TestXMLConfiguration) testSaveAttributes(org.apache.commons.configuration.TestXMLConfiguration) testCloneWithSave(org.apache.commons.configuration.TestXMLConfiguration) testEmptyElements(org.apache.commons.configuration.TestXMLConfiguration) testSaveWithEncoding(org.apache.commons.configuration.TestXMLConfiguration) testSaveWithNullEncoding(org.apache.commons.configuration.TestXMLConfiguration) testSaveWithDoctype(org.apache.commons.configuration.TestXMLConfiguration) testSaveWithDoctypeIDs(org.apache.commons.configuration.TestXMLConfiguration) testSubsetWithReload(org.apache.commons.configuration.TestXMLConfiguration) testConfigurationAtWithReload(org.apache.commons.configuration.TestXMLConfiguration) testConfigurationsAtWithReload(org.apache.commons.configuration.TestXMLConfiguration) testGetKeysWithReload(org.apache.commons.configuration.TestXMLConfiguration) testSetTextRootElement(org.apache.commons.configuration.TestXMLConfiguration) testClearTextRootElement(org.apache.commons.configuration.TestXMLConfiguration) testAutoSaveWithSubnodeConfig(org.apache.commons.configuration.TestXMLConfiguration) testAutoSaveWithSubSubnodeConfig(org.apache.commons.configuration.TestXMLConfiguration) testSaveDelimiterParsingDisabled(org.apache.commons.configuration.TestXMLConfiguration) testSaveDelimiterParsingDisabledAttrs(org.apache.commons.configuration.TestXMLConfiguration) testMultipleAttrValuesEscaped(org.apache.commons.configuration.TestXMLConfiguration) testAutoSaveWithReloadingStrategy(org.apache.commons.configuration.TestXMLConfiguration) testAutoSaveAddNodes(org.apache.commons.configuration.TestXMLConfiguration) testAddNodesAndSave(org.apache.commons.configuration.TestXMLConfiguration) testRegisterEntityId(org.apache.commons.configuration.TestXMLConfiguration) testSaveAfterCreateWithCopyConstructor(org.apache.commons.configuration.TestXMLConfiguration) testCopyRootName(org.apache.commons.configuration.TestXMLConfiguration) testCopyRootNameNoDocument(org.apache.commons.configuration.TestXMLConfiguration) testSaveWithValidation(org.apache.commons.configuration.TestXMLConfiguration) testSaveWithValidationFailure(org.apache.commons.configuration.TestXMLConfiguration) Tests run: 1419, Failures: 0, Errors: 52, Skipped: 0 [INFO] [ERROR] BUILD FAILURE [INFO]
[Commons Wiki] Update of FrontPage by EmmanuelBourg
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by EmmanuelBourg: http://wiki.apache.org/commons/FrontPage The comment on the change is: Added a link to the CLI2 page -- TheSandbox is an open workspace for jakarta committers. This is also divided into components. On this wiki: + + * [:CLI2] - An experimental rewrite of the Commons CLI API + * [:CommonsCsv] - Proposed new component * [:Id] - Generators for identifiers - * [:CommonsCsv] - Proposed new component * [:ME] - Provides JaveME helpers, and implementations of JavaSE functionality that JavaME lacks but programmers want * [:Metadata] - Proposed new component which provides a class metadata API similar to that of JDK5 + - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[Commons Wiki] Update of CLI/Projects by EmmanuelBourg
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by EmmanuelBourg: http://wiki.apache.org/commons/CLI/Projects The comment on the change is: Projects displayed in a table, and links to the Maven dependencies -- + This is a list of projects using Commons CLI : - * [http://groovy.codehaus.org/ Groovy] version 1.6 - * [http://azureus.sourceforge.net/ Azureus] (optional command line interface) version 1.1 - * [http://checkstyle.sourceforge.net/cmdline.html CheckStyle] version 1.0 - * [http://www.nanocontainer.org/ NanoContainer] (Booter component) version 1.0 - * [http://xsite.codehaus.org/ XSite] version 1.0 + || '''Project''' || '''Version''' || '''CLI''' || + || [http://groovy.codehaus.org/ Groovy] || 1.6.1 || 1.2 || + || [http://checkstyle.sourceforge.net/cmdline.html CheckStyle] || 5.0 || 1.0 || + || [http://www.nanocontainer.org/ NanoContainer] (Booter component) || ? || 1.0 || + || [http://azureus.sourceforge.net/ Azureus] (optional command line interface) || ? || 1.1 || + || [http://xsite.codehaus.org/ XSite] || ? || 1.0 || + + Projects using CLI can also be tracked from the MVNrepository site: + + * CLI 1.2 http://mvnrepository.com/artifact/commons-cli/commons-cli/1.2 + * CLI 1.1 http://mvnrepository.com/artifact/commons-cli/commons-cli/1.1 + * CLI 1.0 http://mvnrepository.com/artifact/commons-cli/commons-cli/1.0 + - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[vfs] caching (was: [vfs] LRUFilesCache safe for production use? Google App Engine/Java plug-in)
Hi! Actually, I commented out the call to filesystemclose in SoftRelFilesCache. While looking at the FileSystem implementation I realized that the way close is implemented is not thread safe and can't be called while the system is running. I believe the fix for this is non-trivial. That is strange, there should be no real problem if it is not thread safe as no other thread is holding a reference to a fileObject any more. Anyway, I think (and I had this on my todo to discuss this earlier, but my work load is still way too high :-( ) all this needs a major refactoring. First of all, instead of FileManager.resolveFile() we should introduce FileManager.mount(path) FileManager.unmount(FileObject). mount will always create a new file-system which will be kept only within the FileObject. A file-system then will go away when the last FileObject is out of scope, or when one calls FileManager.unmount(FileObject). All the synchronization stuff might be possible to be removed and leaf to the user application. I'd say, 90% of the use-case of VFS do not need synchronization as there is no need to reuse the same instance of the FileObject between threads. But probably I get this wrong. Given we keep the FileManager.resolveFile() (which then routes to .mount(path)) the side effect would be: 1) VFS.getManager().resolveFile(/tmp) != VFS.getManager().resolveFile(/tmp) 2) VFS.getManager().mount(/tmp) != VFS.getManager().mount(/tmp) 3) FileObject fo = VFS.getManager().mount(/tmp); fo.resolveFile(a) == fo.resolveFile(a) 4) FileObject fo2 = VFS.getManager().mount(/tmp); fo2.resolveFile(a) == fo2.resolveFile(a) fo.resolveFile(a) != fo2.resolveFile(a) If we could argue that, the internals of VFS might become much easier again, and stuff like LRUFilesCache or even NullFilesCache might start to work. Sure, with a NullFilesCache then even 3 is not true, but this is expected then. H If we would like to go that way I might try to spent a night or two to implement it. With VFS 2.0 it is THE time to do it, but yes, it might delay the release again. This is something which happend with VFS always, probably a bad spell - or just me ;-) Ciao, Mario - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[vfs] Dependency to compress
Hi, before ages VFS included the compress classes with own namespace, cause compress wasn't released and VFS had to go ahead. It was planned to replace those vfs.compress classes with a dependency to commons compress. If this is still the plan, I will create an issue for it and would do it straight after my holidays next week :-), if it doesn't conflict with the release of the planned version 2.0. Cheers, Christian - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [vfs] LRUFilesCache safe for production use? Google App Engine/Java plug-in
My code will always run within a servlet, so I can close() the filesystem when the servlet is destroyed. In this case, I should be OK using LRUFilesCache? Thanks, Vince On Tue, May 26, 2009 at 2:28 AM, Mario Ivankovits ma...@ops.co.at wrote: Hi! 1. Is the LRUFilesCache safe for production use? GAE/J won't allow using the default SoftRefFilesCache because it doesn't allow background threads. I 've found a few really old messages saying things like SoftRefFilesCache is the only implementation suitable for production use and other file cache implementation might cause resouce leaks, etc. Yes, these messages are still true. Sad to say that, but I realized that too late and planned to fix this, which is not that easy. Using any thing else than the SoftRefFilesChache will introduce memory leaks as the file-system object will not be discarded. You have to call close() on the filesystem, or even better call close on the DefaultFileSystemManager at all and do not use the VFS.getManager() singleton approach. That will also ensure that each and every resource used by the underlaying libraries are closed then too. Ciao, Mario
RE: [vfs] LRUFilesCache safe for production use? Google App Engine/Java plug-in
Yes, I think so. -Original Message- From: Vince Bonfanti [mailto:vbonfa...@gmail.com] Sent: Tuesday, May 26, 2009 1:14 PM To: Commons Developers List Subject: Re: [vfs] LRUFilesCache safe for production use? Google App Engine/Java plug-in My code will always run within a servlet, so I can close() the filesystem when the servlet is destroyed. In this case, I should be OK using LRUFilesCache? Thanks, Vince On Tue, May 26, 2009 at 2:28 AM, Mario Ivankovits ma...@ops.co.at wrote: Hi! 1. Is the LRUFilesCache safe for production use? GAE/J won't allow using the default SoftRefFilesCache because it doesn't allow background threads. I 've found a few really old messages saying things like SoftRefFilesCache is the only implementation suitable for production use and other file cache implementation might cause resouce leaks, etc. Yes, these messages are still true. Sad to say that, but I realized that too late and planned to fix this, which is not that easy. Using any thing else than the SoftRefFilesChache will introduce memory leaks as the file-system object will not be discarded. You have to call close() on the filesystem, or even better call close on the DefaultFileSystemManager at all and do not use the VFS.getManager() singleton approach. That will also ensure that each and every resource used by the underlaying libraries are closed then too. Ciao, Mario - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
RE: [vfs] Dependency to compress
before ages VFS included the compress classes with own namespace, cause compress wasn't released and VFS had to go ahead. It was planned to replace those vfs.compress classes with a dependency to commons compress. If this is still the plan, I will create an issue for it and would do it straight after my holidays next week :-), if it doesn't conflict with the release of the planned version 2.0. I think, best would be to start in VFS sandbox a _writeable_ zip/whatever impl using commons-compress. Once it works, we can drop the old impl and the copied classes. Ciao, Mario
[Commons Wiki] Update of CLI/Projects by EmmanuelBourg
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by EmmanuelBourg: http://wiki.apache.org/commons/CLI/Projects The comment on the change is: Added JOTM -- This is a list of projects using Commons CLI : - || '''Project''' || '''Version''' || '''CLI''' || + || '''Project''' || '''Version''' || '''CLI''' || - || [http://groovy.codehaus.org/ Groovy] || 1.6.1 || 1.2 || + || [http://groovy.codehaus.org Groovy] || 1.6.1 || 1.2 || - || [http://checkstyle.sourceforge.net/cmdline.html CheckStyle] || 5.0 || 1.0 || + || [http://checkstyle.sourceforge.net/cmdline.html CheckStyle] || 5.0 || 1.0 || - || [http://www.nanocontainer.org/ NanoContainer] (Booter component) || ? || 1.0 || + || [http://nanocontainer.org NanoContainer] (Booter component) || ? || 1.0 || - || [http://azureus.sourceforge.net/ Azureus] (optional command line interface) || ? || 1.1 || + || [http://azureus.sourceforge.net Azureus/Vuze] (optional command line interface) || 4.2 || 1.1 || - || [http://xsite.codehaus.org/ XSite] || ? || 1.0 || + || [http://xsite.codehaus.org XSite] || 1.0 || 1.1 || + || [http://jotm.ow2.org JOTM - Java Open Transaction Manager] || 2.1.4 || 1.1 || Projects using CLI can also be tracked from the MVNrepository site: - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[Commons Wiki] Update of CLI/Projects by RusselWinder
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by RusselWinder: http://wiki.apache.org/commons/CLI/Projects -- This is a list of projects using Commons CLI : || '''Project''' || '''Version''' || '''CLI''' || - || [http://groovy.codehaus.org Groovy] || 1.6.1 || 1.2 || + || [http://groovy.codehaus.org Groovy] || 1.6.3 || 1.2 || || [http://checkstyle.sourceforge.net/cmdline.html CheckStyle] || 5.0 || 1.0 || || [http://nanocontainer.org NanoContainer] (Booter component) || ? || 1.0 || || [http://azureus.sourceforge.net Azureus/Vuze] (optional command line interface) || 4.2 || 1.1 || - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[Commons Wiki] Update of CLI/Projects by RusselWinder
Dear Wiki user, You have subscribed to a wiki page or wiki category on Commons Wiki for change notification. The following page has been changed by RusselWinder: http://wiki.apache.org/commons/CLI/Projects -- || '''Project''' || '''Version''' || '''CLI''' || || [http://groovy.codehaus.org Groovy] || 1.6.3 || 1.2 || + || [http://gant.codehaus.org Gant] || 1.6.1 || 1.2 || || [http://checkstyle.sourceforge.net/cmdline.html CheckStyle] || 5.0 || 1.0 || || [http://nanocontainer.org NanoContainer] (Booter component) || ? || 1.0 || || [http://azureus.sourceforge.net Azureus/Vuze] (optional command line interface) || 4.2 || 1.1 || - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [compress] Two issues with releasing the release
+1. The release was/is fine :) On May 21, 2009, at 4:58 PM, Christian Grobmeier wrote: Thanks Rainer. I did the fix and wait for the mirroring now. Hopefully everything works then. I don't think this does require a new vote, RC, etc. since it was just a broker link... right guys? Thanks again, Christian Concerning the download page: I think you need to add the cgi page named download_compress.cgi too. The contents of the file do now depend on the project, and you will find an example in the neighbouring directories, like collections, or configration. The link to the download page has to point to the cgi file, not the html. The cgi file will load the html one and replace the tags. Some of the commons projects seem to put their download pages in the downloads directory (and add them to the index.html there), some seem to prefer to keep it under the project directory. Regards, Rainer - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [pool] Exception in GKOP allocate()
Note that clearOldest() (called in the middle of allocate()) itself calls allocate(). That could explain it. Phil - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [pool] Exception in GKOP allocate()
Phil Steitz wrote: Note that clearOldest() (called in the middle of allocate()) itself calls allocate(). That could explain it. Good catch. That will be it :) clearOldest() also needs to be moved outside of any syncs to prevent possible deadlocks. I'm just setting up commons-performance to make sure I can reproduce the failures and then I'll take a stab at a fix. Mark - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [pool] Exception in GKOP allocate()
Mark Thomas wrote: Phil Steitz wrote: Note that clearOldest() (called in the middle of allocate()) itself calls allocate(). That could explain it. Good catch. That will be it :) clearOldest() also needs to be moved outside of any syncs to prevent possible deadlocks. I'm just setting up commons-performance to make sure I can reproduce the failures and then I'll take a stab at a fix. Fixed. Unit tests and performance test pass without errors. Mark - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[all] Source jars for released components
POOL-141 is asking for source jars for old versions of [pool] to be pushed to maven central. I think we talked about this before in relation to another component, but I can't find the thread and can't recall the resolution. Have we done this before? If so, did we use the source distro or the tag to build the jar and how exactly did we do it (left to my own devices I would add an m2 pom to the sources and just use the source plugin)? Do we need to VOTE? Thanks! Phil - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[continuum] BUILD SUCCESSFUL: Commons - Commons Pool -
Online report : http://vmbuild.apache.org/continuum/buildResult.action?buildId=193296projectId=116 Build statistics: State: Ok Previous State: Failed Started at: Tue 26 May 2009 22:38:36 -0700 Finished at: Tue 26 May 2009 22:40:48 -0700 Total time: 2m 11s Build Trigger: Schedule Build Number: 71 Exit code: 0 Building machine hostname: vmbuild.apache.org Operating system : Linux(unknown) Java Home version : java version 1.6.0_06 Java(TM) SE Runtime Environment (build 1.6.0_06-b02) Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing) Builder version : Maven version: 2.0.9 Java version: 1.6.0_06 OS name: linux version: 2.6.24-23-server arch: i386 Family: unix SCM Changes: Changed: psteitz @ Mon 25 May 2009 11:53:50 -0700 Comment: Prepared for release notes. Files changed: /commons/proper/pool/trunk/pom.xml ( 778467 ) /commons/proper/pool/trunk/src/template ( 778467 ) /commons/proper/pool/trunk/src/template/pool-release-notes.vm ( 778467 ) /commons/proper/pool/trunk/xdocs/changes.xml ( 778467 ) Changed: psteitz @ Mon 25 May 2009 12:33:31 -0700 Comment: Moved test case up in the file. Files changed: /commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericKeyedObjectPool.java ( 778479 ) Changed: psteitz @ Mon 25 May 2009 12:34:55 -0700 Comment: Javadoc fixes. Files changed: /commons/proper/pool/trunk/src/java/org/apache/commons/pool/KeyedObjectPool.java ( 778480 ) /commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/EvictionTimer.java ( 778480 ) Changed: psteitz @ Mon 25 May 2009 19:50:59 -0700 Comment: Dropped maven 1 build. Files changed: /commons/proper/pool/trunk/maven.xml ( 778554 ) /commons/proper/pool/trunk/project.properties ( 778554 ) /commons/proper/pool/trunk/project.xml ( 778554 ) /commons/proper/pool/trunk/release-notes.jsl ( 778554 ) /commons/proper/pool/trunk/src/assembly/src.xml ( 778554 ) Changed: markt @ Tue 26 May 2009 13:33:57 -0700 Comment: Fix two issues that, oddly, had the same fix. 1. clearOldest() was called from inside a sync block. clearOldest() uses factory methods so must not be called from inside a sync block to prevent possible deadlocks. 2. clearOldest() calls allocate which set up a recursive call to allocate() which in turn emptied the allocation queue. This caused breakage as the recursive call unwound and items expected to be in the allocation queue were no longer there. Files changed: /commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericKeyedObjectPool.java ( 778875 ) Changed: markt @ Tue 26 May 2009 13:46:22 -0700 Comment: Fix POOL-139. Make StackKeyedObjectPool._totActive thread safe Files changed: /commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java ( 778880 ) Changed: psteitz @ Tue 26 May 2009 17:25:34 -0700 Comment: Added POOL-139. Files changed: /commons/proper/pool/trunk/xdocs/changes.xml ( 778934 ) Changed: psteitz @ Tue 26 May 2009 19:14:27 -0700 Comment: Prepare for 1.5-RC1. Files changed: /commons/proper/pool/trunk/pom.xml ( 778963 ) Dependencies Changes: No dependencies changed Build Definition: POM filename: pom.xml Goals: clean deploy Arguments: --batch-mode -DaltDeploymentRepository=vmbuild.repo::default::file://localhost/home/continuum/data/commons -Pci Build Fresh: false Always Build: false Default Build Definition: true Schedule: COMMONS_SCHEDULE Profile Name: JDK 6 Description: Test Summary: Tests: 239 Failures: 0 Errors: 0 Success Rate: 100 Total time: 101.145 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org