#400·bigcache

Improve error handling in BytesQueue.Push function in queue.go

Author: akanchha25Created Jul 13, 2024Updated Jan 14, 2025
Labelsenhancementgood-first-issue

The Push function in BytesQueue currently uses a generic error message when the queue is full. It is suggested to use errFullQueue for a more descriptive error message.

Current Code:

go
var (
	errEmptyQueue       = &queueError{"Empty queue"}
	errInvalidIndex     = &queueError{"Index must be greater than zero. Invalid index."}
	errIndexOutOfBounds = &queueError{"Index out of range"}
)

Push function

go
if !q.canInsertAfterTail(neededSize) {
		if q.canInsertBeforeHead(neededSize) {
			q.tail = leftMarginIndex
		} else if q.capacity+neededSize >= q.maxCapacity && q.maxCapacity > 0 {
			return -1, &queueError{"Full queue. Maximum size limit reached."}
		} else {
			q.allocateAdditionalMemory(neededSize)
		}
	}

Updated code

go
var (
	errEmptyQueue       = &queueError{"Queue is empty."}
	errInvalidIndex     = &queueError{"Index must be greater than zero. Invalid index."}
	errIndexOutOfBounds = &queueError{"Index out of range."}
	errFullQueue        = &queueError{"Queue is full. Maximum size limit reached."} 
)
go
if !q.canInsertAfterTail(neededSize) {
		if q.canInsertBeforeHead(neededSize)) {
			q.tail = leftMarginIndex
		} else if q.capacity+neededSize >= q.maxCapacity && q.maxCapacity > 0 {
			return -1, errFullQueue 
		} else {
			q.allocateAdditionalMemory(neededSize)
		}
	}

This will improve the code quality