On a Huge iPhoto Bug

I have to say that the new version of iLife for me has been a bit of a bust. When the new product was announced last month, I immediately went to our local Apple store and picked it up. However, after playing with it a bit, I came to release that the only applications worth using (for my situation) are iPhoto and iDVD. iDVD is just about the same as the previous version; only offering some new templates and better encoding.Picture 3.jpg

iPhoto, on the other hand, is a HUGE improvement … or, at least, I thought it was.

Now, before I get too far ahead of myself, I should mention a couple of technical hurdles that, admittedly, iPhoto ’08 has to jump for my setup:

  • Amber and I have over 4600 photos in our library. I don’t know the average size of an iPhoto library, but I’d imagine that is far and away bigger than the average user’s.
  • I host my library, which is about 6GB, on an external 500GB firewire 800 drive. While I might change this setup (see below), the drive itself and the transfer rate have been more than adequate for all our media needs (we also host our iTunes library there, which consists of over 6100+ songs, 70+ movies, and 100+ TV shows).

My experience with this particular bug began last night when Amber and I performed a routine import of photos from our digital camera into iPhoto. Everything seemed to be going well, until iPhoto, for no apparently reason, locked up (I sat and watched the “spinning beach ball of death” for about five minutes before forcefully quitting the process).

While that was a bit annoying, I went ahead and restarted my mac and tried the import again.

No joy.

Finally, instead of using iPhoto’s import capability, I simply copied the files across using Finder. Upon trying that approach, I realized that there was some sort of problem with the memory card itself. I was finally able to copy the jpegs onto the mac, but not before yet another Finder lockup forced me to restart the mac.Picture 4.jpg

Finally, I launched iPhoto with the intention of importing the images I previously copied over to the mac.

That’s when I noticed that our 4600+ photos and 60+ events had been reduced to 650 photos and 22 events!

I was a bit startled by the numbers and immediately opened the photos folder on our media share to see if the library itself was damaged (just a side note: in iPhoto ’08, the photos library is now a package file rather than a standard folder). It was still 6GB in size and, after perusing the package a bit, all the photos seemed intact.

So why was iPhoto only showing about 1/8 of our photos?

I launched iPhoto a few more times. I tried holding down command-alt and launching it, which allows a rebuild of various things including the database. No joy. I tried manually specifying the library package by launching it with just the alt key depressed. Again, no luck.

I finally went to the Apple discussion forum and, to my dismay, realized that I was not alone.

Apparently, the iPhoto database in ’08 is prone to corruption and this corruption manifests itself in the logical (read: the photos still physically exist, but the database points are corrupt) loss of photos and events. This seems to occur when iPhoto is updating its database and is unable to complete the action for whatever reason. During my attempts to import the photos from the digital camera, the corrupted memory card must have locked up iPhoto while the update for the import was taking place in iPhoto’s database.

Unfortunately, this is a huge bug in iPhoto’s design.

Any database absolutely must have mechanisms in place to prevent data loss and preserve data integrity in the event of a failed write. Even iTunes, which stores its data in an XML file, periodically backs up the file during imports to make sure that no data is lost.

It’s unacceptable that iPhoto did not adopt this fail-safe mechanism, and I am very disappointed in what appears to be sloppy design and/or programming for the package.

For all of you who might experience this problem, the only solution is to re-import the original photos from the corrupted package into a new library (you can do this by holding the alt key during iPhoto startup and clicking on “create library”). Picture 3.jpg
Before doing this, I’d recommend you make at least one backup of the package file just in case something goes wrong. While the images are preserved and, it appears, the events seem to be fine, all the keyword data and custom alterations (such as rotation, red-eye reduction, etc) are lost. This is a huge bummer for me as I’ve spent dozens of hours adding keywords and cleaning up our photo library. I am very disappointed.

Ramifications

Since the scare, I’ve ordered a new 4-disk RAID array to be used as a network backup for all our media, including photos. I had been putting off a backup solution for our media for too long; due mostly to the fact that backing up 300GB worth of data on a regular basis is no small task! However, I realized last night, with that huge lump in the back of my throat when our photos went missing, that we can’t afford to lose so much of our memories because of a data error.

I am also considering the move of the iPhoto library from the external drive onto my mac’s local drive. Since I am going to be performing regular backups, I don’t see any benefit from hosting the file on the media drive anymore.

Thoughts?

Advertisements

About johnnywey

Welcome to A Regular Expression. This blog is designed to reflect my thoughts on life, music, software design, Apple, faith, philosophy, and whatever else I can think of.

Posted on October 8, 2007, in Apple, Life. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: