Announcing SmartFrog 3.12.026

Skip to end of metadata
Go to start of metadata

SmartFrog 3.12.026 - released on March 14th, 2008

This is a new release of SmartFrog, the Java-based, LPGL-licensed distributed deployment framework developed by HP Laboratories. SmartFrog enables applications to be deployed across multiple machines, configuring different aspects of the system so that they are all consistently configured, and managing the life-cycle of the application as a whole. The project's home page is http://smartfrog.org/

The release artifacts are available at http://sourceforge.net/project/showfiles.php?group_id=87384&package_id=176308

This release is 3.12.026; built from revision 6168 of the SVN repository. This release has an extended language with the ability to tag attributes, and includes the following items:

  • Core smartfrog daemon, including services to manage files, start and stop Java and native programs.
  • Example components and applications.
  • Ant support: ant tasks to deploy and terminate applications from a build.
  • Ant components: the ability to execute ant tasks in a deployment.
  • Anubis: a partition aware tuple-space that can be used to implement fault tolerant systems.
  • Database: components to issue database commands, and deploy HSLDB and MySQL.
  • JMX: the ability to configure and manage JMX components, and to manage SmartFrog components over JMX.
  • Logging: integration with Apache commons-logging and Log4J
  • Networking: email, FTP, SSH, DNS support.
  • Quartz: scheduled operations using Quartz libraries.
  • Scripting: support for BSF-hosted scripting languages
  • Testing: Distributed JUnit and component testing with SFUnit.
  • WWW: deployment of WAR and EAR files to application servers. deploy-by-copy is provided for all application servers that support, and a tomcat-specific component can communicate with Apache Tomcat. The Jetty component can configure and deploy individual servlets, eliminating much of the need for WAR files themselves.
  • XML: XML support with XOM.
  • XMPP: Presence and messaging over Jabber.

Packaging

This release is available as:

  1. RPM files inside a .tar.gz file.
  2. a JAR installer.
  3. the original core smartfrog distribution as .zip and .tar.gz (deprecated)

The RPM installation is for RPM-based Linux systems. It comprises the following RPMs:

smartfrog The core SmartFrog distribution.
smartfrog-daemon The shell scripts to add the smartfrog distribution to the path, and to run the daemon on start-up.
smartfrog-javadoc javadocs for the project
smartfrog-ant Ant task and build file execution
smartfrog-anubis Distributed partition-aware tuple space
smartfrog-csvfiles CSV file support
smartfrog-database Database access
smartfrog-jmx JMX integration though MX4J
smartfrog-junit Junit 3.8.2 test execution
smartfrog-logging Logging through Log4J and commons-logging
smartfrog-networking SSH, SCP, FTP and email
smartfrog-quartz Scheduled operations
smartfrog-scripting Scripted components
smartfrog-www Web support: Deployment and liveness pages
smartfrog-xml XML Support
smartfrog-xmpp XMPP/Jabber communications
smartfrog-xunit Distributed testing and reporting

All the JAR files are also published to a repository that is compatible with Apache Maven and Ivy. Add http://smartfrog.sourceforge.net/repository to your repository list to pull SmartFrog artifacts into your Ivy- or Maven- based build.

There are also SmartFrog components to retrieve artifacts from such a repository (the Library components under /org/smartfrog/services/os/java/library.sf ), which can be used for dynamic download of SmartFrog and other artifacts.

Security warning

Unless SmartFrog is configured with security, a running daemon will listen on its configured port for incoming deployment requests, and deploy the applications with the rights of the user running the daemon. When the smartfrog-daemon RPM is installed, that means that a process running as root will be listening on an open port for incoming deployment requests. Do not deploy SmartFrog this way on any untrusted network, not without turning security on and, ideally, recreating the RPMs with signed JAR files.

Building SmartFrog

SmartFrog requires Java 1.5 and Ant 1.7 to build.

The distribution does not include a source tree adequate to build the entire system. Please follow the instructions at http://sourceforge.net/svn/?group_id=87384and check out smartfrog/trunk/core from our repository.

This release was built with revision 6168 of the repository, which is available under the SVN branch https://smartfrog.svn.sourceforge.net/svnroot/smartfrog/tags/release3.12.026

We strongly encourage anyone interested in building or extending smartfrog to get involved in the smartfrog developer mailing list, which can be found from the sourceforge project page http://sourceforge.net/projects/smartfrog/

Reporting Bugs

Please file all bug reports at http://jira.smartfrog.org/

The SmartFrog Team

Changes since last Release

