Ticket #9 (closed defect: fixed)
SSL connection may time out when backing up large data sets
| Reported by: | chris | Owned by: | chris |
|---|---|---|---|
| Priority: | normal | Milestone: | 0.11 |
| Component: | bbackupd | Version: | 0.10 |
| Keywords: | ssl timeout client reload scanning directories | Cc: |
Description
Tobias Balle-Petersen reports that when backing up 1 Tb of files, the client needs to be reloaded before each backup, otherwise the backup will fail with an SSL timeout error. He has KeepAliveTime enabled and set low (10 seconds).
It appears that the client can spend large amounts of time scanning (locally) for changed files without contacting the server, and during these long delays, the connection can time out. Reloading the client causes it to discard cached information and request data from the store more often, which avoids the timeout.
I suspect that the root of the problem is that KeepAliveTime is only honoured while diffing individual files, and not while scanning directories. In a large data set where few files change between backup runs, a timeout may occur while scanning directories. Sending KeepAlive? messages regularly while scanning directories may fix this problem.
Change History
comment:6 Changed 5 years ago by chris
(In [1170]) Add ExtendedLogFile? option to bbackupd config (refs #9)
comment:9 Changed 5 years ago by chris
(In [1175]) Separate ReadPidFile?() out from LaunchServer?() in test code (refs #9)
comment:10 Changed 5 years ago by chris
comment:11 Changed 5 years ago by chris
comment:12 Changed 5 years ago by chris
- Component changed from bbackupctl to bbackupd
(In [1171])
- Use gettimeofday() to increase accuracy of GetCurrentBoxTime??() on platforms which support it. Fixes busy waits for 1 second in backup client when time for next backup is not on a 1 second boundary (which it never is).
(In [1176])
- Moved intercept code to a library module to allow it to be used by test/bbackupd as well.
comment:13 Changed 5 years ago by chris
(In [1181]) Added a test for diff termination if MaximumDiffingTime? is exceeded (refs #3, refs #9)
comment:14 Changed 5 years ago by chris
(In [1184]) Replace old-style setitimers for KeepAliveTime and MaximumDiffingTime? with new Timer objects. (refs #3, refs #9)
comment:15 Changed 5 years ago by chris
comment:16 Changed 5 years ago by chris
comment:17 Changed 5 years ago by chris
comment:18 Changed 5 years ago by chris
comment:19 Changed 5 years ago by chris
(In [1191]) Moved KeepAlive? timer to BackupClientContext? object.
Made timeout initialisation non-static, and a property of the context object. (perhaps should be in rParams, I know).
comment:20 Changed 5 years ago by chris
comment:21 Changed 5 years ago by chris
comment:22 Changed 5 years ago by chris
comment:23 Changed 5 years ago by chris
comment:24 Changed 5 years ago by chris
comment:25 Changed 5 years ago by chris
- Status changed from new to assigned
Asked Tobias to check whether those issues are fixed in chris/merge.
comment:26 Changed 4 years ago by chris
- Status changed from assigned to closed
- Resolution set to fixed
I believe these issues are resolved with the new timer code. Please let me know if not.

Please review [1141] [1142].