I Want Your BrAAiIINS!!!

Because I couldn't decide if this blog entry should parody Uncle Sam or Night of the Living Dead. ;)

Yesterday I published Release Candidate 2 and rolled the version forward to 1.1 instead of 1.0 because there's actually been a significant amount of change to the system in the last 2 weeks, so I felt like RC2 should have a new minor version number as well.

The latest zip is available on the official site.

There are three major changes from RC1.


Recommendations for eviction policies are now handled by a separate intelligence.cfc which you can customize by copying to the /settings directory. This component ultimately doesn't make the recommendations itself, instead deferring to a collection of smaller components that I'm calling "brains". Each brain has one function to accept statistics for a caching agent and optionally return a single recommendation about how to configure the eviction policy for the agent.

In the Management Application there's now a link in the Options page to Optimize that displays a list of your agents with all the suggestions made by these brains for you to select the ones you want to apply (instead of simply applying them all as the RC1 release did). The auto-configuration routine is the same except that it stops at the first recommendation made for each agent, because it can only apply one.

I want your brains! This is an open challenge to all ColdFusion developers. There's some information in the documentation PDF about how to write a new brain object and I want to see what you can do with it! If your custom brain is any good, I'll include it in the next release. I may even offer some kind of prize for the best! :)

2) Email

You can now receive email alerts about predicted possible memory failures by copying the email.cfc into the /settings directory.

3) Logging

As with the email features, this is not enabled by default, however, there is now a complete logging tool. It includes the ability to log the service history (the general graphs you see on the Home tab of the Management Application), as well as changes to the agents (manual, automatic or both), and includes log rotation by size and/or by date.

Release Candidate 1

Hi all!

I just published the first release candidate for CacheBox. The 1.0 version includes a couple new features in the Management Application allowing you to get recommended optimizations either on the agent detail page where they can be optionally applied or by applying all recommendations for the server via the "Optimize Now" link on the Options tab.

Updating to the latest version will probably require a restart of your ColdFusion service.

Additional details in the release notes

CallBacks / Reap Listener

I've just uploaded a new build of the CacheBox core framework including a new version of the cacheboxagent.cfc and modifications to the service. These changes add support for a callback to your application when content is deleted or reaped from the cache, which Mark Mandel needed to integrate it with Transfer. This adds a new "ReapListener" init argument to the cacheboxagent.cfc following the "evict" argument, which accepts a CFC object. This object must have a single "ReapCache" method like this:

<cfcomponent displayname="ReapListener" output="false">
   <cffunction name="init" access="public" output="false">
      <cfreturn this />
   <cffunction name="ReapCache" access="public" output="false">
      <cfargument name="cachename" type="string" required="true" />
      <cfargument name="content" type="any" required="true" />
      <!--- execute clean-up code here --->

CF on Wheels Plugin

Mike Henke has taken the original CF on Wheels sample code that I created and turned it into a plugin for Wheels. Thanks, Mike! You can read more about it on the CF on Wheels discussion group here.

Google Group

I already had a couple of google groups for the other two projects I maintain when Mike Henke asked me about a group for CacheBox, so I figured I should probably create one. :)


Released Version 0.9.8 with Fix for Cluster Agents

Since the beginning with CacheBox, I've always had this idea that the service should be able to adjust itself to accommodate whatever resources are available, independent of the requests from the agents. So if an agent requests placement in the Cluster context and there isn't any cluster storage available, the service should automatically downgrade to the next available context, specifically the server context.

I just realized today while testing integration with DataFaucet that this wasn't actually working, so I had to fix that and it also required a modification to the CacheBoxAgent.cfc. So the service is now up to version 0.9.8 and the Agent is up to version 1.3. If you have an agent in your distribution, you should update it.

So now if you have an agent that requests the cluster context and there isn't any cluster storage then when you view the agent list, that agent will appear in the server context instead. The detail for the agent however will show two lines - context and requested context, indicating that the agent has been automatically downgraded to another context. If it hasn't been downgraded, then it won't show the "requested context" line in the detail.

0.9.7 BETA Released

