org.apache.derby.impl.store.raw.data
Class ReclaimSpace

java.lang.Object
  extended byorg.apache.derby.impl.store.raw.data.ReclaimSpace
All Implemented Interfaces:
Serviceable

public final class ReclaimSpace
extends java.lang.Object
implements Serviceable

Post commit work to reclaim some space from the raw store. This is a wrapper class for the real serviceable class who wraps this on top of itself so different things can be identified.


Field Summary
private  int attempts
           
static int COLUMN_CHAIN
           
private  int columnId
           
private  long columnPageId
           
private  int columnRecordId
           
static int CONTAINER
           
private  ContainerKey containerId
           
private  RecordHandle headRowHandle
           
static int PAGE
           
private  PageKey pageId
           
private  DataFactory processor
           
private  int reclaim
           
static int ROW_RESERVE
           
private  boolean serviceASAP
           
private  PageTimeStamp timeStamp
           
 
Fields inherited from interface org.apache.derby.iapi.services.daemon.Serviceable
DONE, REQUEUE
 
Constructor Summary
ReclaimSpace(int reclaim, ContainerKey containerId, DataFactory processor, boolean serviceASAP)
           
ReclaimSpace(int reclaim, PageKey pageId, DataFactory processor, boolean serviceASAP)
           
ReclaimSpace(int reclaim, RecordHandle headRowHandle, DataFactory processor, boolean serviceASAP)
           
ReclaimSpace(int reclaim, RecordHandle headRowHandle, int columnId, long ovPageId, int ovRecordId, PageTimeStamp timeStamp, DataFactory processor, boolean serviceASAP)
           
 
Method Summary
 int getColumnId()
           
 long getColumnPageId()
           
 int getColumnRecordId()
           
 ContainerKey getContainerId()
           
 RecordHandle getHeadRowHandle()
           
 PageKey getPageId()
           
 PageTimeStamp getPageTimeStamp()
           
 int incrAttempts()
           
private  void initContainerInfo(ContainerKey containerId, int reclaim, DataFactory processor, boolean serviceASAP)
           
 int performWork(ContextManager context)
          Do whatever it is that you want the daemon to do for you.
 int reclaimWhat()
           
 boolean serviceASAP()
          If this work should be done as soon as possible, then return true.
 boolean serviceImmediately()
          If this work should be done immediately on the user thread then return true.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serviceASAP

private boolean serviceASAP

containerId

private ContainerKey containerId

pageId

private PageKey pageId

headRowHandle

private RecordHandle headRowHandle

columnId

private int columnId

columnPageId

private long columnPageId

columnRecordId

private int columnRecordId

timeStamp

private PageTimeStamp timeStamp

attempts

private int attempts

processor

private DataFactory processor

reclaim

private int reclaim

CONTAINER

public static final int CONTAINER
See Also:
Constant Field Values

PAGE

public static final int PAGE
See Also:
Constant Field Values

ROW_RESERVE

public static final int ROW_RESERVE
See Also:
Constant Field Values

COLUMN_CHAIN

public static final int COLUMN_CHAIN
See Also:
Constant Field Values
Constructor Detail

ReclaimSpace

public ReclaimSpace(int reclaim,
                    ContainerKey containerId,
                    DataFactory processor,
                    boolean serviceASAP)

ReclaimSpace

public ReclaimSpace(int reclaim,
                    PageKey pageId,
                    DataFactory processor,
                    boolean serviceASAP)

ReclaimSpace

public ReclaimSpace(int reclaim,
                    RecordHandle headRowHandle,
                    DataFactory processor,
                    boolean serviceASAP)

ReclaimSpace

public ReclaimSpace(int reclaim,
                    RecordHandle headRowHandle,
                    int columnId,
                    long ovPageId,
                    int ovRecordId,
                    PageTimeStamp timeStamp,
                    DataFactory processor,
                    boolean serviceASAP)
Method Detail

initContainerInfo

private void initContainerInfo(ContainerKey containerId,
                               int reclaim,
                               DataFactory processor,
                               boolean serviceASAP)

serviceASAP

public boolean serviceASAP()
Description copied from interface: Serviceable
If this work should be done as soon as possible, then return true. If it doesn't make any difference if it is done sooner rather than later, then return false. The difference is whether or not the daemon service will be notified to work on this when this work is enqueued or subscribed, in case the serviceable work is put together but not sent to the daemon service directly, like in post commit processing

MT - MT safe

Specified by:
serviceASAP in interface Serviceable

performWork

public int performWork(ContextManager context)
                throws StandardException
Description copied from interface: Serviceable
Do whatever it is that you want the daemon to do for you. There may be multiple daemon objects on different thread calling performWork at the same time. The DaemonService will always call performWork with a context manager set up. the DaemonService will clean up the context if an exception is thrown. However, it is up to performWork to manage its own transaction. If you start a transaction in performWork, you must commit or abort it at the end. You may leave the transaction open so that other serviceable may use the transaction and context without starting a new one. On the same token, there may already be an opened transaction on the context. Serviceable performWork should always check the state of the context before use. A Serviceable object should be well behaved while it is performing the daemon work, i.e., it should not take too many resources or hog the CPU for too long or deadlock with anyone else.

Specified by:
performWork in interface Serviceable
Parameters:
context - the contextManager set up by the DaemonService. There may or may not be the necessary context on it, depending on which other Serviceable object it has done work for.
Returns:
the return status is only significant if the Serviceable client was enqueued instead of subscribed. For subscribed client, the return status is ignored. For enqueue client, it returns DONE or REQUEUE. If a REQUEUEd is returned, it would be desirable if this should not be serviceASAP, although no harm is done if this still maintains that this should be serviced ASAP ...
Throws:
StandardException - Standard cloudscape exception policy

MT - depends on the work. Be wary of multiple DaemonService thread calling at the same time if you subscribe or enqueue multiple times.


serviceImmediately

public boolean serviceImmediately()
Description copied from interface: Serviceable
If this work should be done immediately on the user thread then return true. If it doesn't make any difference if this work is done on a the user thread immediately or if it is performed by another thread asynchronously later, then return false.

Specified by:
serviceImmediately in interface Serviceable

getContainerId

public final ContainerKey getContainerId()

getPageId

public final PageKey getPageId()

getHeadRowHandle

public final RecordHandle getHeadRowHandle()

getColumnId

public final int getColumnId()

getColumnPageId

public final long getColumnPageId()

getColumnRecordId

public final int getColumnRecordId()

getPageTimeStamp

public final PageTimeStamp getPageTimeStamp()

reclaimWhat

public final int reclaimWhat()

incrAttempts

public final int incrAttempts()

toString

public java.lang.String toString()


Apache Derby V10.0 Engine Documentation - Copyright © 1997,2004 The Apache Software Foundation or its licensors, as applicable.