{"action":"created","issue":{"url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/2603","repository_url":"https://api.github.com/repos/wiredtiger/wiredtiger","labels_url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/2603/labels{/name}","comments_url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/2603/comments","events_url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/2603/events","html_url":"https://github.com/wiredtiger/wiredtiger/pull/2603","id":141944251,"number":2603,"title":"WT-2330: in-memory configurations should not create on-disk collection files","user":{"login":"keithbostic","id":1393186,"avatar_url":"https://avatars.githubusercontent.com/u/1393186?v=3","gravatar_id":"","url":"https://api.github.com/users/keithbostic","html_url":"https://github.com/keithbostic","followers_url":"https://api.github.com/users/keithbostic/followers","following_url":"https://api.github.com/users/keithbostic/following{/other_user}","gists_url":"https://api.github.com/users/keithbostic/gists{/gist_id}","starred_url":"https://api.github.com/users/keithbostic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keithbostic/subscriptions","organizations_url":"https://api.github.com/users/keithbostic/orgs","repos_url":"https://api.github.com/users/keithbostic/repos","events_url":"https://api.github.com/users/keithbostic/events{/privacy}","received_events_url":"https://api.github.com/users/keithbostic/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"keithbostic","id":1393186,"avatar_url":"https://avatars.githubusercontent.com/u/1393186?v=3","gravatar_id":"","url":"https://api.github.com/users/keithbostic","html_url":"https://github.com/keithbostic","followers_url":"https://api.github.com/users/keithbostic/followers","following_url":"https://api.github.com/users/keithbostic/following{/other_user}","gists_url":"https://api.github.com/users/keithbostic/gists{/gist_id}","starred_url":"https://api.github.com/users/keithbostic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keithbostic/subscriptions","organizations_url":"https://api.github.com/users/keithbostic/orgs","repos_url":"https://api.github.com/users/keithbostic/repos","events_url":"https://api.github.com/users/keithbostic/events{/privacy}","received_events_url":"https://api.github.com/users/keithbostic/received_events","type":"User","site_admin":false},"milestone":null,"comments":1,"created_at":"2016-03-18T18:27:44Z","updated_at":"2016-03-18T23:13:19Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/wiredtiger/wiredtiger/pulls/2603","html_url":"https://github.com/wiredtiger/wiredtiger/pull/2603","diff_url":"https://github.com/wiredtiger/wiredtiger/pull/2603.diff","patch_url":"https://github.com/wiredtiger/wiredtiger/pull/2603.patch"},"body":"@agorrod, @markbenvenuto, @sueloverso, @michaelcahill:\r\n\r\nHere's first cut at creating a pluggable OS layer, for your review/consideration.\r\n\r\nI'm happy to talk about this or respond to review comments, whichever works best. There are a lot of moving parts, and I tried a bunch of different approaches, and this is the one I thought worked best.\r\n\r\nSome notes:\r\n\r\n* `WT_VERB_FILEOPS` was left broken. I don't feel strongly about it: I can fix it, remove it entirely, or limit it to tracking open/close calls only, whatever people want.\r\n\r\n* The WiredTiger library no longer uses FILE * objects; file descriptor and stream functions now use the same open and close functions, and both are represented by a WT_FH handle. Where the code previously used stdout or stderr, I'm faking it with illegal pointer values. We could create real WT_FH handles for stdout/stderr, but I didn't see a compelling reason, happy to do that if people prefer it.\r\n\r\n* The sync/async versions of `__wt_fsync` have been merged, there's now a boolean flag that set wait/no-wait on a flush.\r\n\r\n* The transaction log's print-log function no longer supports specified output handles, output is always to stdout (which the wt utility redirects into another file on demand). @sueloverso, please flag if this is a problem.\r\n\r\n* @michaelcahill and I talked about giving each `WT_FH` a set of methods (so, for example, `__wt_fprintf(session, fh, ...)` becomes `WT_FH.printf(session, ...)`. I didn't do that in this commit, because it's going to touch everything, I'd rather do it in a separate commit. Let me know if you like/dislike that change.\r\n\r\nRemaining tasks:\r\n\r\n* Windows hasn't been touched yet, there's a reasonable chunk of work there.\r\n\r\n* We're still \"writing\" the 4KB description blocks from the block manager in the in-memory case, and I haven't written the code to detect/complain about writing more than trivial amounts when running in-memory.\r\n\r\n* `wiredtiger_open` still isn't checking `WIREDTIGER_CONFIG` for in-memory and readonly options.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/comments/198578096","html_url":"https://github.com/wiredtiger/wiredtiger/pull/2603#issuecomment-198578096","issue_url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/2603","id":198578096,"user":{"login":"keithbostic","id":1393186,"avatar_url":"https://avatars.githubusercontent.com/u/1393186?v=3","gravatar_id":"","url":"https://api.github.com/users/keithbostic","html_url":"https://github.com/keithbostic","followers_url":"https://api.github.com/users/keithbostic/followers","following_url":"https://api.github.com/users/keithbostic/following{/other_user}","gists_url":"https://api.github.com/users/keithbostic/gists{/gist_id}","starred_url":"https://api.github.com/users/keithbostic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keithbostic/subscriptions","organizations_url":"https://api.github.com/users/keithbostic/orgs","repos_url":"https://api.github.com/users/keithbostic/repos","events_url":"https://api.github.com/users/keithbostic/events{/privacy}","received_events_url":"https://api.github.com/users/keithbostic/received_events","type":"User","site_admin":false},"created_at":"2016-03-18T23:13:19Z","updated_at":"2016-03-18T23:13:19Z","body":"@michaelcahill, it's actually tricky to avoid writing the initial description block into created files.\r\n\r\nIn `__create_file`, we create the file (including the description block), then write the metadata, then open the file/checkpoint, which reads the description block, setting things like the block allocation size.\r\n\r\nHow strongly do you feel about losing an allocation size chunk per created file?"}}