{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":50098469,"defaultBranch":"master","name":"neoppod","ownerLogin":"Nexedi","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-01-21T09:58:48.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/13884706?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1721522223.0","currentOid":""},"activityList":{"items":[{"before":"22eaa437470201babb07bda74e7ae622e20c6548","after":"3d435f55c82ab21a9dfe674d15fd8279abb4cbd3","ref":"refs/heads/master","pushedAt":"2024-07-21T19:10:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"master: leave backup mode if upstream DB is truncated\n\nEven if the user should have left backup mode before truncating\nupstream, this change should help fixing his mistake and minimizing\nthe risk of data corruption.\n\nThe previous behaviour was to crash with:\n\n RuntimeError: upstream DB truncated\n\nThis led to 2 issues:\n\n1. As long as upstream last tid remains older, it is impossible to\n start the backup cluster if it's able to connect to upstream:\n then to avoid another upstream downtime, it is required to fake\n a connection failure, e.g. with temporary firewall rules or\n different --upstream-* parameters, which is not practical.\n2. Worse, if there's again new commits upstream with last tid newer\n than on backup, the user may miss to also truncate the backup\n cluster (even more if it's setup to restart automatically).","shortMessageHtmlLink":"master: leave backup mode if upstream DB is truncated"}},{"before":"fb47eeecd510783583a2e7d1ff37534dbf0381cb","after":"22eaa437470201babb07bda74e7ae622e20c6548","ref":"refs/heads/master","pushedAt":"2024-07-21T01:23:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"storage: add an assertion to check that --disable-pack works\n\nWe had a case of a backup cluster that packed whereas --disable-pack\nwas passed. In fact, for some reasons, we had to hack to pass the\noption so things aren't clear.","shortMessageHtmlLink":"storage: add an assertion to check that --disable-pack works"}},{"before":"2a410155d5e0aff98c12b3bbeff9304457897c5e","after":null,"ref":"refs/heads/mr23","pushedAt":"2024-07-21T00:37:03.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"}},{"before":"eb3a393734e0898178bef01e9cd29f7bd9b2356a","after":"fb47eeecd510783583a2e7d1ff37534dbf0381cb","ref":"refs/heads/master","pushedAt":"2024-07-21T00:34:37.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"Bump protocol version","shortMessageHtmlLink":"Bump protocol version"}},{"before":null,"after":"2a410155d5e0aff98c12b3bbeff9304457897c5e","ref":"refs/heads/mr23","pushedAt":"2024-07-08T05:04:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"wip","shortMessageHtmlLink":"wip"}},{"before":"3ddb6663bc83e6ed7c6cc55656cfff81d5f52935","after":"eb3a393734e0898178bef01e9cd29f7bd9b2356a","ref":"refs/heads/master","pushedAt":"2024-07-08T04:18:00.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"mysql: add missing spaces in SQL + tiny optimization\n\nThe spaces are optional so it's cosmetics.","shortMessageHtmlLink":"mysql: add missing spaces in SQL + tiny optimization"}},{"before":"6ffafcbd4abef32591051d33597da7d16753fd71","after":"3ddb6663bc83e6ed7c6cc55656cfff81d5f52935","ref":"refs/heads/master","pushedAt":"2024-05-21T17:48:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"storage: a few \"ORDER BY\" were missing in backends\n\nIn practice, it may be only required for SQLite (because we don't force index)\non 'obj' (which as several indices).","shortMessageHtmlLink":"storage: a few \"ORDER BY\" were missing in backends"}},{"before":"ce415907849bfd4c54bbe870a91ed17937b4369d","after":"84ac5a0df22dab74c1b700ea64c137777b6c2e90","ref":"refs/heads/reflink","pushedAt":"2024-05-21T17:48:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"wip","shortMessageHtmlLink":"wip"}},{"before":"c4443632e3541c064f5b43096099f4a8b74cbf58","after":"6ffafcbd4abef32591051d33597da7d16753fd71","ref":"refs/heads/master","pushedAt":"2024-05-17T02:00:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"Fix egg dependencies","shortMessageHtmlLink":"Fix egg dependencies"}},{"before":"ce415907849bfd4c54bbe870a91ed17937b4369d","after":null,"ref":"refs/heads/cksumvfs","pushedAt":"2024-05-09T03:47:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"}},{"before":null,"after":"ce415907849bfd4c54bbe870a91ed17937b4369d","ref":"refs/heads/cksumvfs","pushedAt":"2024-05-09T03:47:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"wip","shortMessageHtmlLink":"wip"}},{"before":"715640675699e22aa0546011de2ffa6a47e7a751","after":"c4443632e3541c064f5b43096099f4a8b74cbf58","ref":"refs/heads/master","pushedAt":"2024-05-09T03:37:11.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"sqlite: fix performance issue in replication","shortMessageHtmlLink":"sqlite: fix performance issue in replication"}},{"before":"fd3024401168a7fd1dbf51d21f95d48467b9e0d0","after":"ce415907849bfd4c54bbe870a91ed17937b4369d","ref":"refs/heads/reflink","pushedAt":"2024-05-09T03:26:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"wip","shortMessageHtmlLink":"wip"}},{"before":"b10124a2d19d3c47ab589eb6209bf9bb1f6cc9f1","after":"fd3024401168a7fd1dbf51d21f95d48467b9e0d0","ref":"refs/heads/reflink","pushedAt":"2024-05-09T03:22:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"wip","shortMessageHtmlLink":"wip"}},{"before":"7ebdb01c84ceff87e677785fb4cabae13f840f79","after":"b10124a2d19d3c47ab589eb6209bf9bb1f6cc9f1","ref":"refs/heads/reflink","pushedAt":"2024-05-09T03:16:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"wip","shortMessageHtmlLink":"wip"}},{"before":"821efb55d0b966d277d138984643f14fafa125b5","after":"7ebdb01c84ceff87e677785fb4cabae13f840f79","ref":"refs/heads/reflink","pushedAt":"2024-05-09T03:09:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"wip","shortMessageHtmlLink":"wip"}},{"before":"a0280bec9681c5168eef0d6a48d430b9c19a86b2","after":"715640675699e22aa0546011de2ffa6a47e7a751","ref":"refs/heads/master","pushedAt":"2024-04-16T18:18:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"sqlite: accept -d URI, where query string can configure the DB connection","shortMessageHtmlLink":"sqlite: accept -d URI, where query string can configure the DB connec…"}},{"before":null,"after":"821efb55d0b966d277d138984643f14fafa125b5","ref":"refs/heads/reflink","pushedAt":"2024-03-22T11:02:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"wip","shortMessageHtmlLink":"wip"}},{"before":"ffecd4ae043b1b407f1caf6aa59b795f2c9c007d","after":"a0280bec9681c5168eef0d6a48d430b9c19a86b2","ref":"refs/heads/master","pushedAt":"2024-03-22T11:01:11.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"pack: some cleanup & better error handling","shortMessageHtmlLink":"pack: some cleanup & better error handling"}},{"before":"798c9f2528fa169429e60b66864188f77be80c76","after":"ffecd4ae043b1b407f1caf6aa59b795f2c9c007d","ref":"refs/heads/master","pushedAt":"2024-02-23T10:36:25.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"client: check type of 'oid' parameter when loading an object\n\nSince the switch to msgpack, there's no more type checking at protocol level\nand for example passing an integer would cause storage nodes to crash.\n\nBut as shown here, the type checking of the old protocol was not always\nenough, because data structures at client side could anyway get wrong.","shortMessageHtmlLink":"client: check type of 'oid' parameter when loading an object"}},{"before":"5d348d4c2fd3000ed2c923df6c3dec1f7e8e0fc4","after":"ee44a3b00d157c8bd6ae3c2e9d7a8370b28f2666","ref":"refs/heads/old-proto","pushedAt":"2023-12-18T17:43:31.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"client: Don't allow oPtion_nAme in zurl\n\nJulien notes this is very likely unneeded:\nhttps://lab.nexedi.com/nexedi/neoppod/merge_requests/21/diffs#note_195929\n\nWe had it like this since 01a01c8c (client: Add support for zodburi),\nbut I rechecked zodburi codebase now and it does not do any similar\nlowering anywhere.\n\nSo drop support for case normalization in zurl options.\n\n/cc @levin.zimmermann\n/reviewed-by @jm\n/reviewed-on https://lab.nexedi.com/nexedi/neoppod/merge_requests/21\n\n(cherry-picked from commit 798c9f2528fa169429e60b66864188f77be80c76)","shortMessageHtmlLink":"client: Don't allow oPtion_nAme in zurl"}},{"before":"9a3898e4a6000eda5c55381ea0f063230add5871","after":"798c9f2528fa169429e60b66864188f77be80c76","ref":"refs/heads/master","pushedAt":"2023-12-18T15:14:42.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"client: Don't allow oPtion_nAme in zurl\n\nJulien notes this is very likely unneeded:\nhttps://lab.nexedi.com/nexedi/neoppod/merge_requests/21/diffs#note_195929\n\nWe had it like this since 01a01c8c (client: Add support for zodburi),\nbut I rechecked zodburi codebase now and it does not do any similar\nlowering anywhere.\n\nSo drop support for case normalization in zurl options.\n\n/cc @levin.zimmermann\n/reviewed-by @jm\n/reviewed-on https://lab.nexedi.com/nexedi/neoppod/merge_requests/21","shortMessageHtmlLink":"client: Don't allow oPtion_nAme in zurl"}},{"before":"b6f821a2adae721f67a6fed8d74527c256e91211","after":"9a3898e4a6000eda5c55381ea0f063230add5871","ref":"refs/heads/master","pushedAt":"2023-11-08T11:01:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"master: fix crash when aborting early e.g. when failing to open listening socket\n\nPre-mortem data:\nTraceback (most recent call last):\nFile \"neo/master/app.py\", line 172, in run\nself._run()\nFile \"neo/master/app.py\", line 180, in _run\nself.listening_conn = ListeningConnection(self, None, self.server)\nFile \"neo/lib/connection.py\", line 298, in __init__\nconnector.makeListeningConnection()\nFile \"neo/lib/connector.py\", line 133, in makeListeningConnection\nself._error('listen', e)\nFile \"neo/lib/connector.py\", line 93, in _error\nraise ConnectorException\nConnectorException\nTraceback (most recent call last):\n File \"neomaster\", line 50, in \n sys.exit(neo.scripts.neomaster.main())\n File \"neo/scripts/neomaster.py\", line 31, in main\n app.run()\n File \"neo/master/app.py\", line 175, in run\n self.log()\n File \"neo/master/app.py\", line 167, in log\n if self.pt is not None:\nAttributeError: 'Application' object has no attribute 'pt'","shortMessageHtmlLink":"master: fix crash when aborting early e.g. when failing to open liste…"}},{"before":"471eee1b1d8e73761b985c8a4e338da17f4b7972","after":"b6f821a2adae721f67a6fed8d74527c256e91211","ref":"refs/heads/master","pushedAt":"2023-10-16T01:03:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"neoctl: fix exit status code if not ready","shortMessageHtmlLink":"neoctl: fix exit status code if not ready"}},{"before":"9122326e6aca2706c6676b770ba91751998673d6","after":null,"ref":"refs/heads/pack2","pushedAt":"2023-10-13T17:40:05.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"}},{"before":"9122326e6aca2706c6676b770ba91751998673d6","after":null,"ref":"refs/heads/pack","pushedAt":"2023-10-13T17:40:05.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"}},{"before":"fd87e153d3906c9120bbb087827ee4666dc388e7","after":"471eee1b1d8e73761b985c8a4e338da17f4b7972","ref":"refs/heads/master","pushedAt":"2023-10-13T17:40:05.000Z","pushType":"push","commitsCount":11,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"neoctl: fix exit status code if not ready","shortMessageHtmlLink":"neoctl: fix exit status code if not ready"}},{"before":null,"after":"e09e8edc8864c59ce4d61d4e349a9537645f362b","ref":"refs/heads/wc2-future","pushedAt":"2023-06-15T09:45:29.130Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"identification: Set possible answers to same msgid\n\nThis patchs origin is https://lab.nexedi.com/nexedi/neoppod/merge_requests/20.\nWith recent changes on https://lab.nexedi.com/kirr/neo/merge_requests/2\nand https://lab.nexedi.com/levin.zimmermann/wendelin.core/commit/f546d836ef3a95b0f2dfecacd4e74646af0c17e3\nwe can already use WCFS with multiple master nodes in combination with this\npatch. Until we proceed in https://lab.nexedi.com/nexedi/neoppod/merge_requests/20\nwe can already use a NEO/py with this patch in order to test WCFS on our\nwind clone.\n\n---\n\nOriginal patch content:\n\nWhen a node tries to connect to another node it initially sends a\n'RequestIdentification' packet. The other node can either reply with\n'AcceptIdentification' or in case of a secondary master with\n'NotPrimaryMaster'.\n\nIn the second case the message id differs from the initial requests\nmessage id. This makes it difficult in a multi-threaded implementation\nto proceed this answer: due to the different msg/connection - id the\nmulti-threaded implementation tries to proceed this incoming message in\na different thread, while the requesting thread waits forever for its\npeers reply.\n\nThe most straightforward solution is to use the same connection - id for\nboth possible answers to the 'RequestIdentification' packet. This\ndoesn't break given NEO/py implementation and is only a small patch.\nA workaround in a multi-threaded implementation on the other hand\nseems to be much more complicated and time-consuming. Finally it also makes\nsense semantically, because \"Message IDs are used to identify response\npackets\" and in the given context the 'NotPrimaryMaster' *is* the de facto\nresponse of a 'RequestIdentification'.\n\nBecause the msgid is the same now, '_ask' uses the\n'PrimaryBootstrapHandler' (if it's the same connection) [1], so it may also\nbe necessary to move 'notPrimaryMaster' to 'PrimaryBootstrapHandler'.\n\n[1] https://lab.nexedi.com/nexedi/neoppod/blob/ecc9c63c7/neo/lib/threaded_app.py#L142","shortMessageHtmlLink":"identification: Set possible answers to same msgid"}},{"before":"324dcb15ebb0c3fa44d4b43b2ef0f87aad3b4d09","after":"b775379a3cb8470ffeb5dd93960c3a336dbadd22","ref":"refs/heads/wc2","pushedAt":"2023-05-05T12:13:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"identification: Set possible answers to same msgid\n\nThis patchs origin is https://lab.nexedi.com/nexedi/neoppod/merge_requests/20.\nWith recent changes on https://lab.nexedi.com/kirr/neo/merge_requests/2\nand https://lab.nexedi.com/levin.zimmermann/wendelin.core/commit/f546d836ef3a95b0f2dfecacd4e74646af0c17e3\nwe can already use WCFS with multiple master nodes in combination with this\npatch. Until we proceed in https://lab.nexedi.com/nexedi/neoppod/merge_requests/20\nwe can already use a NEO/py with this patch in order to test WCFS on our\nwind clone.\n\n---\n\nOriginal patch content:\n\nWhen a node tries to connect to another node it initially sends a\n'RequestIdentification' packet. The other node can either reply with\n'AcceptIdentification' or in case of a secondary master with\n'NotPrimaryMaster'.\n\nIn the second case the message id differs from the initial requests\nmessage id. This makes it difficult in a multi-threaded implementation\nto proceed this answer: due to the different msg/connection - id the\nmulti-threaded implementation tries to proceed this incoming message in\na different thread, while the requesting thread waits forever for its\npeers reply.\n\nThe most straightforward solution is to use the same connection - id for\nboth possible answers to the 'RequestIdentification' packet. This\ndoesn't break given NEO/py implementation and is only a small patch.\nA workaround in a multi-threaded implementation on the other hand\nseems to be much more complicated and time-consuming. Finally it also makes\nsense semantically, because \"Message IDs are used to identify response\npackets\" and in the given context the 'NotPrimaryMaster' *is* the de facto\nresponse of a 'RequestIdentification'.\n\nBecause the msgid is the same now, '_ask' uses the\n'PrimaryBootstrapHandler' (if it's the same connection) [1], so it may also\nbe necessary to move 'notPrimaryMaster' to 'PrimaryBootstrapHandler'.\n\n[1] https://lab.nexedi.com/nexedi/neoppod/blob/ecc9c63c7/neo/lib/threaded_app.py#L142","shortMessageHtmlLink":"identification: Set possible answers to same msgid"}},{"before":"19141f1b00285b4c2f310df3f8bc61bd09717b91","after":"9122326e6aca2706c6676b770ba91751998673d6","ref":"refs/heads/pack2","pushedAt":"2023-04-25T23:15:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"NexediGitlab","name":null,"path":"/NexediGitlab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17395639?s=80&v=4"},"commit":{"message":"proto","shortMessageHtmlLink":"proto"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEhSrBGQA","startCursor":null,"endCursor":null}},"title":"Activity · Nexedi/neoppod"}