Class TapePerNodeLocalQueueWithStats
java.lang.Object
com.atlassian.bamboo.cluster.tape.TapePerNodeLocalQueueWithStats
- All Implemented Interfaces:
PerNodeLocalQueue
Statistics for the delegate
PerNodeLocalQueueManager
.
Contains statsTotal
with statistics for queue since "the beginning" and
statsSnapshot
with statistics for queue since last
statsSnapshot()
call.
See: statsTotal()
and statsSnapshot()
- Since:
- 9.5
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.atlassian.bamboo.cluster.tape.PerNodeLocalQueue
PerNodeLocalQueue.QueueId
-
Field Summary
Fields inherited from interface com.atlassian.bamboo.cluster.tape.PerNodeLocalQueue
NUMBER_OF_PHYSICAL_QUEUES_PER_NODE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
add
(CrossNodesEvent data) transactional add ofCrossNodesEvent
to the queue; when operation finished we "guarantee" that theCrossNodesEvent
is persistedvoid
backupQueue
(String prefix) Note: use with caution This method is mainly designed to handle critical state of the queue storage by backing up the current queue persistent store and recreating a new one.void
close()
closes the queue and all resources connected with this queue (like processing thread(s), files); closing a queue is definitive - it will never be open (i.e.boolean
int
hashCode()
boolean
@NotNull PerNodeLocalQueue.QueueId
id()
boolean
isClosed()
Some operations (likePerNodeLocalQueue.add(CrossNodesEvent)
) on a closed queue will throw aIllegalStateException
.@NotNull String
name()
void
void
void
void
void
void
void
notifySendWithTime
(long timeInMillis) peek()
Allows to see what's on the head of the queue without removing it.void
remove()
RemoveCrossNodesEvent
from head of the queue.int
size()
-
Constructor Details
-
TapePerNodeLocalQueueWithStats
-
-
Method Details
-
close
public void close()Description copied from interface:PerNodeLocalQueue
closes the queue and all resources connected with this queue (like processing thread(s), files); closing a queue is definitive - it will never be open (i.e. not-closed) again;- Specified by:
close
in interfacePerNodeLocalQueue
-
isClosed
public boolean isClosed()Description copied from interface:PerNodeLocalQueue
Some operations (likePerNodeLocalQueue.add(CrossNodesEvent)
) on a closed queue will throw aIllegalStateException
. This method allows to check if the queue has not been closed.- Specified by:
isClosed
in interfacePerNodeLocalQueue
- Returns:
- true if queue is closed
-
name
- Specified by:
name
in interfacePerNodeLocalQueue
- Returns:
- name of the queue could be useful for the user, like identifying the queue file path from logs
-
id
- Specified by:
id
in interfacePerNodeLocalQueue
- Returns:
- queue id which uniquely identifies this queue, i.e destination node and nodeQueueNumber, see
PerNodeLocalQueue.QueueId
-
add
Description copied from interface:PerNodeLocalQueue
transactional add ofCrossNodesEvent
to the queue; when operation finished we "guarantee" that theCrossNodesEvent
is persisted- Specified by:
add
in interfacePerNodeLocalQueue
- Returns:
- true if message was added or false if dropped (like exceeding queue size limit)
- Throws:
IllegalStateException
- when queue is closed
-
peek
Description copied from interface:PerNodeLocalQueue
Allows to see what's on the head of the queue without removing it.- Specified by:
peek
in interfacePerNodeLocalQueue
- Returns:
- crossNodesEvent from queue head or null when queue is empty.
- Throws:
IllegalStateException
- when queue is closed
-
remove
Description copied from interface:PerNodeLocalQueue
RemoveCrossNodesEvent
from head of the queue.- Specified by:
remove
in interfacePerNodeLocalQueue
- Throws:
NoSuchElementException
- when doing a remove on an empty queueIllegalStateException
- when queue is closed
-
size
public int size()- Specified by:
size
in interfacePerNodeLocalQueue
- Returns:
- number of elements in this queue
-
backupQueue
Description copied from interface:PerNodeLocalQueue
Note: use with caution This method is mainly designed to handle critical state of the queue storage by backing up the current queue persistent store and recreating a new one. Renames current queue file name to [prefix]_[queue_file_name] and re-creates queue file with [queue_file_name]. If file with [prefix]_[queue_file_name] already exists it will be deleted. Note that ifPerNodeLocalQueue.backupQueue(String)
is called betweenPerNodeLocalQueue.peek()
andPerNodeLocalQueue.remove()
this can causePerNodeLocalQueue.remove()
to delete a differentCrossNodesEvent
then expected or may throwNoSuchElementException
if the new queue afterPerNodeLocalQueue.backupQueue(String)
is empty.- Specified by:
backupQueue
in interfacePerNodeLocalQueue
- Throws:
IOException
-
notifySendWithTime
public void notifySendWithTime(long timeInMillis) -
notifyDroppedOnSend
public void notifyDroppedOnSend() -
notifySendFailureException
public void notifySendFailureException() -
notifyCriticalAdd
public void notifyCriticalAdd() -
notifyCriticalPeek
public void notifyCriticalPeek() -
notifyCriticalRemove
public void notifyCriticalRemove() -
usableSpaceInBytes
- Specified by:
usableSpaceInBytes
in interfacePerNodeLocalQueue
- Returns:
- number of bytes left on device where this queue is stored or null if unable to get this value
-
hasPermission
public boolean hasPermission()- Specified by:
hasPermission
in interfacePerNodeLocalQueue
- Returns:
- true if it has read/write access to queue storage
-
getQueueFilePath
- Specified by:
getQueueFilePath
in interfacePerNodeLocalQueue
- Returns:
- the queue file path if exists, empty otherwise
-
equals
-
hashCode
public int hashCode()
-