Skip to content

Cache system bug fixes and performance improvement

Compare
Choose a tag to compare
@fangfufu fangfufu released this 02 Sep 15:53
· 275 commits to master since this release
ee397d1

Changed

  • Improved the performance of directory listing generation while there are
    on-going file transfers
  • Wrapped mutex locking and unlocking functions in error checking functions.

Fixed

  • Fixed issue #40 - Crashes with "API function called from within callback".
  • Cache system: now keep track of the number of times a cache file has been
    opened.
    • The on-disk cache file no longer gets opened multiple times, if
      a file is opened multiple times. This used to cause inconsistencies
      between two opened cache files.
  • Cache system: Fixed buffer over-read at the boundary.
    • Say we are using a lock size of 1024k, we send a request for 128k at
      1008k. It won't trigger the download, because we have already downloaded the
      first 1024k at byte 0. So it would read off from the empty disk space!
    • This problem only occurred during the first time you download a file.
      During subsequent accesses, when you are only reading from the cache, this
      problem did not occur.
  • Cache system: Previously it was possible for Cache_bgdl()'s download offset
    to be modified by the parent thread after the child thread had been
    launched. This used to cause permanent cache file corruption.
  • Cache system: Cache_bgdl() no longer prefetches beyond EOF.
  • Cache system: Data_read() no longer gives warning messages when reaching the
    end of the cache file.