The main changes in this release are:-

  1. All shell scripts/batch files take a -p option that specifies the port to work with. This simplifies running SmartFrog on different ports, including multiple versions of SmartFrog simultaneously.
  2. There is a new component bundle, sf-csvfiles, in the smartfrog-csvfiles RPM. This can read in lines from a .csv file, be they created by a spreadsheet or another program. A column from a CSV file can be turned into a list attribute of a component, so enabling parts of a deployment to be spreadsheet driven. There is also a component in the sf-xml package which runs through a CSV file (or other source of tuples) and generates an XML file from it, XML that can then be transformed using XSL operations into other text formats.
  3. The LivenessPage and WaitForPage components in the sf-www package now support authenticated access to web pages; this enables the components to connect to the dyndns.org services to dynamically register hostnames. We provide templates to demonstrate this.
  4. More graceful handling of bad network states. Remember, SmartFrog uses Java RMI, a technology which does not like the hostname of the local host not resolving in the network stack. SmartFrog detects this and keeps going, but you may not be able to deploy all that you wish to.

Bug

  • [SFOS-326] - sfPing shell script uses == instead of -eq
  • [SFOS-397] - what does TestCompoundImpl do when it is the condition that terminates?
  • [SFOS-450] - Implement error handling/reporting code for the VM logic
  • [SFOS-608] - "ant install" task only copies dist/lib content but fails to copy ivy dependencies
  • [SFOS-665] - Typo in jetty-core.sf when referencing SSLJettySocketConnectorImpl
  • [SFOS-681] - Review and edit SshExecImpl to avoid a problem that surfaced in Ant's ssh
  • [SFOS-686] - LivenessPageChecker/Java.net.URL doesnt use username+password
  • [SFOS-688] - Unable to add sfHost attribute to ProcessCompound when the host networking is not properly configured.
  • [SFOS-694] - test harness locking up in Jetty Tests
  • [SFOS-697] - regression: Sf daemon longer works on my home machine due to networking changes
  • [SFOS-699] - NPE in liveness page path concat
  • [SFOS-706] - knownHosts are ignored in ssh components
  • [SFOS-707] - NPE when starting components, but no stack trace appears
  • [SFOS-713] - rpm -bb fails on CentOS
  • [SFOS-723] - sfStart argument validation is broken.
  • [SFOS-724] - sfTerminate argument validation broken
  • [SFOS-734] - NPES get thrown in in org.smartfrog.sfcore.security.SFClassLoader during InitSecurity
  • [SFOS-735] - EC2 tests failing on new VM

Improvement

  • [SFOS-542] - LivenessPage/WaitForPage needs to support optional user/password attributes
  • [SFOS-669] - Upgrade to Jetty 6.1.7
  • [SFOS-689] - Move SystemPropertiesImpl to non-introspected Java5 calls
  • [SFOS-695] - Need a constructor for SmartFrogDeploymentException that takes a message, a throwable and a component
  • [SFOS-696] - Factor out workflow/normal termination from a worker thread into its own thread class
  • [SFOS-698] - Improve logging/diagnostics when a throwable is raised during component deploy/startup
  • [SFOS-701] - have the liveness components determine the port number from the protocol
  • [SFOS-702] - add target to common.xml to delete the published artifacts of a single project
  • [SFOS-714] - Add commons-httpclient to the dependencies and distributables of sf-www

New Feature

  • [SFOS-373] - Add the connection port to sfStart so that it can be used without having to modify default.ini and contact daemons running in a non-default port.
  • [SFOS-555] - add DynDNS client API
  • [SFOS-691] - add regexp validation into passwordChecker
  • [SFOS-693] - Add a way to read in CSV files
  • [SFOS-700] - New switch to log classpath during daemon boot
  • [SFOS-709] - Improve Dumper configuration: add sf configuration and default.ini configuration for "keys to be removed" and "timeout"
  • [SFOS-710] - Update shell scripts to take new "-p" parameter.
  • [SFOS-725] - Add component to turn CSV data into XML as part of a workflow
  • [SFOS-726] - extend list utils to support arbitrary width and ragged string tuples

Task

  • [SFOS-687] - Upgrade JavaCC from v3.2 to v4.0
  • [SFOS-718] - review SFAutoWrapper class and clean up
  • [SFOS-719] - review system properties tasks and add examples to the wiki
  • [SFOS-727] - review database components and move to workflow thread
  • [SFOS-731] - Have a look at the Avalanche Code, see what the IDE flags up
  • [SFOS-733] - move VMWare to latest (3.0.2) release of JNA

Sub-task

  • [SFOS-625] - Add redirect (http 3XX support) to restlet component
  • [SFOS-630] - S3 PUT response isnt handled by restlet
  • [SFOS-703] - Need way to put AWS permission headers in a PUT
Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.