1
mirror of https://github.com/rclone/rclone synced 2024-11-18 18:46:07 +01:00
Go to file
Nick Craig-Wood f5439ddc54 accounting: fix deadlock in stats printing
The deadlock was caused in transfermap.go by calling mu.RLock() in one
function then calling it again in a sub function. Normally this is
fine, however this leaves a window where mu.Lock() can be called. When
mu.Lock() is called it doesn't allow the second mu.RLock() and
deadlocks.

    Thead 1                    Thread 2
    String():mu.RLock()
                               del():mu.Lock()
    sortedSlice():mu.RLock()                     - DEADLOCK

Lesson learnt: don't try using locks recursively ever!

This patch fixes the problem by removing the second mu.RLock(). This
was done by factoring the code that was calling it into the
transfermap.go file so all the locking can be seen at once which was
ultimately the cause of the problem - the code which used the locks
was too far away from the rest of the code using the lock.

This problem was introduced in:

bfa5715017 fs/accounting: sort transfers by start time

Which hasn't been released in a stable version yet
2020-08-05 17:13:00 +01:00
.github build: actions update, cache, go1.15-rc1 build 2020-07-25 18:52:33 +01:00
backend swift: fix update multipart object removing all of its own parts 2020-08-03 14:45:03 +01:00
bin make_manual: Support SOURCE_DATE_EPOCH 2020-07-15 13:23:08 +01:00
cmd cmd/obscure: Allow obscure command to accept password on STDIN 2020-08-02 11:32:47 +01:00
contrib/docker Contrib: Add sample WebDAV server Docker Compose manifest. 2019-09-15 16:06:54 +01:00
docs Add David Ibarra to contributors 2020-08-02 11:47:07 +01:00
fs accounting: fix deadlock in stats printing 2020-08-05 17:13:00 +01:00
fstest fs: Add directory to optional Purge interface - fixes #1891 2020-07-31 17:43:17 +01:00
graphics build: Add file properties and icon to Windows executable (fixes #4304) 2020-06-11 09:26:14 +01:00
lib build: disable lib/plugin under gccgo to make rclone build with gccgo 2020-07-28 09:56:31 +01:00
vfs vfs: fix saving from chrome without --vfs-cache-mode writes #4293 2020-07-28 17:18:31 +01:00
.gitattributes build: add azure pipelines build 2019-08-06 10:31:32 +01:00
.gitignore s3: Add StackPath Object Storage Support 2020-01-31 16:05:44 +00:00
.golangci.yml build: move linter build tags into Makefile to fix golangci-lint 2019-04-12 15:48:36 +01:00
CONTRIBUTING.md Stop doing vendoring - fixes #4032 2020-07-21 16:09:53 +01:00
COPYING Initial commit - some small parts working 2012-11-18 17:32:31 +00:00
Dockerfile build: fix custom timezone in Docker image 2020-06-17 10:43:03 +01:00
go.mod vendor: Update github.com/billziss-gh/cgofuse to v1.4.0 #4393 2020-07-24 15:12:05 +01:00
go.sum vendor: Update github.com/billziss-gh/cgofuse to v1.4.0 #4393 2020-07-24 15:12:05 +01:00
MAINTAINERS.md doc: fix typos throughout docs and code 2020-05-25 11:23:58 +01:00
Makefile build: actions update, cache, go1.15-rc1 build 2020-07-25 18:52:33 +01:00
MANUAL.html Version v1.52.0 2020-05-27 17:31:10 +01:00
MANUAL.md Version v1.52.0 2020-05-27 17:31:10 +01:00
MANUAL.txt Version v1.52.0 2020-05-27 17:31:10 +01:00
notes.txt Replace test_all.sh with test_all.go which is cross platform and parallel 2015-12-30 09:26:34 +00:00
rclone.1 Version v1.52.0 2020-05-27 17:31:10 +01:00
rclone.go lib: add plugin support 2019-09-29 11:05:10 +01:00
README.md Tardigrade Backend 2020-05-12 15:56:50 +00:00
RELEASE.md Stop doing vendoring - fixes #4032 2020-07-21 16:09:53 +01:00
VERSION Start v1.52.2-DEV development 2020-06-24 14:35:12 +01:00

rclone logo

Website | Documentation | Download | Contributing | Changelog | Installation | Forum

Build Status Go Report Card GoDoc Docker Pulls

Rclone

Rclone ("rsync for cloud storage") is a command line program to sync files and directories to and from different cloud storage providers.

Storage providers

Please see the full list of all storage providers and their features

Features

  • MD5/SHA-1 hashes checked at all times for file integrity
  • Timestamps preserved on files
  • Partial syncs supported on a whole file basis
  • Copy mode to just copy new/changed files
  • Sync (one way) mode to make a directory identical
  • Check mode to check for file hash equality
  • Can sync to and from network, e.g. two different cloud accounts
  • Optional large file chunking (Chunker)
  • Optional encryption (Crypt)
  • Optional cache (Cache)
  • Optional FUSE mount (rclone mount)
  • Multi-threaded downloads to local disk
  • Can serve local or remote files over HTTP/WebDav/FTP/SFTP/dlna

Installation & documentation

Please see the rclone website for:

Downloads

License

This is free software under the terms of MIT the license (check the COPYING file included in this package).