From kato-spec-return-309-apmail-incubator-kato-spec-archive=incubator.apache.org@incubator.apache.org Mon Jan 04 15:19:42 2010 Return-Path: Delivered-To: apmail-incubator-kato-spec-archive@minotaur.apache.org Received: (qmail 51366 invoked from network); 4 Jan 2010 15:19:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 4 Jan 2010 15:19:42 -0000 Received: (qmail 53548 invoked by uid 500); 4 Jan 2010 15:19:42 -0000 Delivered-To: apmail-incubator-kato-spec-archive@incubator.apache.org Received: (qmail 53512 invoked by uid 500); 4 Jan 2010 15:19:42 -0000 Mailing-List: contact kato-spec-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: kato-spec@incubator.apache.org Delivered-To: mailing list kato-spec@incubator.apache.org Received: (qmail 53502 invoked by uid 99); 4 Jan 2010 15:19:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 04 Jan 2010 15:19:42 +0000 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of spoole167@googlemail.com designates 209.85.218.210 as permitted sender) Received: from [209.85.218.210] (HELO mail-bw0-f210.google.com) (209.85.218.210) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 04 Jan 2010 15:19:33 +0000 Received: by bwz2 with SMTP id 2so8623317bwz.20 for ; Mon, 04 Jan 2010 07:19:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=0zE+Uwe5ESeCj4nMsDK0SZIemNJ1sHOwU3Bi6LEZx8M=; b=ZDzNOKyd+5Y0McuTE4PSNalzuuOM1WvOBKxxIJTHWAljf39PqQmwloYEPTyxxXHyt/ OeG8jvD/ArMyx+2bHU8GuhLR/tM5DP+5E7WFS+XLiXHWQeb8qupHiZ1gxyfAJWaTz111 Mc3rMn3YIkLjK9K/JxKAvC18n2x07c+wTmLXQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=guSD5vYCgmITvkUVZt06qoiijdKjdob2nSI2cn3nL+BKP3OBA/cqEcJvxVPcCv2QSl ku4L4NZbM8cwMKRIMq4KE9opdGT/cVxZhtT9KhZYigG4JN2ws1SEziyja6lpgR9zLru5 QkASfTKhtAsjUE6rP27rGDxabJ2UOinbU+VNA= MIME-Version: 1.0 Received: by 10.204.15.3 with SMTP id i3mr3342215bka.71.1262618351163; Mon, 04 Jan 2010 07:19:11 -0800 (PST) Date: Mon, 4 Jan 2010 15:19:11 +0000 Message-ID: Subject: Snapshot Application development usecases From: Steve Poole To: kato-spec@incubator.apache.org Content-Type: multipart/alternative; boundary=00032555a0be4edacb047c583e42 --00032555a0be4edacb047c583e42 Content-Type: text/plain; charset=ISO-8859-1 I want to present a few application development usecases for us to discuss to do with the Snapshot concept. First let's agree some basics An application snapshot is a deliberate subset of a running system. It's deliberate in that what is defined for inclusion / exclusion can be changed. To build an application snapshot three types of information are required 1 - root objects which determine where to start the snapshot from 2 - rules to restrict how "far" to search 3 - rules to describe what to include in the snapshot Example 1 A webserver session is behaving incorrectly. The application programmer wants to capture information to do with the session itself and some specific application details. The root object is an HTTPSession and the application code is all contained in packages that start org.acme.application The application programmer believes that the problem is in the application and so wants the minimum of system information included. Example 2 An error has occured and the application is about throw an exception. The application programmer wants to capture a series of objects related to the error and wants to see the Java stack including local variables. Example 3 A enterprise server is running slow and the application programmer would like to get a list of the instances of a specific interface that the server is managing, since the suspicion is that there are multiple instances of a nonthreadsafe instance of this interface when there should only be one. Example 4 A servlet server has run out of database connections and the suspicion is that managed objects have not been collected. Typically programmers use finalisers or depend on GC instead of using the Servlet.Destroy() method. the application programmer needs to get a list of objects in "Destroyed" state which obviously haven't been GC'd Cheers -- Steve --00032555a0be4edacb047c583e42--