Not too much going on in this release. A few bug fixes -- timehit wasn't being updated in the cache metadata, so I fixed that. And if you had restarted the server or the CF service and then refreshed a page with the detail for an agent before the agent registered, you'd get a CF error, so I added a friendly error message in the management application that explains what's going on there.

I also added a plugin installer for the onTap framework -- I just finished up the initial 3.3 release of the onTap framework that makes use of CacheBox for several aspects of caching that had already been built-in to the framework. What's interesting about the plugin installer is that it doesn't actually do anything in the onTap framework itself, it just downloads the latest version of CacheBox. The reason why it doesn't do anything in the onTap framework is because this latest version of the framework already includes the CacheBoxAgent.cfc, which makes it independent of the CacheBox service. So you can run the onTap framework still with or without CacheBox, you just don't get any of the expiration policies, cluster syncing or other fancy features. I did run into a couple issues with the installer though and had to upload the CacheBox.zip and the plugin zip archive a couple times to get it to work right. And it's on the plugin webservice now, so once you've downloaded the onTap framework you can install CacheBox automatically from within the plugin manager without needing to download it separately.

My next task is updating the caching features in DataFaucet. :)

New Samples including ColdBox in 0.9.6 BETA Released

I fixed a few bugs in this next release. I've also finally got a ColdBox sample in there, and a stand-alone blog sample. The ColdBox sample has been partially tested. (I haven't tested the Mach-II sample or the DataMgr sample yet.)

I also managed to simplify the custom eviction policies quite a bit thanks to the addition of an expire() method in the agent CFC that allows you to flag content as no longer valid without immediately deleting it. If you've got a lot of content in cache, using expire() instead of delete() may result in faster page load times for your users, in exchange for allowing the content to hang-out in memory a bit longer until the next reap-cycle (which by default happens once per minute). Expired content won't be returned from a fetch operation, so it's otherwise functionally the same as deleting the content.

New Password and Login Version 0.9.5 BETA Release

So the frustration yesterday was with the fact that the security would be a challenge for folks setting up clusters and configuring them to auto-sync storage types and agents. So today I recoded the security and added a password and a login form much like the ColdFusion Administrator. I updated the documentation -- the installation instructions are actually simpler now. :) And I uploaded version 0.9.5 with the changes.

Cluster Synchronization in Version 0.9.4 BETA Released

I've uploaded another point release (0.9.4 BETA), with a new Cluster tab that allows you to configure your servers in a cluster to auto-sync. What this means is that when you configure a storage type that supports the cluster context or when you configure a cluster agent, all the servers in your cluster will be updated with the new configuration automatically from the management application. For those of you with several servers in your cluster, this should really help keep your maintenance down to a minimum.

I will say though that I'm not entirely sure what to do about the links to alternate servers. Right now the links show up in the cluster tab, but don't work by default because the management application only works on the localhost for security reasons. Which means if you want the links in the cluster tab to work, you have to create a config.cfc and edit the applyRequestSecurity() method to tell it what IP addresses are safe. I suppose there won't be a huge number of people who run into this issue, since it only applies to people with clusters, but it's still not as easy to install the cluster as I'd like. Maybe I'll have some better ideas later on.

In the meantime I hope everyone's enjoying the new tools. :)

50 Downloads in the First Week!

I just uploaded version 0.9.3. I've managed to add samples of CacheBox integration for the Mach-II framework and for Steve Bryant's DataMgr tool (a data access layer). I haven't tested either of these yet. I've also updated the documentation again and added some information about using CacheBox for singleton storage and for managing sessions with it. It's not exactly what I had hoped for in terms of samples, but it'll do. :) I'd still like to get a simple blog or something in there if anybody knows of a small one that caches its content. I haven't found one yet, they're all at least 1MB download and I don't want to add something as a sample that's larger than the CacheBox. Anyway there's a new download on the project home page.

There've been about 50 downloads so far in just the first week. I'm still looking forward to hearing what everyone thinks! :) I know Matt Gersting integrated it into FuseCache for Fusebox applications, and said that he likes the management application so much he's probably going to use CacheBox for most of his caching. So that's one in the win column. ;) Where does everyone else stand? Am I doing a good job with the documentation? Is it working for you? Have you found any bugs? Is it just so good that everyone is speechless? :)

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.5.006. | Protected by Akismet | Blog with WordPress