@@ -171,11 +171,11 @@ func NewWithDiskSpace(name string, dataPath string,
171171
172172// Get the last known state of DiskQueue from metadata and start ioLoop
173173func (d * diskQueue ) start () error {
174- // ensure that DiskQueue has enough space to write the metadata file
175- if d .enableDiskLimitation && d .maxBytesDiskSpace <= maxMetaDataFileSize {
174+ // ensure that DiskQueue has enough space to write the metadata file + at least one data file with max size + message size
175+ if d .enableDiskLimitation && ( d .maxBytesDiskSpace <= maxMetaDataFileSize + d . maxBytesPerFile ) {
176176 errorMsg := fmt .Sprintf (
177- "disk size limit too small(%d): not enough space for MetaData file size( %d)" ,
178- d .maxBytesDiskSpace , maxMetaDataFileSize )
177+ "disk size limit too small(%d): not enough space for MetaData file ( size=%d) and at least one data file with max size (maxBytesPerFile= %d). " ,
178+ d .maxBytesDiskSpace , maxMetaDataFileSize , d . maxBytesPerFile )
179179 d .logf (ERROR , "DISKQUEUE(%s) - %s" , errorMsg )
180180 return errors .New (errorMsg )
181181 }
@@ -463,8 +463,6 @@ func (d *diskQueue) readNumOfMessages(fileName string) (int64, error) {
463463 if err != nil {
464464 return 0 , err
465465 }
466-
467- d .reader = bufio .NewReader (d .readFile )
468466 }
469467
470468 closeReadFile := func () {
@@ -480,7 +478,7 @@ func (d *diskQueue) readNumOfMessages(fileName string) (int64, error) {
480478 }
481479
482480 var totalMessages int64
483- err = binary .Read (d .reader , binary .BigEndian , & totalMessages )
481+ err = binary .Read (d .readFile , binary .BigEndian , & totalMessages )
484482 if err != nil {
485483 return 0 , err
486484 }
@@ -580,10 +578,6 @@ func (d *diskQueue) freeDiskSpace(expectedBytesIncrease int64) error {
580578 d .logf (ERROR , "DISKQUEUE(%s) failed to retrieve all .bad file info - %s" , d .name , err )
581579 }
582580
583- if expectedBytesIncrease > d .maxBytesDiskSpace {
584- return fmt .Errorf ("could not make space for expectedBytesIncrease = %d, with maxBytesDiskSpace = %d " , expectedBytesIncrease , d .maxBytesDiskSpace )
585- }
586-
587581 // keep freeing up disk space until we have enough space to write this message
588582 for _ , badFileInfo := range badFileInfos {
589583 if d .totalDiskSpaceUsed + expectedBytesIncrease <= d .maxBytesDiskSpace {
0 commit comments