{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":624295090,"defaultBranch":"main","name":"tihku","ownerLogin":"penberg","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-04-06T06:47:49.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/81939?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1688921520.0","currentOid":""},"activityList":{"items":[{"before":"056af57183953fdb39cbdf8a55e951762aca56c3","after":"b73ad11e352de703c4446e6ecabf0c2d755b4008","ref":"refs/heads/main","pushedAt":"2023-07-12T08:11:08.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"Merge pull request #62 from tpisto/main\n\nRow","shortMessageHtmlLink":"Merge pull request #62 from tpisto/main"}},{"before":"c45a34ee2c6d48feccf9240d0ebee852d45a23ee","after":null,"ref":"refs/heads/fix59","pushedAt":"2023-07-09T16:52:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"}},{"before":"43f554fbbf957223c720e50c80a08a9c49676af4","after":"056af57183953fdb39cbdf8a55e951762aca56c3","ref":"refs/heads/main","pushedAt":"2023-07-09T15:42:08.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"Merge pull request #61 from penberg/fix59\n\ndatabase: fix an unwrap() in tx_commit","shortMessageHtmlLink":"Merge pull request #61 from penberg/fix59"}},{"before":null,"after":"c45a34ee2c6d48feccf9240d0ebee852d45a23ee","ref":"refs/heads/fix59","pushedAt":"2023-07-09T09:16:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: fix an unwrap() in tx_commit\n\nIt was a legit error -> the transaction doesn't have to be active\nwhen commit() is called on it, and the right behavior in that case\nis to return a TxTerminated error.\n\nFixes https://github.com/penberg/tihku/issues/59","shortMessageHtmlLink":"database: fix an unwrap() in tx_commit"}},{"before":"dec10b3ead8f1aaf22e6af9ad1a30a81ff8a459d","after":"43f554fbbf957223c720e50c80a08a9c49676af4","ref":"refs/heads/main","pushedAt":"2023-06-19T08:15:20.854Z","pushType":"push","commitsCount":1,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"},"commit":{"message":"Mention libsql with MVCC","shortMessageHtmlLink":"Mention libsql with MVCC"}},{"before":"d3fe7cda945ccaecd14df962f39a5aeb17b94ee2","after":null,"ref":"refs/heads/moreskipmap","pushedAt":"2023-06-18T14:36:32.120Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"}},{"before":"c4d72e0f76947c274d3d4b8262ccd9a509b3f10c","after":null,"ref":"refs/heads/rename-project","pushedAt":"2023-06-18T08:45:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"}},{"before":"d7c59bd50e4d1dabd96f2b4bc9cc2b82fc097694","after":"dec10b3ead8f1aaf22e6af9ad1a30a81ff8a459d","ref":"refs/heads/main","pushedAt":"2023-06-18T08:45:24.644Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"},"commit":{"message":"Merge pull request #58 from penberg/rename-project\n\nRename project to Tihku","shortMessageHtmlLink":"Merge pull request #58 from penberg/rename-project"}},{"before":null,"after":"c4d72e0f76947c274d3d4b8262ccd9a509b3f10c","ref":"refs/heads/rename-project","pushedAt":"2023-06-18T08:17:01.642Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"},"commit":{"message":"Rename project to Tihku\n\nThe \"mvcc-rs\" name is not great for a lot of reasons. Let's rename the project to (Iku-)Tihku to give t a proper name","shortMessageHtmlLink":"Rename project to Tihku"}},{"before":"ec645084418a7cf74f77f4f373c5e6bef60d14e7","after":"d7c59bd50e4d1dabd96f2b4bc9cc2b82fc097694","ref":"refs/heads/main","pushedAt":"2023-06-13T17:33:30.426Z","pushType":"push","commitsCount":1,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: actually implement upserts\n\nFixes #55 - it was the code that should have been there\nin the first place, but I forgot to `git add`...","shortMessageHtmlLink":"database: actually implement upserts"}},{"before":"71e664a60413b3bbf942c1c93533ff5939295540","after":null,"ref":"refs/heads/upsert_tests","pushedAt":"2023-06-13T13:55:47.809Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"}},{"before":"adb5faff87a59cf5829b1da518dc1cad24350a38","after":"ec645084418a7cf74f77f4f373c5e6bef60d14e7","ref":"refs/heads/main","pushedAt":"2023-06-13T13:55:44.361Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"},"commit":{"message":"Merge pull request #55 from penberg/upsert_tests\n\ndatabase: change insert to upsert in concurrency tests","shortMessageHtmlLink":"Merge pull request #55 from penberg/upsert_tests"}},{"before":"d4c32f3159d453cec73bae741a70bf49fd3ffb73","after":"71e664a60413b3bbf942c1c93533ff5939295540","ref":"refs/heads/upsert_tests","pushedAt":"2023-06-13T13:53:57.954Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: change insert to upsert in concurrency tests\n\nUsing insert() was a violation of our API, kind of, because\ninserts are not expected to be called twice on the same id.\nInstead, update or upsert should delete the version first,\nand that's what's done in this patch.\n\nAt the same time, write-write conflict detection needed to be\nimplemented, because we started hitting it with rollback().\n\nFinally, garbage collection is modified to actually work\nand garbage-collect row versions. Without it, the number of tracked\nrow versions very quickly goes out of hand.","shortMessageHtmlLink":"database: change insert to upsert in concurrency tests"}},{"before":"1c16b1fd7cc430792ffc1dc9bd96016dfcde22a7","after":null,"ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-13T11:49:51.483Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"}},{"before":"3d3646781dce54329f08b9a7333d921cd456277a","after":"adb5faff87a59cf5829b1da518dc1cad24350a38","ref":"refs/heads/main","pushedAt":"2023-06-13T11:49:48.340Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"},"commit":{"message":"Merge pull request #54 from penberg/concurrency_no_shuttle\n\nconcurrency test: port to OS threads","shortMessageHtmlLink":"Merge pull request #54 from penberg/concurrency_no_shuttle"}},{"before":null,"after":"d4c32f3159d453cec73bae741a70bf49fd3ffb73","ref":"refs/heads/upsert_tests","pushedAt":"2023-06-13T11:49:02.226Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"wip: change insert to upsert in concurrency tests\n\nUsing insert() was a violation of our API, kind of, because\ninserts are not expected to be called twice on the same id.\nInstead, update or upsert should delete the version first,\nand that's what's done in this patch.\nIt also immediately starts hitting assertions indicating that\nwrite/write conflicts are not implemented yet.","shortMessageHtmlLink":"wip: change insert to upsert in concurrency tests"}},{"before":"9d3dcbe169e9d58328520ee70c6209a34545c45a","after":"1c16b1fd7cc430792ffc1dc9bd96016dfcde22a7","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-13T10:53:56.332Z","pushType":"push","commitsCount":1,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: properly compare row versions\n\nPrevious commit was incorrect in two manners:\n 1. It *only* worked if the version was either pushed as the most\n recent or 1 behind the most recent - that's fixed.\n 2. Comparing row versions incorrectly compared either timestamps\n or transaction ids, while we *need* to only compare timestamps.\n That's done by looking up the transaction and extracting its\n timestamp - potentially expensive, and maybe we need to rework\n the algorithm and/or consult the Hekaton paper.","shortMessageHtmlLink":"database: properly compare row versions"}},{"before":"87cb3118fb7920fba554ae0e24a9ad5b551b1c74","after":"9d3dcbe169e9d58328520ee70c6209a34545c45a","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-13T09:33:35.815Z","pushType":"push","commitsCount":1,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"tests: make concurrency test run 4 threads","shortMessageHtmlLink":"tests: make concurrency test run 4 threads"}},{"before":"6a8564aa5233f0044363080e5db86c816e043ddb","after":"87cb3118fb7920fba554ae0e24a9ad5b551b1c74","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-13T09:27:40.552Z","pushType":"push","commitsCount":1,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: make sure row versions are inserted in a sorted order\n\nFor the time being, we still assume that the row versions vector\nis *nearly* sorted, so we just perform a linear reverse search\nand insert the version at an appropriate place.\n\nDuring concurrency tests, the error was at most 1 offset,\nand as long as we empirically prove it to be below a reasonable\nconstant, we're fine. Otherwise we should consider switching\nto either a data structure that keeps elements ordered,\nor at least a list that gives us constant insertion.","shortMessageHtmlLink":"database: make sure row versions are inserted in a sorted order"}},{"before":"bd3f1895adcc09c487aa973d88a9220e1d0d0888","after":"6a8564aa5233f0044363080e5db86c816e043ddb","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-12T14:22:49.290Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: fix the locking order in transactions\n\nBefore this commit, deadlocks were possible (and detected),\nbecause some functions took row_versions lock first, and then\nindividual transaction locks, while other functions took the locks\nin opposite order.","shortMessageHtmlLink":"database: fix the locking order in transactions"}},{"before":"efa98f60ca4f6be70f13b53fa8839d4b44fae997","after":"bd3f1895adcc09c487aa973d88a9220e1d0d0888","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-12T14:05:40.163Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: fix the locking order in transactions\n\nBefore this commit, deadlocks were possible (and detected),\nbecause some functions took row_versions lock first, and then\nindividual transaction locks, while other functions took the locks\nin opposite order.","shortMessageHtmlLink":"database: fix the locking order in transactions"}},{"before":"d8d9c14a776bf3ff9599615a2c46294008157285","after":"efa98f60ca4f6be70f13b53fa8839d4b44fae997","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-12T14:00:13.448Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: fix the locking order in transactions\n\nBefore this commit, deadlocks were possible (and detected),\nbecause some functions took row_versions lock first, and then\nindividual transaction locks, while other functions took the locks\nin opposite order.","shortMessageHtmlLink":"database: fix the locking order in transactions"}},{"before":"d993fa458c8820c98d5c3db7ac35cbec0c841286","after":"d8d9c14a776bf3ff9599615a2c46294008157285","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-12T13:56:02.158Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: fix the locking order in transactions\n\nBefore this commit, deadlocks were possible (and detected),\nbecause some functions took row_versions lock first, and then\nindividual transaction locks, while other functions took the locks\nin opposite order.","shortMessageHtmlLink":"database: fix the locking order in transactions"}},{"before":"9d21999b52dff97229e9b5166ffa64cb17e5f1f9","after":"d993fa458c8820c98d5c3db7ac35cbec0c841286","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-12T13:50:01.020Z","pushType":"push","commitsCount":1,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"database: fix the locking order in transactions\n\nBefore this commit, deadlocks were possible (and detected),\nbecause some functions took row_versions lock first, and then\nindividual transaction locks, while other functions took the locks\nin opposite order.","shortMessageHtmlLink":"database: fix the locking order in transactions"}},{"before":"e712dfe410d7ae5c253fbcf65ae78e90e06f1c26","after":"9d21999b52dff97229e9b5166ffa64cb17e5f1f9","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-12T12:27:47.720Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"concurrency test: port to OS threads\n\nWithout mutexes, it makes no sense anymore to use shuttle.\nInstead, the test cases just spawn OS threads.\nAlso, a case with overlapping ids is added, to test whether\ntransactions read their own writes within the same transaction.","shortMessageHtmlLink":"concurrency test: port to OS threads"}},{"before":"1c2453a6401336349e2a298a3534032469994a36","after":null,"ref":"refs/heads/atomicstate","pushedAt":"2023-06-12T12:14:05.284Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"penberg","name":"Pekka Enberg","path":"/penberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81939?s=80&v=4"}},{"before":"094d6991dceeb3083ea68777b511d20a59a6e4f3","after":"e712dfe410d7ae5c253fbcf65ae78e90e06f1c26","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-12T12:01:29.841Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"concurrency test: port to OS threads\n\nWithout mutexes, it makes no sense anymore to use shuttle.\nInstead, the test cases just spawn OS threads.\nAlso, a case with overlapping ids is added, to test whether\ntransactions read their own writes within the same transaction.","shortMessageHtmlLink":"concurrency test: port to OS threads"}},{"before":"f917f176660ece7c5881e9a47881600f5ed5b512","after":"3d3646781dce54329f08b9a7333d921cd456277a","ref":"refs/heads/main","pushedAt":"2023-06-12T12:00:44.227Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"Merge pull request #53 from penberg/atomicstate\n\ndatabase: make transaction state atomic","shortMessageHtmlLink":"Merge pull request #53 from penberg/atomicstate"}},{"before":"e8dcc989deca66f64c7f869c81b24d8f27f82a22","after":"094d6991dceeb3083ea68777b511d20a59a6e4f3","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-12T11:40:55.523Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"concurrency test: port to OS threads\n\nWithout mutexes, it makes no sense anymore to use shuttle.\nInstead, the test cases just spawn OS threads.\nAlso, a case with overlapping ids is added, and it fails!\n\nFIXME: debug why it fails, and is it expected because of our\nsnapshot isolation (i.e. guarantee weaker than serializability),\nor is it a genuine bug.","shortMessageHtmlLink":"concurrency test: port to OS threads"}},{"before":"37a95a989349df9246cb7d3cc1611fc8fa345fc0","after":"e8dcc989deca66f64c7f869c81b24d8f27f82a22","ref":"refs/heads/concurrency_no_shuttle","pushedAt":"2023-06-12T11:39:26.850Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"psarna","name":"Piotr Sarna","path":"/psarna","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10433047?s=80&v=4"},"commit":{"message":"concurrency test: port to OS threads\n\nWithout mutexes, it makes no sense anymore to use shuttle.\nInstead, the test cases just spawn OS threads.\nAlso, a case with overlapping ids is added, and it fails!\n\nFIXME: debug why it fails, and is it expected because of our\nsnapshot isolation (i.e. guarantee weaker than serializability),\nor is it a genuine bug.","shortMessageHtmlLink":"concurrency test: port to OS threads"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADU8hgkwA","startCursor":null,"endCursor":null}},"title":"Activity ยท penberg/tihku"}