Commit Graph

824 Commits

Author SHA1 Message Date
Christian Schwarz
f36ef41c39 scratchpad/chunker: fix api breakage 2017-05-14 15:58:33 +02:00
Christian Schwarz
defe134c8b sshbytestream: default ServerAliveInterval 2017-05-14 14:16:12 +02:00
Christian Schwarz
b1a3a57623 cmd close RPC with timeout 2017-05-14 14:11:19 +02:00
Christian Schwarz
48a4e8033a rpc: close outgoing SSH connection on exit. 2017-05-14 14:11:19 +02:00
Christian Schwarz
04206ebd8b util.IOCommand: Close() gracefully via SIGTERM 2017-05-14 14:11:19 +02:00
Christian Schwarz
ee570bb060 refactor: consolidate ForkReader-like implementations to IOCommand 2017-05-14 12:27:15 +02:00
Christian Schwarz
ee8b0d3781 cmd: dup2(logfile, stderr) if logfile set 2017-05-13 15:35:19 +02:00
Christian Schwarz
6f84bf665d cmd: support logging reads & writes from sshbytestream to a file. 2017-05-13 15:34:28 +02:00
Christian Schwarz
74719ad846 rpc: chunk JSON parts of communication + refactoring
JSONDecoder was buffering more of connection data than just the JSON.
=> Unchunker didn't bother and just started unchunking.

While chaining JSONDecoder.Buffered() and the connection using
ChainedReader works, it's still not a clean architecture.

=> Every JSON message is now wrapped in a chunked stream
   (chunked and unchunked)
   => no special-cases
=> Keep ChainedReader, might be useful later on...
2017-05-13 15:33:46 +02:00
Christian Schwarz
feabf1abcd rpc: logging for bytestream listener 2017-05-13 15:25:09 +02:00
Christian Schwarz
53b3a940ec WIP: main: tree traversal 2017-05-13 15:25:09 +02:00
Christian Schwarz
5bc6d460cf WIP: sink & pull implementation 2017-05-13 15:25:09 +02:00
Christian Schwarz
b2de658270 util: fix package name of chunking 2017-05-13 15:25:09 +02:00
Christian Schwarz
6524cfce0c create file if it doesn't exist 2017-05-13 15:25:09 +02:00
Christian Schwarz
dd6dd60e98 Simplify "fork then io.Reader" abstractions 2017-05-13 15:23:37 +02:00
Christian Schwarz
54778c0374 zfs: remove erronous output from ForkReader 2017-05-13 15:23:28 +02:00
Christian Schwarz
c762502f6e zfs: implement DatasetPath top down walk 2017-05-13 15:23:28 +02:00
Christian Schwarz
2407556f15 main: implement request handler. 2017-05-07 12:28:03 +02:00
Christian Schwarz
996be3704d zfs: implement ZFSListFilesystemExists() 2017-05-07 12:26:41 +02:00
Christian Schwarz
6a420e872e zfs: implement ZFSSet 2017-05-07 12:23:12 +02:00
Christian Schwarz
d37bdc3d7a zfs: implement ZFSRecv 2017-05-07 12:22:57 +02:00
Christian Schwarz
030bd7affe zfs: implement ZFSSend 2017-05-07 12:20:56 +02:00
Christian Schwarz
1a92717894 zfs: FilesytemDiff: len(IncrementalPath) < 2 means same most recent version
bonus: style + typo fixes
2017-05-07 12:20:56 +02:00
Christian Schwarz
d0c0e2510b zfs: FilesystemDiff: support empty left list = no common ancestor 2017-05-07 12:20:56 +02:00
Christian Schwarz
cd8796aed4 rpc: Initial|IncrementalTransferRequest transfer zfs data structures 2017-05-07 12:20:56 +02:00
Christian Schwarz
fa97d3d98a config: parse InitialReplPolicy with default to most_recent 2017-05-07 12:00:34 +02:00
Christian Schwarz
c71be910f9 rpc: fix incremental transfer request handling 2017-05-07 11:53:47 +02:00
Christian Schwarz
44d20ac256 zfs: ZFSListMapping fix broken logic 2017-05-06 23:45:33 +02:00
Christian Schwarz
cb37470010 sshbytestream: exited command always returns io.EOF 2017-05-06 23:44:59 +02:00
Christian Schwarz
82beea94d5 rpc: missing response header for InitialTransferRequest 2017-05-06 23:43:55 +02:00
Christian Schwarz
61c263b91d chunking: rewrite to handle EOF events correctly
bonus: some tests asserting the chunking protocol is adhered to
2017-05-06 23:41:51 +02:00
Christian Schwarz
9b871fb7c0 rpc: more detailed errors 2017-05-06 10:58:23 +02:00
Christian Schwarz
aa696dd0ce zfs: use createtxg and guid properties for FilesystemVersion 2017-05-06 10:58:01 +02:00
Christian Schwarz
22454738af application-wide logging through Logger interface 2017-05-03 18:32:11 +02:00
Christian Schwarz
1e7b29bdc5 license: change attribution 2017-05-03 18:28:04 +02:00
Christian Schwarz
55463e5f26 jobrun: per-job logger 2017-05-03 18:28:04 +02:00
Christian Schwarz
3b6d79ec67 jobrun: log through abstract logger interface instead of stderr 2017-05-03 18:27:55 +02:00
Christian Schwarz
77f749112c main: remove global handler and unused structs 2017-05-03 18:27:23 +02:00
Christian Schwarz
f005ce318d Purge model package, not really used anyways. 2017-05-03 17:26:45 +02:00
Christian Schwarz
514f9aa123 rpc: hex-ints for RequestType definitions 2017-05-03 17:13:08 +02:00
Christian Schwarz
b8e7ddd61f rpc fixup msising directions filesystemrequest 2017-05-03 17:12:31 +02:00
Christian Schwarz
43f67d2b7c rpc: add FilesystemVersionsRequest 2017-05-03 17:12:15 +02:00
Christian Schwarz
f46fb2f34f zfs: filesystem versioning and diffing 2017-05-01 20:35:49 +02:00
Christian Schwarz
644d3dd06b zfs: public ZFSList() function + consolidation of mapping code 2017-05-01 20:35:04 +02:00
Christian Schwarz
28f0b90c25 zfs: check for forbidden dataset path characters 2017-05-01 20:09:35 +02:00
Christian Schwarz
301be177ea config: fix broken parsing of direct mapping
Would only parse wildcard ('|') DirectMapping but no specific direct
mappings.
2017-05-01 20:08:20 +02:00
Christian Schwarz
b87829817a rpc: bytestream: listen: filesystems request: reply with header 2017-04-30 23:47:12 +02:00
Christian Schwarz
8bdcdd5ec6 rpc: bytestream: listen: consistent error handling 2017-04-30 23:47:12 +02:00
Christian Schwarz
ec4284f80c sshbytestream: fix semantics when ssh connection dies
in the Wait()ing goroutine, we create an instance of our own error
containing WaitErr + stderr excerpt. Only if the remote command exits
non-zero.

io.EOF is the error we get as soon as the other end of the pipe
(the ssh command) has died.
=> wait for it in the ReadWriter methods.
2017-04-30 23:47:12 +02:00
Christian Schwarz
226935ddea jobrun: error handling through notification channel 2017-04-30 23:47:12 +02:00