org.apache.hadoop.hdfs
Class DFSInotifyEventInputStream

java.lang.Object
  extended by org.apache.hadoop.hdfs.DFSInotifyEventInputStream

@InterfaceAudience.Public
@InterfaceStability.Unstable
public class DFSInotifyEventInputStream
extends Object

Stream for reading inotify events. DFSInotifyEventInputStreams should not be shared among multiple threads.


Field Summary
static org.slf4j.Logger LOG
           
 
Method Summary
 long getEventsBehindEstimate()
          Return a estimate of how many events behind the NameNode's current state this stream is.
 Event poll()
          Returns the next event in the stream or null if no new events are currently available.
 Event poll(long time, TimeUnit tu)
          Returns the next event in the stream, waiting up to the specified amount of time for a new event.
 Event take()
          Returns the next event in the stream, waiting indefinitely if a new event is not immediately available.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG

public static org.slf4j.Logger LOG
Method Detail

poll

public Event poll()
           throws IOException,
                  MissingEventsException
Returns the next event in the stream or null if no new events are currently available.

Throws:
IOException - because of network error or edit log corruption. Also possible if JournalNodes are unresponsive in the QJM setting (even one unresponsive JournalNode is enough in rare cases), so catching this exception and retrying at least a few times is recommended.
MissingEventsException - if we cannot return the next event in the stream because the data for the event (and possibly some subsequent events) has been deleted (generally because this stream is a very large number of events behind the current state of the NameNode). It is safe to continue reading from the stream after this exception is thrown -- the next available event will be returned.

getEventsBehindEstimate

public long getEventsBehindEstimate()
Return a estimate of how many events behind the NameNode's current state this stream is. Clients should periodically call this method and check if its result is steadily increasing, which indicates that they are falling behind (i.e. events are being generated faster than the client is reading them). If a client falls too far behind events may be deleted before the client can read them.

A return value of -1 indicates that an estimate could not be produced, and should be ignored. The value returned by this method is really only useful when compared to previous or subsequent returned values.


poll

public Event poll(long time,
                  TimeUnit tu)
           throws IOException,
                  InterruptedException,
                  MissingEventsException
Returns the next event in the stream, waiting up to the specified amount of time for a new event. Returns null if a new event is not available at the end of the specified amount of time. The time before the method returns may exceed the specified amount of time by up to the time required for an RPC to the NameNode.

Parameters:
time - number of units of the given TimeUnit to wait
tu - the desired TimeUnit
Throws:
IOException - see poll()
MissingEventsException - see poll()
InterruptedException - if the calling thread is interrupted

take

public Event take()
           throws IOException,
                  InterruptedException,
                  MissingEventsException
Returns the next event in the stream, waiting indefinitely if a new event is not immediately available.

Throws:
IOException - see poll()
MissingEventsException - see poll()
InterruptedException - if the calling thread is interrupted


Copyright © 2014 Apache Software Foundation. All Rights Reserved.