nostrdb.json (267343B)
1 [ 2 { 3 "issue": { 4 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/27", 5 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 6 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/labels{/name}", 7 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/comments", 8 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/events", 9 "html_url": "https://github.com/damus-io/nostrdb/issues/27", 10 "id": 2234035426, 11 "node_id": "I_kwDOJ9k5Is6FKKzi", 12 "number": 27, 13 "title": "cli: output events in json", 14 "user": { 15 "login": "jb55", 16 "id": 45598, 17 "node_id": "MDQ6VXNlcjQ1NTk4", 18 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 19 "gravatar_id": "", 20 "url": "https://api.github.com/users/jb55", 21 "html_url": "https://github.com/jb55", 22 "followers_url": "https://api.github.com/users/jb55/followers", 23 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 24 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 25 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 26 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 27 "organizations_url": "https://api.github.com/users/jb55/orgs", 28 "repos_url": "https://api.github.com/users/jb55/repos", 29 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 30 "received_events_url": "https://api.github.com/users/jb55/received_events", 31 "type": "User", 32 "site_admin": false 33 }, 34 "labels": [], 35 "state": "open", 36 "locked": false, 37 "assignee": null, 38 "assignees": [], 39 "milestone": null, 40 "comments": 0, 41 "created_at": "2024-04-09T17:55:42Z", 42 "updated_at": "2024-04-09T17:55:42Z", 43 "closed_at": null, 44 "author_association": "CONTRIBUTOR", 45 "active_lock_reason": null, 46 "body": "right now when using search it doesn't output the event in json. let's fix that", 47 "reactions": { 48 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/reactions", 49 "total_count": 0, 50 "+1": 0, 51 "-1": 0, 52 "laugh": 0, 53 "hooray": 0, 54 "confused": 0, 55 "heart": 0, 56 "rocket": 0, 57 "eyes": 0 58 }, 59 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/timeline", 60 "performed_via_github_app": null, 61 "state_reason": null 62 } 63 }, 64 { 65 "issue": { 66 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/26", 67 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 68 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/labels{/name}", 69 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/comments", 70 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/events", 71 "html_url": "https://github.com/damus-io/nostrdb/issues/26", 72 "id": 2181280152, 73 "node_id": "I_kwDOJ9k5Is6CA7GY", 74 "number": 26, 75 "title": "Add created_at query plan", 76 "user": { 77 "login": "jb55", 78 "id": 45598, 79 "node_id": "MDQ6VXNlcjQ1NTk4", 80 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 81 "gravatar_id": "", 82 "url": "https://api.github.com/users/jb55", 83 "html_url": "https://github.com/jb55", 84 "followers_url": "https://api.github.com/users/jb55/followers", 85 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 86 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 87 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 88 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 89 "organizations_url": "https://api.github.com/users/jb55/orgs", 90 "repos_url": "https://api.github.com/users/jb55/repos", 91 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 92 "received_events_url": "https://api.github.com/users/jb55/received_events", 93 "type": "User", 94 "site_admin": false 95 }, 96 "labels": [], 97 "state": "closed", 98 "locked": false, 99 "assignee": { 100 "login": "jb55", 101 "id": 45598, 102 "node_id": "MDQ6VXNlcjQ1NTk4", 103 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 104 "gravatar_id": "", 105 "url": "https://api.github.com/users/jb55", 106 "html_url": "https://github.com/jb55", 107 "followers_url": "https://api.github.com/users/jb55/followers", 108 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 109 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 110 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 111 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 112 "organizations_url": "https://api.github.com/users/jb55/orgs", 113 "repos_url": "https://api.github.com/users/jb55/repos", 114 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 115 "received_events_url": "https://api.github.com/users/jb55/received_events", 116 "type": "User", 117 "site_admin": false 118 }, 119 "assignees": [ 120 { 121 "login": "jb55", 122 "id": 45598, 123 "node_id": "MDQ6VXNlcjQ1NTk4", 124 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 125 "gravatar_id": "", 126 "url": "https://api.github.com/users/jb55", 127 "html_url": "https://github.com/jb55", 128 "followers_url": "https://api.github.com/users/jb55/followers", 129 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 130 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 131 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 132 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 133 "organizations_url": "https://api.github.com/users/jb55/orgs", 134 "repos_url": "https://api.github.com/users/jb55/repos", 135 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 136 "received_events_url": "https://api.github.com/users/jb55/received_events", 137 "type": "User", 138 "site_admin": false 139 } 140 ], 141 "milestone": null, 142 "comments": 0, 143 "created_at": "2024-03-12T10:38:04Z", 144 "updated_at": "2024-03-13T07:55:39Z", 145 "closed_at": "2024-03-13T07:55:39Z", 146 "author_association": "CONTRIBUTOR", 147 "active_lock_reason": null, 148 "body": "For timeline queries and query fallbacks, the simplest possible query plan is the created_at scan. This works well for timelines in our case, because nostrdb is not typically used as a global database and should contain notes intended for us anyways. This allows us to simplify timeline queries into a linear scan. Since most of our indices are ordered by created_at, this linear scan is pretty efficient for looking for recent notes.", 149 "reactions": { 150 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/reactions", 151 "total_count": 0, 152 "+1": 0, 153 "-1": 0, 154 "laugh": 0, 155 "hooray": 0, 156 "confused": 0, 157 "heart": 0, 158 "rocket": 0, 159 "eyes": 0 160 }, 161 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/timeline", 162 "performed_via_github_app": null, 163 "state_reason": "completed" 164 } 165 }, 166 { 167 "issue": { 168 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/25", 169 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 170 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/labels{/name}", 171 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/comments", 172 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/events", 173 "html_url": "https://github.com/damus-io/nostrdb/pull/25", 174 "id": 2067542613, 175 "node_id": "PR_kwDOJ9k5Is5jUpuv", 176 "number": 25, 177 "title": "Fix typos", 178 "user": { 179 "login": "shuoer86", 180 "id": 129674997, 181 "node_id": "U_kgDOB7qu9Q", 182 "avatar_url": "https://avatars.githubusercontent.com/u/129674997?v=4", 183 "gravatar_id": "", 184 "url": "https://api.github.com/users/shuoer86", 185 "html_url": "https://github.com/shuoer86", 186 "followers_url": "https://api.github.com/users/shuoer86/followers", 187 "following_url": "https://api.github.com/users/shuoer86/following{/other_user}", 188 "gists_url": "https://api.github.com/users/shuoer86/gists{/gist_id}", 189 "starred_url": "https://api.github.com/users/shuoer86/starred{/owner}{/repo}", 190 "subscriptions_url": "https://api.github.com/users/shuoer86/subscriptions", 191 "organizations_url": "https://api.github.com/users/shuoer86/orgs", 192 "repos_url": "https://api.github.com/users/shuoer86/repos", 193 "events_url": "https://api.github.com/users/shuoer86/events{/privacy}", 194 "received_events_url": "https://api.github.com/users/shuoer86/received_events", 195 "type": "User", 196 "site_admin": false 197 }, 198 "labels": [], 199 "state": "closed", 200 "locked": false, 201 "assignee": null, 202 "assignees": [], 203 "milestone": null, 204 "comments": 1, 205 "created_at": "2024-01-05T15:27:36Z", 206 "updated_at": "2024-01-05T18:26:22Z", 207 "closed_at": "2024-01-05T18:25:24Z", 208 "author_association": "CONTRIBUTOR", 209 "active_lock_reason": null, 210 "draft": false, 211 "pull_request": { 212 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/25", 213 "html_url": "https://github.com/damus-io/nostrdb/pull/25", 214 "diff_url": "https://github.com/damus-io/nostrdb/pull/25.diff", 215 "patch_url": "https://github.com/damus-io/nostrdb/pull/25.patch", 216 "merged_at": null 217 }, 218 "body": null, 219 "reactions": { 220 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/reactions", 221 "total_count": 0, 222 "+1": 0, 223 "-1": 0, 224 "laugh": 0, 225 "hooray": 0, 226 "confused": 0, 227 "heart": 0, 228 "rocket": 0, 229 "eyes": 0 230 }, 231 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/timeline", 232 "performed_via_github_app": null, 233 "state_reason": null 234 } 235 }, 236 { 237 "issue": { 238 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/25", 239 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 240 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/labels{/name}", 241 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/comments", 242 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/events", 243 "html_url": "https://github.com/damus-io/nostrdb/pull/25", 244 "id": 2067542613, 245 "node_id": "PR_kwDOJ9k5Is5jUpuv", 246 "number": 25, 247 "title": "Fix typos", 248 "user": { 249 "login": "shuoer86", 250 "id": 129674997, 251 "node_id": "U_kgDOB7qu9Q", 252 "avatar_url": "https://avatars.githubusercontent.com/u/129674997?v=4", 253 "gravatar_id": "", 254 "url": "https://api.github.com/users/shuoer86", 255 "html_url": "https://github.com/shuoer86", 256 "followers_url": "https://api.github.com/users/shuoer86/followers", 257 "following_url": "https://api.github.com/users/shuoer86/following{/other_user}", 258 "gists_url": "https://api.github.com/users/shuoer86/gists{/gist_id}", 259 "starred_url": "https://api.github.com/users/shuoer86/starred{/owner}{/repo}", 260 "subscriptions_url": "https://api.github.com/users/shuoer86/subscriptions", 261 "organizations_url": "https://api.github.com/users/shuoer86/orgs", 262 "repos_url": "https://api.github.com/users/shuoer86/repos", 263 "events_url": "https://api.github.com/users/shuoer86/events{/privacy}", 264 "received_events_url": "https://api.github.com/users/shuoer86/received_events", 265 "type": "User", 266 "site_admin": false 267 }, 268 "labels": [], 269 "state": "closed", 270 "locked": false, 271 "assignee": null, 272 "assignees": [], 273 "milestone": null, 274 "comments": 1, 275 "created_at": "2024-01-05T15:27:36Z", 276 "updated_at": "2024-01-05T18:26:22Z", 277 "closed_at": "2024-01-05T18:25:24Z", 278 "author_association": "CONTRIBUTOR", 279 "active_lock_reason": null, 280 "draft": false, 281 "pull_request": { 282 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/25", 283 "html_url": "https://github.com/damus-io/nostrdb/pull/25", 284 "diff_url": "https://github.com/damus-io/nostrdb/pull/25.diff", 285 "patch_url": "https://github.com/damus-io/nostrdb/pull/25.patch", 286 "merged_at": null 287 }, 288 "body": null, 289 "reactions": { 290 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/reactions", 291 "total_count": 0, 292 "+1": 0, 293 "-1": 0, 294 "laugh": 0, 295 "hooray": 0, 296 "confused": 0, 297 "heart": 0, 298 "rocket": 0, 299 "eyes": 0 300 }, 301 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/timeline", 302 "performed_via_github_app": null, 303 "state_reason": null 304 }, 305 "comment": { 306 "user": "jb55", 307 "created_at": "2024-01-05T18:26:21Z", 308 "updated_at": "2024-01-05T18:26:21Z", 309 "body": "Thanks!\n\npushed\n\nTo github.com:damus-io/nostrdb\n 3802828..6285179 master -> master\n" 310 } 311 }, 312 { 313 "issue": { 314 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24", 315 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 316 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}", 317 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments", 318 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events", 319 "html_url": "https://github.com/damus-io/nostrdb/issues/24", 320 "id": 2061809289, 321 "node_id": "I_kwDOJ9k5Is565LaJ", 322 "number": 24, 323 "title": "Valgrind reports a memory leak.", 324 "user": { 325 "login": "eznix86", 326 "id": 26553194, 327 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 328 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 329 "gravatar_id": "", 330 "url": "https://api.github.com/users/eznix86", 331 "html_url": "https://github.com/eznix86", 332 "followers_url": "https://api.github.com/users/eznix86/followers", 333 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 334 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 335 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 336 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 337 "organizations_url": "https://api.github.com/users/eznix86/orgs", 338 "repos_url": "https://api.github.com/users/eznix86/repos", 339 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 340 "received_events_url": "https://api.github.com/users/eznix86/received_events", 341 "type": "User", 342 "site_admin": false 343 }, 344 "labels": [], 345 "state": "open", 346 "locked": false, 347 "assignee": null, 348 "assignees": [], 349 "milestone": null, 350 "comments": 6, 351 "created_at": "2024-01-01T22:39:33Z", 352 "updated_at": "2024-01-03T05:39:43Z", 353 "closed_at": null, 354 "author_association": "NONE", 355 "active_lock_reason": null, 356 "body": "here is the full report:\r\n```\r\nvalgrind --leak-check=full ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548== in use at exit: 528 bytes in 2 blocks\r\n==90548== total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548== by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548== by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548== definitely lost: 280 bytes in 1 blocks\r\n==90548== indirectly lost: 248 bytes in 1 blocks\r\n==90548== possibly lost: 0 bytes in 0 blocks\r\n==90548== still reachable: 0 bytes in 0 blocks\r\n==90548== suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.", 357 "reactions": { 358 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions", 359 "total_count": 0, 360 "+1": 0, 361 "-1": 0, 362 "laugh": 0, 363 "hooray": 0, 364 "confused": 0, 365 "heart": 0, 366 "rocket": 0, 367 "eyes": 0 368 }, 369 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline", 370 "performed_via_github_app": null, 371 "state_reason": null 372 } 373 }, 374 { 375 "issue": { 376 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24", 377 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 378 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}", 379 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments", 380 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events", 381 "html_url": "https://github.com/damus-io/nostrdb/issues/24", 382 "id": 2061809289, 383 "node_id": "I_kwDOJ9k5Is565LaJ", 384 "number": 24, 385 "title": "Valgrind reports a memory leak.", 386 "user": { 387 "login": "eznix86", 388 "id": 26553194, 389 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 390 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 391 "gravatar_id": "", 392 "url": "https://api.github.com/users/eznix86", 393 "html_url": "https://github.com/eznix86", 394 "followers_url": "https://api.github.com/users/eznix86/followers", 395 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 396 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 397 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 398 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 399 "organizations_url": "https://api.github.com/users/eznix86/orgs", 400 "repos_url": "https://api.github.com/users/eznix86/repos", 401 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 402 "received_events_url": "https://api.github.com/users/eznix86/received_events", 403 "type": "User", 404 "site_admin": false 405 }, 406 "labels": [], 407 "state": "open", 408 "locked": false, 409 "assignee": null, 410 "assignees": [], 411 "milestone": null, 412 "comments": 6, 413 "created_at": "2024-01-01T22:39:33Z", 414 "updated_at": "2024-01-03T05:39:43Z", 415 "closed_at": null, 416 "author_association": "NONE", 417 "active_lock_reason": null, 418 "body": "here is the full report:\r\n```\r\nvalgrind --leak-check=full ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548== in use at exit: 528 bytes in 2 blocks\r\n==90548== total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548== by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548== by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548== definitely lost: 280 bytes in 1 blocks\r\n==90548== indirectly lost: 248 bytes in 1 blocks\r\n==90548== possibly lost: 0 bytes in 0 blocks\r\n==90548== still reachable: 0 bytes in 0 blocks\r\n==90548== suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.", 419 "reactions": { 420 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions", 421 "total_count": 0, 422 "+1": 0, 423 "-1": 0, 424 "laugh": 0, 425 "hooray": 0, 426 "confused": 0, 427 "heart": 0, 428 "rocket": 0, 429 "eyes": 0 430 }, 431 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline", 432 "performed_via_github_app": null, 433 "state_reason": null 434 }, 435 "comment": { 436 "user": "jb55", 437 "created_at": "2024-01-01T22:47:11Z", 438 "updated_at": "2024-01-01T22:47:11Z", 439 "body": "On Mon, Jan 01, 2024 at 02:39:44PM -0800, Bruno Bernard wrote:\n>here is the full report:\n>```\n>valgrind --leak-check=full ./ndb search --limit 2 --oldest-first 'nosy ostrich'\n>==90548== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\n>==90548== by 0x11635B: ndb_init (nostrdb.c:3222)\n>==90548== by 0x10E557: main (ndb.c:133)\n>```\n>\n>The memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.\n\nhow does valgrind determine leaks in this case? of course this is\nleaking because free only happens on ndb_destroy.\n" 440 } 441 }, 442 { 443 "issue": { 444 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24", 445 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 446 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}", 447 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments", 448 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events", 449 "html_url": "https://github.com/damus-io/nostrdb/issues/24", 450 "id": 2061809289, 451 "node_id": "I_kwDOJ9k5Is565LaJ", 452 "number": 24, 453 "title": "Valgrind reports a memory leak.", 454 "user": { 455 "login": "eznix86", 456 "id": 26553194, 457 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 458 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 459 "gravatar_id": "", 460 "url": "https://api.github.com/users/eznix86", 461 "html_url": "https://github.com/eznix86", 462 "followers_url": "https://api.github.com/users/eznix86/followers", 463 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 464 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 465 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 466 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 467 "organizations_url": "https://api.github.com/users/eznix86/orgs", 468 "repos_url": "https://api.github.com/users/eznix86/repos", 469 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 470 "received_events_url": "https://api.github.com/users/eznix86/received_events", 471 "type": "User", 472 "site_admin": false 473 }, 474 "labels": [], 475 "state": "open", 476 "locked": false, 477 "assignee": null, 478 "assignees": [], 479 "milestone": null, 480 "comments": 6, 481 "created_at": "2024-01-01T22:39:33Z", 482 "updated_at": "2024-01-03T05:39:43Z", 483 "closed_at": null, 484 "author_association": "NONE", 485 "active_lock_reason": null, 486 "body": "here is the full report:\r\n```\r\nvalgrind --leak-check=full ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548== in use at exit: 528 bytes in 2 blocks\r\n==90548== total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548== by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548== by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548== definitely lost: 280 bytes in 1 blocks\r\n==90548== indirectly lost: 248 bytes in 1 blocks\r\n==90548== possibly lost: 0 bytes in 0 blocks\r\n==90548== still reachable: 0 bytes in 0 blocks\r\n==90548== suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.", 487 "reactions": { 488 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions", 489 "total_count": 0, 490 "+1": 0, 491 "-1": 0, 492 "laugh": 0, 493 "hooray": 0, 494 "confused": 0, 495 "heart": 0, 496 "rocket": 0, 497 "eyes": 0 498 }, 499 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline", 500 "performed_via_github_app": null, 501 "state_reason": null 502 }, 503 "comment": { 504 "user": "eznix86", 505 "created_at": "2024-01-01T23:45:55Z", 506 "updated_at": "2024-01-01T23:46:11Z", 507 "body": "While reading the code, I saw that. But Valgrind spits the memory leaks as it sees it happening during the execution. Even if memory is freed at the end using `ndb_destroy`. _Maybe_ a proper fix would be to free the memory right after it is no longer needed. What do you think ?\r\n\r\nAlso, it is negligible. 280 Bytes ¯\\_(ツ)_/¯ " 508 } 509 }, 510 { 511 "issue": { 512 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24", 513 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 514 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}", 515 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments", 516 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events", 517 "html_url": "https://github.com/damus-io/nostrdb/issues/24", 518 "id": 2061809289, 519 "node_id": "I_kwDOJ9k5Is565LaJ", 520 "number": 24, 521 "title": "Valgrind reports a memory leak.", 522 "user": { 523 "login": "eznix86", 524 "id": 26553194, 525 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 526 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 527 "gravatar_id": "", 528 "url": "https://api.github.com/users/eznix86", 529 "html_url": "https://github.com/eznix86", 530 "followers_url": "https://api.github.com/users/eznix86/followers", 531 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 532 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 533 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 534 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 535 "organizations_url": "https://api.github.com/users/eznix86/orgs", 536 "repos_url": "https://api.github.com/users/eznix86/repos", 537 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 538 "received_events_url": "https://api.github.com/users/eznix86/received_events", 539 "type": "User", 540 "site_admin": false 541 }, 542 "labels": [], 543 "state": "open", 544 "locked": false, 545 "assignee": null, 546 "assignees": [], 547 "milestone": null, 548 "comments": 6, 549 "created_at": "2024-01-01T22:39:33Z", 550 "updated_at": "2024-01-03T05:39:43Z", 551 "closed_at": null, 552 "author_association": "NONE", 553 "active_lock_reason": null, 554 "body": "here is the full report:\r\n```\r\nvalgrind --leak-check=full ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548== in use at exit: 528 bytes in 2 blocks\r\n==90548== total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548== by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548== by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548== definitely lost: 280 bytes in 1 blocks\r\n==90548== indirectly lost: 248 bytes in 1 blocks\r\n==90548== possibly lost: 0 bytes in 0 blocks\r\n==90548== still reachable: 0 bytes in 0 blocks\r\n==90548== suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.", 555 "reactions": { 556 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions", 557 "total_count": 0, 558 "+1": 0, 559 "-1": 0, 560 "laugh": 0, 561 "hooray": 0, 562 "confused": 0, 563 "heart": 0, 564 "rocket": 0, 565 "eyes": 0 566 }, 567 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline", 568 "performed_via_github_app": null, 569 "state_reason": null 570 }, 571 "comment": { 572 "user": "jb55", 573 "created_at": "2024-01-01T23:58:06Z", 574 "updated_at": "2024-01-01T23:58:06Z", 575 "body": "On Mon, Jan 01, 2024 at 03:46:06PM -0800, Bruno Bernard wrote:\n>While reading the code, I saw that. But Valgrind spits the memory leaks\n>as it sees it happening during the execution. Even if memory is freed\n>at the end using `ndb_destroy`. _Maybe_ a proper fix would be to free\n>the memory right after it is no longer needed. What do you think\n>instead of waiting at the end.\n\nThat wouldn't make any sense. Everything is needed in ndb until the\ndatabase is closed.\n" 576 } 577 }, 578 { 579 "issue": { 580 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24", 581 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 582 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}", 583 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments", 584 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events", 585 "html_url": "https://github.com/damus-io/nostrdb/issues/24", 586 "id": 2061809289, 587 "node_id": "I_kwDOJ9k5Is565LaJ", 588 "number": 24, 589 "title": "Valgrind reports a memory leak.", 590 "user": { 591 "login": "eznix86", 592 "id": 26553194, 593 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 594 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 595 "gravatar_id": "", 596 "url": "https://api.github.com/users/eznix86", 597 "html_url": "https://github.com/eznix86", 598 "followers_url": "https://api.github.com/users/eznix86/followers", 599 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 600 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 601 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 602 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 603 "organizations_url": "https://api.github.com/users/eznix86/orgs", 604 "repos_url": "https://api.github.com/users/eznix86/repos", 605 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 606 "received_events_url": "https://api.github.com/users/eznix86/received_events", 607 "type": "User", 608 "site_admin": false 609 }, 610 "labels": [], 611 "state": "open", 612 "locked": false, 613 "assignee": null, 614 "assignees": [], 615 "milestone": null, 616 "comments": 6, 617 "created_at": "2024-01-01T22:39:33Z", 618 "updated_at": "2024-01-03T05:39:43Z", 619 "closed_at": null, 620 "author_association": "NONE", 621 "active_lock_reason": null, 622 "body": "here is the full report:\r\n```\r\nvalgrind --leak-check=full ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548== in use at exit: 528 bytes in 2 blocks\r\n==90548== total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548== by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548== by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548== definitely lost: 280 bytes in 1 blocks\r\n==90548== indirectly lost: 248 bytes in 1 blocks\r\n==90548== possibly lost: 0 bytes in 0 blocks\r\n==90548== still reachable: 0 bytes in 0 blocks\r\n==90548== suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.", 623 "reactions": { 624 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions", 625 "total_count": 0, 626 "+1": 0, 627 "-1": 0, 628 "laugh": 0, 629 "hooray": 0, 630 "confused": 0, 631 "heart": 0, 632 "rocket": 0, 633 "eyes": 0 634 }, 635 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline", 636 "performed_via_github_app": null, 637 "state_reason": null 638 }, 639 "comment": { 640 "user": "eznix86", 641 "created_at": "2024-01-02T11:34:29Z", 642 "updated_at": "2024-01-02T11:34:29Z", 643 "body": "I agree, but I think it's something related with the calloc. Rather than the ndb itself. I can close the issue. But it would be nice to have some kind of memory leak checker in the CI. What do you think ?" 644 } 645 }, 646 { 647 "issue": { 648 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24", 649 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 650 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}", 651 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments", 652 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events", 653 "html_url": "https://github.com/damus-io/nostrdb/issues/24", 654 "id": 2061809289, 655 "node_id": "I_kwDOJ9k5Is565LaJ", 656 "number": 24, 657 "title": "Valgrind reports a memory leak.", 658 "user": { 659 "login": "eznix86", 660 "id": 26553194, 661 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 662 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 663 "gravatar_id": "", 664 "url": "https://api.github.com/users/eznix86", 665 "html_url": "https://github.com/eznix86", 666 "followers_url": "https://api.github.com/users/eznix86/followers", 667 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 668 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 669 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 670 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 671 "organizations_url": "https://api.github.com/users/eznix86/orgs", 672 "repos_url": "https://api.github.com/users/eznix86/repos", 673 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 674 "received_events_url": "https://api.github.com/users/eznix86/received_events", 675 "type": "User", 676 "site_admin": false 677 }, 678 "labels": [], 679 "state": "open", 680 "locked": false, 681 "assignee": null, 682 "assignees": [], 683 "milestone": null, 684 "comments": 6, 685 "created_at": "2024-01-01T22:39:33Z", 686 "updated_at": "2024-01-03T05:39:43Z", 687 "closed_at": null, 688 "author_association": "NONE", 689 "active_lock_reason": null, 690 "body": "here is the full report:\r\n```\r\nvalgrind --leak-check=full ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548== in use at exit: 528 bytes in 2 blocks\r\n==90548== total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548== by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548== by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548== definitely lost: 280 bytes in 1 blocks\r\n==90548== indirectly lost: 248 bytes in 1 blocks\r\n==90548== possibly lost: 0 bytes in 0 blocks\r\n==90548== still reachable: 0 bytes in 0 blocks\r\n==90548== suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.", 691 "reactions": { 692 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions", 693 "total_count": 0, 694 "+1": 0, 695 "-1": 0, 696 "laugh": 0, 697 "hooray": 0, 698 "confused": 0, 699 "heart": 0, 700 "rocket": 0, 701 "eyes": 0 702 }, 703 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline", 704 "performed_via_github_app": null, 705 "state_reason": null 706 }, 707 "comment": { 708 "user": "jb55", 709 "created_at": "2024-01-02T15:16:12Z", 710 "updated_at": "2024-01-02T15:16:12Z", 711 "body": "On Tue, Jan 02, 2024 at 03:34:40AM -0800, Bruno Bernard wrote:\n>I agree, but I think it's something related with the calloc. Rather\n>than the ndb itself. I can close the issue. But it would be nice to\n>have some kind of memory leak checker in the CI. What do you think ?\n\nyeah for sure, ideally without these false positives.\n" 712 } 713 }, 714 { 715 "issue": { 716 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24", 717 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 718 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}", 719 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments", 720 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events", 721 "html_url": "https://github.com/damus-io/nostrdb/issues/24", 722 "id": 2061809289, 723 "node_id": "I_kwDOJ9k5Is565LaJ", 724 "number": 24, 725 "title": "Valgrind reports a memory leak.", 726 "user": { 727 "login": "eznix86", 728 "id": 26553194, 729 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 730 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 731 "gravatar_id": "", 732 "url": "https://api.github.com/users/eznix86", 733 "html_url": "https://github.com/eznix86", 734 "followers_url": "https://api.github.com/users/eznix86/followers", 735 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 736 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 737 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 738 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 739 "organizations_url": "https://api.github.com/users/eznix86/orgs", 740 "repos_url": "https://api.github.com/users/eznix86/repos", 741 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 742 "received_events_url": "https://api.github.com/users/eznix86/received_events", 743 "type": "User", 744 "site_admin": false 745 }, 746 "labels": [], 747 "state": "open", 748 "locked": false, 749 "assignee": null, 750 "assignees": [], 751 "milestone": null, 752 "comments": 6, 753 "created_at": "2024-01-01T22:39:33Z", 754 "updated_at": "2024-01-03T05:39:43Z", 755 "closed_at": null, 756 "author_association": "NONE", 757 "active_lock_reason": null, 758 "body": "here is the full report:\r\n```\r\nvalgrind --leak-check=full ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548== in use at exit: 528 bytes in 2 blocks\r\n==90548== total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548== by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548== by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548== definitely lost: 280 bytes in 1 blocks\r\n==90548== indirectly lost: 248 bytes in 1 blocks\r\n==90548== possibly lost: 0 bytes in 0 blocks\r\n==90548== still reachable: 0 bytes in 0 blocks\r\n==90548== suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.", 759 "reactions": { 760 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions", 761 "total_count": 0, 762 "+1": 0, 763 "-1": 0, 764 "laugh": 0, 765 "hooray": 0, 766 "confused": 0, 767 "heart": 0, 768 "rocket": 0, 769 "eyes": 0 770 }, 771 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline", 772 "performed_via_github_app": null, 773 "state_reason": null 774 }, 775 "comment": { 776 "user": "eznix86", 777 "created_at": "2024-01-03T05:39:42Z", 778 "updated_at": "2024-01-03T05:39:42Z", 779 "body": "Valgrind has some suppression features. I will push it for the CI, when I have some time" 780 } 781 }, 782 { 783 "issue": { 784 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/23", 785 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 786 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/labels{/name}", 787 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/comments", 788 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/events", 789 "html_url": "https://github.com/damus-io/nostrdb/pull/23", 790 "id": 2061779863, 791 "node_id": "PR_kwDOJ9k5Is5jBQNc", 792 "number": 23, 793 "title": "Add required dependencies to README", 794 "user": { 795 "login": "eznix86", 796 "id": 26553194, 797 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 798 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 799 "gravatar_id": "", 800 "url": "https://api.github.com/users/eznix86", 801 "html_url": "https://github.com/eznix86", 802 "followers_url": "https://api.github.com/users/eznix86/followers", 803 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 804 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 805 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 806 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 807 "organizations_url": "https://api.github.com/users/eznix86/orgs", 808 "repos_url": "https://api.github.com/users/eznix86/repos", 809 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 810 "received_events_url": "https://api.github.com/users/eznix86/received_events", 811 "type": "User", 812 "site_admin": false 813 }, 814 "labels": [], 815 "state": "open", 816 "locked": false, 817 "assignee": null, 818 "assignees": [], 819 "milestone": null, 820 "comments": 1, 821 "created_at": "2024-01-01T21:23:23Z", 822 "updated_at": "2024-01-03T11:20:58Z", 823 "closed_at": null, 824 "author_association": "FIRST_TIME_CONTRIBUTOR", 825 "active_lock_reason": null, 826 "draft": false, 827 "pull_request": { 828 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/23", 829 "html_url": "https://github.com/damus-io/nostrdb/pull/23", 830 "diff_url": "https://github.com/damus-io/nostrdb/pull/23.diff", 831 "patch_url": "https://github.com/damus-io/nostrdb/pull/23.patch", 832 "merged_at": null 833 }, 834 "body": "fixes #22 \r\n\r\n~3 _required_ dependencies are missing to be able to install the project properly.~\r\n\r\nAs for Mac OS (In my case Sonoma), I have to write `byteswap.h` to `/usr/local/include/`\r\n\r\n```c\r\n#if defined(__APPLE__)\r\n// Mac OS X / Darwin features\r\n#include <libkern/OSByteOrder.h>\r\n#define bswap_16(x) OSSwapInt16(x)\r\n#define bswap_32(x) OSSwapInt32(x)\r\n#define bswap_64(x) OSSwapInt64(x)\r\n#endif\r\n```\r\n\r\nedit: 2 _required_ dependencies are needed to be able to install the project properly.", 835 "reactions": { 836 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/reactions", 837 "total_count": 0, 838 "+1": 0, 839 "-1": 0, 840 "laugh": 0, 841 "hooray": 0, 842 "confused": 0, 843 "heart": 0, 844 "rocket": 0, 845 "eyes": 0 846 }, 847 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/timeline", 848 "performed_via_github_app": null, 849 "state_reason": null 850 } 851 }, 852 { 853 "issue": { 854 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/23", 855 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 856 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/labels{/name}", 857 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/comments", 858 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/events", 859 "html_url": "https://github.com/damus-io/nostrdb/pull/23", 860 "id": 2061779863, 861 "node_id": "PR_kwDOJ9k5Is5jBQNc", 862 "number": 23, 863 "title": "Add required dependencies to README", 864 "user": { 865 "login": "eznix86", 866 "id": 26553194, 867 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 868 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 869 "gravatar_id": "", 870 "url": "https://api.github.com/users/eznix86", 871 "html_url": "https://github.com/eznix86", 872 "followers_url": "https://api.github.com/users/eznix86/followers", 873 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 874 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 875 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 876 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 877 "organizations_url": "https://api.github.com/users/eznix86/orgs", 878 "repos_url": "https://api.github.com/users/eznix86/repos", 879 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 880 "received_events_url": "https://api.github.com/users/eznix86/received_events", 881 "type": "User", 882 "site_admin": false 883 }, 884 "labels": [], 885 "state": "open", 886 "locked": false, 887 "assignee": null, 888 "assignees": [], 889 "milestone": null, 890 "comments": 1, 891 "created_at": "2024-01-01T21:23:23Z", 892 "updated_at": "2024-01-03T11:20:58Z", 893 "closed_at": null, 894 "author_association": "FIRST_TIME_CONTRIBUTOR", 895 "active_lock_reason": null, 896 "draft": false, 897 "pull_request": { 898 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/23", 899 "html_url": "https://github.com/damus-io/nostrdb/pull/23", 900 "diff_url": "https://github.com/damus-io/nostrdb/pull/23.diff", 901 "patch_url": "https://github.com/damus-io/nostrdb/pull/23.patch", 902 "merged_at": null 903 }, 904 "body": "fixes #22 \r\n\r\n~3 _required_ dependencies are missing to be able to install the project properly.~\r\n\r\nAs for Mac OS (In my case Sonoma), I have to write `byteswap.h` to `/usr/local/include/`\r\n\r\n```c\r\n#if defined(__APPLE__)\r\n// Mac OS X / Darwin features\r\n#include <libkern/OSByteOrder.h>\r\n#define bswap_16(x) OSSwapInt16(x)\r\n#define bswap_32(x) OSSwapInt32(x)\r\n#define bswap_64(x) OSSwapInt64(x)\r\n#endif\r\n```\r\n\r\nedit: 2 _required_ dependencies are needed to be able to install the project properly.", 905 "reactions": { 906 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/reactions", 907 "total_count": 0, 908 "+1": 0, 909 "-1": 0, 910 "laugh": 0, 911 "hooray": 0, 912 "confused": 0, 913 "heart": 0, 914 "rocket": 0, 915 "eyes": 0 916 }, 917 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/timeline", 918 "performed_via_github_app": null, 919 "state_reason": null 920 }, 921 "comment": { 922 "user": "eznix86", 923 "created_at": "2024-01-02T11:36:20Z", 924 "updated_at": "2024-01-02T11:36:20Z", 925 "body": "@jb55 curl removed" 926 } 927 }, 928 { 929 "issue": { 930 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22", 931 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 932 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/labels{/name}", 933 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/comments", 934 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/events", 935 "html_url": "https://github.com/damus-io/nostrdb/pull/22", 936 "id": 2061761832, 937 "node_id": "PR_kwDOJ9k5Is5jBMZz", 938 "number": 22, 939 "title": "Specify build environment in readme", 940 "user": { 941 "login": "eznix86", 942 "id": 26553194, 943 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 944 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 945 "gravatar_id": "", 946 "url": "https://api.github.com/users/eznix86", 947 "html_url": "https://github.com/eznix86", 948 "followers_url": "https://api.github.com/users/eznix86/followers", 949 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 950 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 951 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 952 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 953 "organizations_url": "https://api.github.com/users/eznix86/orgs", 954 "repos_url": "https://api.github.com/users/eznix86/repos", 955 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 956 "received_events_url": "https://api.github.com/users/eznix86/received_events", 957 "type": "User", 958 "site_admin": false 959 }, 960 "labels": [], 961 "state": "closed", 962 "locked": false, 963 "assignee": null, 964 "assignees": [], 965 "milestone": null, 966 "comments": 3, 967 "created_at": "2024-01-01T20:37:11Z", 968 "updated_at": "2024-01-06T19:53:32Z", 969 "closed_at": "2024-01-01T21:23:44Z", 970 "author_association": "FIRST_TIME_CONTRIBUTOR", 971 "active_lock_reason": null, 972 "draft": false, 973 "pull_request": { 974 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/22", 975 "html_url": "https://github.com/damus-io/nostrdb/pull/22", 976 "diff_url": "https://github.com/damus-io/nostrdb/pull/22.diff", 977 "patch_url": "https://github.com/damus-io/nostrdb/pull/22.patch", 978 "merged_at": null 979 }, 980 "body": "Just tried on OSX, it fails, because of some dependencies are missing, so it's good to specify the environment", 981 "reactions": { 982 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/reactions", 983 "total_count": 0, 984 "+1": 0, 985 "-1": 0, 986 "laugh": 0, 987 "hooray": 0, 988 "confused": 0, 989 "heart": 0, 990 "rocket": 0, 991 "eyes": 0 992 }, 993 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/timeline", 994 "performed_via_github_app": null, 995 "state_reason": null 996 } 997 }, 998 { 999 "issue": { 1000 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22", 1001 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1002 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/labels{/name}", 1003 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/comments", 1004 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/events", 1005 "html_url": "https://github.com/damus-io/nostrdb/pull/22", 1006 "id": 2061761832, 1007 "node_id": "PR_kwDOJ9k5Is5jBMZz", 1008 "number": 22, 1009 "title": "Specify build environment in readme", 1010 "user": { 1011 "login": "eznix86", 1012 "id": 26553194, 1013 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 1014 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 1015 "gravatar_id": "", 1016 "url": "https://api.github.com/users/eznix86", 1017 "html_url": "https://github.com/eznix86", 1018 "followers_url": "https://api.github.com/users/eznix86/followers", 1019 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 1020 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 1021 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 1022 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 1023 "organizations_url": "https://api.github.com/users/eznix86/orgs", 1024 "repos_url": "https://api.github.com/users/eznix86/repos", 1025 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 1026 "received_events_url": "https://api.github.com/users/eznix86/received_events", 1027 "type": "User", 1028 "site_admin": false 1029 }, 1030 "labels": [], 1031 "state": "closed", 1032 "locked": false, 1033 "assignee": null, 1034 "assignees": [], 1035 "milestone": null, 1036 "comments": 3, 1037 "created_at": "2024-01-01T20:37:11Z", 1038 "updated_at": "2024-01-06T19:53:32Z", 1039 "closed_at": "2024-01-01T21:23:44Z", 1040 "author_association": "FIRST_TIME_CONTRIBUTOR", 1041 "active_lock_reason": null, 1042 "draft": false, 1043 "pull_request": { 1044 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/22", 1045 "html_url": "https://github.com/damus-io/nostrdb/pull/22", 1046 "diff_url": "https://github.com/damus-io/nostrdb/pull/22.diff", 1047 "patch_url": "https://github.com/damus-io/nostrdb/pull/22.patch", 1048 "merged_at": null 1049 }, 1050 "body": "Just tried on OSX, it fails, because of some dependencies are missing, so it's good to specify the environment", 1051 "reactions": { 1052 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/reactions", 1053 "total_count": 0, 1054 "+1": 0, 1055 "-1": 0, 1056 "laugh": 0, 1057 "hooray": 0, 1058 "confused": 0, 1059 "heart": 0, 1060 "rocket": 0, 1061 "eyes": 0 1062 }, 1063 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/timeline", 1064 "performed_via_github_app": null, 1065 "state_reason": null 1066 }, 1067 "comment": { 1068 "user": "jb55", 1069 "created_at": "2024-01-01T20:55:29Z", 1070 "updated_at": "2024-01-01T20:55:29Z", 1071 "body": "It builds fine on macos for me?\n\n" 1072 } 1073 }, 1074 { 1075 "issue": { 1076 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22", 1077 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1078 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/labels{/name}", 1079 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/comments", 1080 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/events", 1081 "html_url": "https://github.com/damus-io/nostrdb/pull/22", 1082 "id": 2061761832, 1083 "node_id": "PR_kwDOJ9k5Is5jBMZz", 1084 "number": 22, 1085 "title": "Specify build environment in readme", 1086 "user": { 1087 "login": "eznix86", 1088 "id": 26553194, 1089 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 1090 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 1091 "gravatar_id": "", 1092 "url": "https://api.github.com/users/eznix86", 1093 "html_url": "https://github.com/eznix86", 1094 "followers_url": "https://api.github.com/users/eznix86/followers", 1095 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 1096 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 1097 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 1098 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 1099 "organizations_url": "https://api.github.com/users/eznix86/orgs", 1100 "repos_url": "https://api.github.com/users/eznix86/repos", 1101 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 1102 "received_events_url": "https://api.github.com/users/eznix86/received_events", 1103 "type": "User", 1104 "site_admin": false 1105 }, 1106 "labels": [], 1107 "state": "closed", 1108 "locked": false, 1109 "assignee": null, 1110 "assignees": [], 1111 "milestone": null, 1112 "comments": 3, 1113 "created_at": "2024-01-01T20:37:11Z", 1114 "updated_at": "2024-01-06T19:53:32Z", 1115 "closed_at": "2024-01-01T21:23:44Z", 1116 "author_association": "FIRST_TIME_CONTRIBUTOR", 1117 "active_lock_reason": null, 1118 "draft": false, 1119 "pull_request": { 1120 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/22", 1121 "html_url": "https://github.com/damus-io/nostrdb/pull/22", 1122 "diff_url": "https://github.com/damus-io/nostrdb/pull/22.diff", 1123 "patch_url": "https://github.com/damus-io/nostrdb/pull/22.patch", 1124 "merged_at": null 1125 }, 1126 "body": "Just tried on OSX, it fails, because of some dependencies are missing, so it's good to specify the environment", 1127 "reactions": { 1128 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/reactions", 1129 "total_count": 0, 1130 "+1": 0, 1131 "-1": 0, 1132 "laugh": 0, 1133 "hooray": 0, 1134 "confused": 0, 1135 "heart": 0, 1136 "rocket": 0, 1137 "eyes": 0 1138 }, 1139 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/timeline", 1140 "performed_via_github_app": null, 1141 "state_reason": null 1142 }, 1143 "comment": { 1144 "user": "eznix86", 1145 "created_at": "2024-01-01T20:59:33Z", 1146 "updated_at": "2024-01-01T20:59:33Z", 1147 "body": "So, some dependencies are missing. \r\n\r\nFirst issue I had is: byteswap.h missing. I had to copy paste it from a website." 1148 } 1149 }, 1150 { 1151 "issue": { 1152 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22", 1153 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1154 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/labels{/name}", 1155 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/comments", 1156 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/events", 1157 "html_url": "https://github.com/damus-io/nostrdb/pull/22", 1158 "id": 2061761832, 1159 "node_id": "PR_kwDOJ9k5Is5jBMZz", 1160 "number": 22, 1161 "title": "Specify build environment in readme", 1162 "user": { 1163 "login": "eznix86", 1164 "id": 26553194, 1165 "node_id": "MDQ6VXNlcjI2NTUzMTk0", 1166 "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4", 1167 "gravatar_id": "", 1168 "url": "https://api.github.com/users/eznix86", 1169 "html_url": "https://github.com/eznix86", 1170 "followers_url": "https://api.github.com/users/eznix86/followers", 1171 "following_url": "https://api.github.com/users/eznix86/following{/other_user}", 1172 "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}", 1173 "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}", 1174 "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions", 1175 "organizations_url": "https://api.github.com/users/eznix86/orgs", 1176 "repos_url": "https://api.github.com/users/eznix86/repos", 1177 "events_url": "https://api.github.com/users/eznix86/events{/privacy}", 1178 "received_events_url": "https://api.github.com/users/eznix86/received_events", 1179 "type": "User", 1180 "site_admin": false 1181 }, 1182 "labels": [], 1183 "state": "closed", 1184 "locked": false, 1185 "assignee": null, 1186 "assignees": [], 1187 "milestone": null, 1188 "comments": 3, 1189 "created_at": "2024-01-01T20:37:11Z", 1190 "updated_at": "2024-01-06T19:53:32Z", 1191 "closed_at": "2024-01-01T21:23:44Z", 1192 "author_association": "FIRST_TIME_CONTRIBUTOR", 1193 "active_lock_reason": null, 1194 "draft": false, 1195 "pull_request": { 1196 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/22", 1197 "html_url": "https://github.com/damus-io/nostrdb/pull/22", 1198 "diff_url": "https://github.com/damus-io/nostrdb/pull/22.diff", 1199 "patch_url": "https://github.com/damus-io/nostrdb/pull/22.patch", 1200 "merged_at": null 1201 }, 1202 "body": "Just tried on OSX, it fails, because of some dependencies are missing, so it's good to specify the environment", 1203 "reactions": { 1204 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/reactions", 1205 "total_count": 0, 1206 "+1": 0, 1207 "-1": 0, 1208 "laugh": 0, 1209 "hooray": 0, 1210 "confused": 0, 1211 "heart": 0, 1212 "rocket": 0, 1213 "eyes": 0 1214 }, 1215 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/timeline", 1216 "performed_via_github_app": null, 1217 "state_reason": null 1218 }, 1219 "comment": { 1220 "user": "jb55", 1221 "created_at": "2024-01-06T19:53:31Z", 1222 "updated_at": "2024-01-06T19:53:31Z", 1223 "body": "On Mon, Jan 01, 2024 at 12:59:43PM -0800, Bruno Bernard wrote:\n>So, some dependencies are missing.\n>\n>First issue I had is: byteswap.h missing. I had to copy paste it from a website.\n\nThis is fixed in e3cc896e25f68778401e5a87cb251290da2b062d\n" 1224 } 1225 }, 1226 { 1227 "issue": { 1228 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21", 1229 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1230 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}", 1231 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments", 1232 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events", 1233 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1234 "id": 2022550514, 1235 "node_id": "PR_kwDOJ9k5Is5g_DE-", 1236 "number": 21, 1237 "title": "add \"import -\"", 1238 "user": { 1239 "login": "mattn", 1240 "id": 10111, 1241 "node_id": "MDQ6VXNlcjEwMTEx", 1242 "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4", 1243 "gravatar_id": "", 1244 "url": "https://api.github.com/users/mattn", 1245 "html_url": "https://github.com/mattn", 1246 "followers_url": "https://api.github.com/users/mattn/followers", 1247 "following_url": "https://api.github.com/users/mattn/following{/other_user}", 1248 "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}", 1249 "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}", 1250 "subscriptions_url": "https://api.github.com/users/mattn/subscriptions", 1251 "organizations_url": "https://api.github.com/users/mattn/orgs", 1252 "repos_url": "https://api.github.com/users/mattn/repos", 1253 "events_url": "https://api.github.com/users/mattn/events{/privacy}", 1254 "received_events_url": "https://api.github.com/users/mattn/received_events", 1255 "type": "User", 1256 "site_admin": false 1257 }, 1258 "labels": [], 1259 "state": "closed", 1260 "locked": false, 1261 "assignee": null, 1262 "assignees": [], 1263 "milestone": null, 1264 "comments": 5, 1265 "created_at": "2023-12-03T14:39:05Z", 1266 "updated_at": "2023-12-13T19:58:02Z", 1267 "closed_at": "2023-12-13T19:58:02Z", 1268 "author_association": "CONTRIBUTOR", 1269 "active_lock_reason": null, 1270 "draft": false, 1271 "pull_request": { 1272 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21", 1273 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1274 "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff", 1275 "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch", 1276 "merged_at": null 1277 }, 1278 "body": "This is very experimental feature but ndb search should be possible to used while ndb import.", 1279 "reactions": { 1280 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions", 1281 "total_count": 0, 1282 "+1": 0, 1283 "-1": 0, 1284 "laugh": 0, 1285 "hooray": 0, 1286 "confused": 0, 1287 "heart": 0, 1288 "rocket": 0, 1289 "eyes": 0 1290 }, 1291 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline", 1292 "performed_via_github_app": null, 1293 "state_reason": null 1294 } 1295 }, 1296 { 1297 "issue": { 1298 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21", 1299 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1300 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}", 1301 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments", 1302 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events", 1303 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1304 "id": 2022550514, 1305 "node_id": "PR_kwDOJ9k5Is5g_DE-", 1306 "number": 21, 1307 "title": "add \"import -\"", 1308 "user": { 1309 "login": "mattn", 1310 "id": 10111, 1311 "node_id": "MDQ6VXNlcjEwMTEx", 1312 "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4", 1313 "gravatar_id": "", 1314 "url": "https://api.github.com/users/mattn", 1315 "html_url": "https://github.com/mattn", 1316 "followers_url": "https://api.github.com/users/mattn/followers", 1317 "following_url": "https://api.github.com/users/mattn/following{/other_user}", 1318 "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}", 1319 "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}", 1320 "subscriptions_url": "https://api.github.com/users/mattn/subscriptions", 1321 "organizations_url": "https://api.github.com/users/mattn/orgs", 1322 "repos_url": "https://api.github.com/users/mattn/repos", 1323 "events_url": "https://api.github.com/users/mattn/events{/privacy}", 1324 "received_events_url": "https://api.github.com/users/mattn/received_events", 1325 "type": "User", 1326 "site_admin": false 1327 }, 1328 "labels": [], 1329 "state": "closed", 1330 "locked": false, 1331 "assignee": null, 1332 "assignees": [], 1333 "milestone": null, 1334 "comments": 5, 1335 "created_at": "2023-12-03T14:39:05Z", 1336 "updated_at": "2023-12-13T19:58:02Z", 1337 "closed_at": "2023-12-13T19:58:02Z", 1338 "author_association": "CONTRIBUTOR", 1339 "active_lock_reason": null, 1340 "draft": false, 1341 "pull_request": { 1342 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21", 1343 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1344 "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff", 1345 "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch", 1346 "merged_at": null 1347 }, 1348 "body": "This is very experimental feature but ndb search should be possible to used while ndb import.", 1349 "reactions": { 1350 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions", 1351 "total_count": 0, 1352 "+1": 0, 1353 "-1": 0, 1354 "laugh": 0, 1355 "hooray": 0, 1356 "confused": 0, 1357 "heart": 0, 1358 "rocket": 0, 1359 "eyes": 0 1360 }, 1361 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline", 1362 "performed_via_github_app": null, 1363 "state_reason": null 1364 }, 1365 "comment": { 1366 "user": "jb55", 1367 "created_at": "2023-12-04T18:32:44Z", 1368 "updated_at": "2023-12-04T18:32:44Z", 1369 "body": "On Sun, Dec 03, 2023 at 11:33:57PM +0900, Yasuhiro Matsumoto wrote:\n>--- a/nostrdb.c\n>+++ b/nostrdb.c\n>@@ -3410,6 +3410,72 @@ int _ndb_process_events(struct ndb *ndb, const char *ldjson, size_t json_len, in\n> \treturn 1;\n> }\n>\n>+static char *read_line(FILE *fp)\n>+{\n>+\tchar *line = NULL;\n>+\tsize_t maxlen = 0;\n>+\n>+\tfor(;;)\n>+\t{\n>+\t\tchar *sep, *block;\n>+\n>+\t\tmaxlen += BUFSIZ;\n>+\t\tline = realloc(line, maxlen + 1);\n>+\t\tif (line == NULL)\n>+\t\t\tbreak;\n>+\t\tblock = line + maxlen - BUFSIZ;\n>+\t\tif (fgets(block, BUFSIZ + 1, fp) == NULL)\n>+\t\t{\n>+\t\t\tif (block == line)\n>+\t\t\t{\n>+\t\t\t\tfree(line);\n>+\t\t\t\tline = NULL;\n>+\t\t\t}\n>+\t\t\tbreak;\n>+\t\t}\n>+\t\tsep = strchr(block, '\\n');\n>+\t\tif (sep != NULL)\n>+\t\t{\n>+\t\t\t*sep = 0x0;\n>+\t\t\tif (sep != block)\n>+\t\t\t{\n>+\t\t\t\tif ('\\r' == *(--sep))\n>+\t\t\t\t\t*sep = 0x0;\n>+\t\t\t}\n>+\t\t\tbreak;\n>+\t\t}\n>+\t}\n>+\treturn line;\n>+}\n>+\n>+int ndb_process_events_stream(struct ndb *ndb, FILE* fp)\n>+{\n>+#if DEBUG\n>+\tint processed = 0;\n>+#endif\n>+\n>+\twhile (!feof(fp)) {\n>+\t\tchar *line = read_line(fp);\n>+\t\tif (line == NULL)\n>+\t\t\tbreak;\n>+\t\tif (!ndb_process_event(ndb, line, strlen(line))) {\n>+\t\t\tndb_debug(\"ndb_process_event failed\\n\");\n>+\t\t\tfree(line);\n>+\t\t\treturn 0;\n>+\t\t}\n>+\t\tfree(line);\n>+#if DEBUG\n>+\t\tprocessed++;\n>+#endif\n>+\t}\n>+\n>+#if DEBUG\n>+\tndb_debug(\"ndb_process_events: processed %d events\\n\", processed);\n>+#endif\n>+\n>+\treturn 1;\n>+}\n\nWhy not just use \"getline\"?\n\nint ndb_process_events_stream(struct ndb *ndb, FILE* fp) {\n\tchar *line = NULL;\n\tsize_t len = 0;\n\tssize_t nread;\n\n\twhile ((nread = getline(&line, &len, stdin)) != -1) {\n\t\tif (line == NULL)\n\t\t\tbreak;\n\t\tndb_process_event(ndb, line, strlen(line));\n\t}\n\n\tif (line)\n\t\tfree(line);\n}\n" 1370 } 1371 }, 1372 { 1373 "issue": { 1374 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21", 1375 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1376 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}", 1377 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments", 1378 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events", 1379 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1380 "id": 2022550514, 1381 "node_id": "PR_kwDOJ9k5Is5g_DE-", 1382 "number": 21, 1383 "title": "add \"import -\"", 1384 "user": { 1385 "login": "mattn", 1386 "id": 10111, 1387 "node_id": "MDQ6VXNlcjEwMTEx", 1388 "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4", 1389 "gravatar_id": "", 1390 "url": "https://api.github.com/users/mattn", 1391 "html_url": "https://github.com/mattn", 1392 "followers_url": "https://api.github.com/users/mattn/followers", 1393 "following_url": "https://api.github.com/users/mattn/following{/other_user}", 1394 "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}", 1395 "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}", 1396 "subscriptions_url": "https://api.github.com/users/mattn/subscriptions", 1397 "organizations_url": "https://api.github.com/users/mattn/orgs", 1398 "repos_url": "https://api.github.com/users/mattn/repos", 1399 "events_url": "https://api.github.com/users/mattn/events{/privacy}", 1400 "received_events_url": "https://api.github.com/users/mattn/received_events", 1401 "type": "User", 1402 "site_admin": false 1403 }, 1404 "labels": [], 1405 "state": "closed", 1406 "locked": false, 1407 "assignee": null, 1408 "assignees": [], 1409 "milestone": null, 1410 "comments": 5, 1411 "created_at": "2023-12-03T14:39:05Z", 1412 "updated_at": "2023-12-13T19:58:02Z", 1413 "closed_at": "2023-12-13T19:58:02Z", 1414 "author_association": "CONTRIBUTOR", 1415 "active_lock_reason": null, 1416 "draft": false, 1417 "pull_request": { 1418 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21", 1419 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1420 "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff", 1421 "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch", 1422 "merged_at": null 1423 }, 1424 "body": "This is very experimental feature but ndb search should be possible to used while ndb import.", 1425 "reactions": { 1426 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions", 1427 "total_count": 0, 1428 "+1": 0, 1429 "-1": 0, 1430 "laugh": 0, 1431 "hooray": 0, 1432 "confused": 0, 1433 "heart": 0, 1434 "rocket": 0, 1435 "eyes": 0 1436 }, 1437 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline", 1438 "performed_via_github_app": null, 1439 "state_reason": null 1440 }, 1441 "comment": { 1442 "user": "jb55", 1443 "created_at": "2023-12-04T18:33:11Z", 1444 "updated_at": "2023-12-04T18:33:11Z", 1445 "body": "On Sun, Dec 03, 2023 at 11:38:41PM +0900, Yasuhiro Matsumoto wrote:\n>---\n> nostrdb.c | 2 +-\n> 1 file changed, 1 insertion(+), 1 deletion(-)\n>\n>diff --git a/nostrdb.c b/nostrdb.c\n>index b8db79d..b14ffac 100644\n>--- a/nostrdb.c\n>+++ b/nostrdb.c\n>@@ -3470,7 +3470,7 @@ int ndb_process_events_stream(struct ndb *ndb, FILE* fp)\n> \t}\n>\n> #if DEBUG\n>-\tndb_debug(\"ndb_process_events: processed %d events\\n\", processed);\n>+\tndb_debug(\"ndb_process_events_stream: processed %d events\\n\", processed);\n> #endif\n>\n> \treturn 1;\n\nyou can just squash this into the first patch\n" 1446 } 1447 }, 1448 { 1449 "issue": { 1450 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21", 1451 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1452 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}", 1453 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments", 1454 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events", 1455 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1456 "id": 2022550514, 1457 "node_id": "PR_kwDOJ9k5Is5g_DE-", 1458 "number": 21, 1459 "title": "add \"import -\"", 1460 "user": { 1461 "login": "mattn", 1462 "id": 10111, 1463 "node_id": "MDQ6VXNlcjEwMTEx", 1464 "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4", 1465 "gravatar_id": "", 1466 "url": "https://api.github.com/users/mattn", 1467 "html_url": "https://github.com/mattn", 1468 "followers_url": "https://api.github.com/users/mattn/followers", 1469 "following_url": "https://api.github.com/users/mattn/following{/other_user}", 1470 "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}", 1471 "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}", 1472 "subscriptions_url": "https://api.github.com/users/mattn/subscriptions", 1473 "organizations_url": "https://api.github.com/users/mattn/orgs", 1474 "repos_url": "https://api.github.com/users/mattn/repos", 1475 "events_url": "https://api.github.com/users/mattn/events{/privacy}", 1476 "received_events_url": "https://api.github.com/users/mattn/received_events", 1477 "type": "User", 1478 "site_admin": false 1479 }, 1480 "labels": [], 1481 "state": "closed", 1482 "locked": false, 1483 "assignee": null, 1484 "assignees": [], 1485 "milestone": null, 1486 "comments": 5, 1487 "created_at": "2023-12-03T14:39:05Z", 1488 "updated_at": "2023-12-13T19:58:02Z", 1489 "closed_at": "2023-12-13T19:58:02Z", 1490 "author_association": "CONTRIBUTOR", 1491 "active_lock_reason": null, 1492 "draft": false, 1493 "pull_request": { 1494 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21", 1495 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1496 "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff", 1497 "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch", 1498 "merged_at": null 1499 }, 1500 "body": "This is very experimental feature but ndb search should be possible to used while ndb import.", 1501 "reactions": { 1502 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions", 1503 "total_count": 0, 1504 "+1": 0, 1505 "-1": 0, 1506 "laugh": 0, 1507 "hooray": 0, 1508 "confused": 0, 1509 "heart": 0, 1510 "rocket": 0, 1511 "eyes": 0 1512 }, 1513 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline", 1514 "performed_via_github_app": null, 1515 "state_reason": null 1516 }, 1517 "comment": { 1518 "user": "mattn", 1519 "created_at": "2023-12-05T02:11:23Z", 1520 "updated_at": "2023-12-05T02:11:23Z", 1521 "body": "sure." 1522 } 1523 }, 1524 { 1525 "issue": { 1526 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21", 1527 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1528 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}", 1529 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments", 1530 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events", 1531 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1532 "id": 2022550514, 1533 "node_id": "PR_kwDOJ9k5Is5g_DE-", 1534 "number": 21, 1535 "title": "add \"import -\"", 1536 "user": { 1537 "login": "mattn", 1538 "id": 10111, 1539 "node_id": "MDQ6VXNlcjEwMTEx", 1540 "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4", 1541 "gravatar_id": "", 1542 "url": "https://api.github.com/users/mattn", 1543 "html_url": "https://github.com/mattn", 1544 "followers_url": "https://api.github.com/users/mattn/followers", 1545 "following_url": "https://api.github.com/users/mattn/following{/other_user}", 1546 "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}", 1547 "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}", 1548 "subscriptions_url": "https://api.github.com/users/mattn/subscriptions", 1549 "organizations_url": "https://api.github.com/users/mattn/orgs", 1550 "repos_url": "https://api.github.com/users/mattn/repos", 1551 "events_url": "https://api.github.com/users/mattn/events{/privacy}", 1552 "received_events_url": "https://api.github.com/users/mattn/received_events", 1553 "type": "User", 1554 "site_admin": false 1555 }, 1556 "labels": [], 1557 "state": "closed", 1558 "locked": false, 1559 "assignee": null, 1560 "assignees": [], 1561 "milestone": null, 1562 "comments": 5, 1563 "created_at": "2023-12-03T14:39:05Z", 1564 "updated_at": "2023-12-13T19:58:02Z", 1565 "closed_at": "2023-12-13T19:58:02Z", 1566 "author_association": "CONTRIBUTOR", 1567 "active_lock_reason": null, 1568 "draft": false, 1569 "pull_request": { 1570 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21", 1571 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1572 "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff", 1573 "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch", 1574 "merged_at": null 1575 }, 1576 "body": "This is very experimental feature but ndb search should be possible to used while ndb import.", 1577 "reactions": { 1578 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions", 1579 "total_count": 0, 1580 "+1": 0, 1581 "-1": 0, 1582 "laugh": 0, 1583 "hooray": 0, 1584 "confused": 0, 1585 "heart": 0, 1586 "rocket": 0, 1587 "eyes": 0 1588 }, 1589 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline", 1590 "performed_via_github_app": null, 1591 "state_reason": null 1592 }, 1593 "comment": { 1594 "user": "mattn", 1595 "created_at": "2023-12-05T02:12:29Z", 1596 "updated_at": "2023-12-05T02:12:29Z", 1597 "body": "BTW, Why ndb accept three element items? `[\"EVENT\", \"s\", {...}]` " 1598 } 1599 }, 1600 { 1601 "issue": { 1602 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21", 1603 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1604 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}", 1605 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments", 1606 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events", 1607 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1608 "id": 2022550514, 1609 "node_id": "PR_kwDOJ9k5Is5g_DE-", 1610 "number": 21, 1611 "title": "add \"import -\"", 1612 "user": { 1613 "login": "mattn", 1614 "id": 10111, 1615 "node_id": "MDQ6VXNlcjEwMTEx", 1616 "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4", 1617 "gravatar_id": "", 1618 "url": "https://api.github.com/users/mattn", 1619 "html_url": "https://github.com/mattn", 1620 "followers_url": "https://api.github.com/users/mattn/followers", 1621 "following_url": "https://api.github.com/users/mattn/following{/other_user}", 1622 "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}", 1623 "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}", 1624 "subscriptions_url": "https://api.github.com/users/mattn/subscriptions", 1625 "organizations_url": "https://api.github.com/users/mattn/orgs", 1626 "repos_url": "https://api.github.com/users/mattn/repos", 1627 "events_url": "https://api.github.com/users/mattn/events{/privacy}", 1628 "received_events_url": "https://api.github.com/users/mattn/received_events", 1629 "type": "User", 1630 "site_admin": false 1631 }, 1632 "labels": [], 1633 "state": "closed", 1634 "locked": false, 1635 "assignee": null, 1636 "assignees": [], 1637 "milestone": null, 1638 "comments": 5, 1639 "created_at": "2023-12-03T14:39:05Z", 1640 "updated_at": "2023-12-13T19:58:02Z", 1641 "closed_at": "2023-12-13T19:58:02Z", 1642 "author_association": "CONTRIBUTOR", 1643 "active_lock_reason": null, 1644 "draft": false, 1645 "pull_request": { 1646 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21", 1647 "html_url": "https://github.com/damus-io/nostrdb/pull/21", 1648 "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff", 1649 "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch", 1650 "merged_at": null 1651 }, 1652 "body": "This is very experimental feature but ndb search should be possible to used while ndb import.", 1653 "reactions": { 1654 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions", 1655 "total_count": 0, 1656 "+1": 0, 1657 "-1": 0, 1658 "laugh": 0, 1659 "hooray": 0, 1660 "confused": 0, 1661 "heart": 0, 1662 "rocket": 0, 1663 "eyes": 0 1664 }, 1665 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline", 1666 "performed_via_github_app": null, 1667 "state_reason": null 1668 }, 1669 "comment": { 1670 "user": "jb55", 1671 "created_at": "2023-12-05T18:56:09Z", 1672 "updated_at": "2023-12-05T18:56:09Z", 1673 "body": "On Mon, Dec 04, 2023 at 06:12:39PM -0800, mattn wrote:\n>BTW, Why ndb accept three element items? `[\"EVENT\", \"s\", {...}]`\n\noriginally nostrdb was designed as a client for consuming events from\nrelays, so this is the format relays returned results to be ingested\ninto nostrdb.\n\nThese days it's a bit of a client/relay hybrid, so we should probably\njust have a bare note import, or at least an ingester that supports\nevents of all kinds:\n\n[\"EVENT\", {}]\n[\"EVENT\", \"subid\", {}]\n{}\n\nIt's something I will improve in the future.\n" 1674 } 1675 }, 1676 { 1677 "issue": { 1678 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/20", 1679 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1680 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/labels{/name}", 1681 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/comments", 1682 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/events", 1683 "html_url": "https://github.com/damus-io/nostrdb/pull/20", 1684 "id": 2022502911, 1685 "node_id": "PR_kwDOJ9k5Is5g-5bf", 1686 "number": 20, 1687 "title": "Update", 1688 "user": { 1689 "login": "Hakkadaikon", 1690 "id": 57866935, 1691 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 1692 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 1693 "gravatar_id": "", 1694 "url": "https://api.github.com/users/Hakkadaikon", 1695 "html_url": "https://github.com/Hakkadaikon", 1696 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 1697 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 1698 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 1699 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 1700 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 1701 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 1702 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 1703 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 1704 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 1705 "type": "User", 1706 "site_admin": false 1707 }, 1708 "labels": [], 1709 "state": "closed", 1710 "locked": false, 1711 "assignee": null, 1712 "assignees": [], 1713 "milestone": null, 1714 "comments": 1, 1715 "created_at": "2023-12-03T12:40:24Z", 1716 "updated_at": "2023-12-03T12:41:32Z", 1717 "closed_at": "2023-12-03T12:40:54Z", 1718 "author_association": "CONTRIBUTOR", 1719 "active_lock_reason": null, 1720 "draft": false, 1721 "pull_request": { 1722 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/20", 1723 "html_url": "https://github.com/damus-io/nostrdb/pull/20", 1724 "diff_url": "https://github.com/damus-io/nostrdb/pull/20.diff", 1725 "patch_url": "https://github.com/damus-io/nostrdb/pull/20.patch", 1726 "merged_at": null 1727 }, 1728 "body": null, 1729 "reactions": { 1730 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/reactions", 1731 "total_count": 0, 1732 "+1": 0, 1733 "-1": 0, 1734 "laugh": 0, 1735 "hooray": 0, 1736 "confused": 0, 1737 "heart": 0, 1738 "rocket": 0, 1739 "eyes": 0 1740 }, 1741 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/timeline", 1742 "performed_via_github_app": null, 1743 "state_reason": null 1744 } 1745 }, 1746 { 1747 "issue": { 1748 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/20", 1749 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1750 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/labels{/name}", 1751 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/comments", 1752 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/events", 1753 "html_url": "https://github.com/damus-io/nostrdb/pull/20", 1754 "id": 2022502911, 1755 "node_id": "PR_kwDOJ9k5Is5g-5bf", 1756 "number": 20, 1757 "title": "Update", 1758 "user": { 1759 "login": "Hakkadaikon", 1760 "id": 57866935, 1761 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 1762 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 1763 "gravatar_id": "", 1764 "url": "https://api.github.com/users/Hakkadaikon", 1765 "html_url": "https://github.com/Hakkadaikon", 1766 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 1767 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 1768 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 1769 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 1770 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 1771 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 1772 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 1773 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 1774 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 1775 "type": "User", 1776 "site_admin": false 1777 }, 1778 "labels": [], 1779 "state": "closed", 1780 "locked": false, 1781 "assignee": null, 1782 "assignees": [], 1783 "milestone": null, 1784 "comments": 1, 1785 "created_at": "2023-12-03T12:40:24Z", 1786 "updated_at": "2023-12-03T12:41:32Z", 1787 "closed_at": "2023-12-03T12:40:54Z", 1788 "author_association": "CONTRIBUTOR", 1789 "active_lock_reason": null, 1790 "draft": false, 1791 "pull_request": { 1792 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/20", 1793 "html_url": "https://github.com/damus-io/nostrdb/pull/20", 1794 "diff_url": "https://github.com/damus-io/nostrdb/pull/20.diff", 1795 "patch_url": "https://github.com/damus-io/nostrdb/pull/20.patch", 1796 "merged_at": null 1797 }, 1798 "body": null, 1799 "reactions": { 1800 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/reactions", 1801 "total_count": 0, 1802 "+1": 0, 1803 "-1": 0, 1804 "laugh": 0, 1805 "hooray": 0, 1806 "confused": 0, 1807 "heart": 0, 1808 "rocket": 0, 1809 "eyes": 0 1810 }, 1811 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/timeline", 1812 "performed_via_github_app": null, 1813 "state_reason": null 1814 }, 1815 "comment": { 1816 "user": "Hakkadaikon", 1817 "created_at": "2023-12-03T12:41:31Z", 1818 "updated_at": "2023-12-03T12:41:31Z", 1819 "body": "Sorry, it's a mistake." 1820 } 1821 }, 1822 { 1823 "issue": { 1824 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/19", 1825 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1826 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/labels{/name}", 1827 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/comments", 1828 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/events", 1829 "html_url": "https://github.com/damus-io/nostrdb/issues/19", 1830 "id": 2021471954, 1831 "node_id": "I_kwDOJ9k5Is54fTbS", 1832 "number": 19, 1833 "title": "Link error : pthread", 1834 "user": { 1835 "login": "Hakkadaikon", 1836 "id": 57866935, 1837 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 1838 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 1839 "gravatar_id": "", 1840 "url": "https://api.github.com/users/Hakkadaikon", 1841 "html_url": "https://github.com/Hakkadaikon", 1842 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 1843 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 1844 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 1845 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 1846 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 1847 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 1848 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 1849 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 1850 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 1851 "type": "User", 1852 "site_admin": false 1853 }, 1854 "labels": [], 1855 "state": "open", 1856 "locked": false, 1857 "assignee": null, 1858 "assignees": [], 1859 "milestone": null, 1860 "comments": 0, 1861 "created_at": "2023-12-01T19:36:39Z", 1862 "updated_at": "2023-12-01T19:36:39Z", 1863 "closed_at": null, 1864 "author_association": "CONTRIBUTOR", 1865 "active_lock_reason": null, 1866 "body": "Hi,\r\nWhen I built nostrdb, the following link error occurred.\r\n\r\n```bash\r\n$ make clean; make\r\nrm -rf test bench bench-ingest bench-ingest-many\r\ncc -Wall -Wno-misleading-indentation -Wno-unused-function -Werror -O2 -g -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include bench.c nostrdb.c sha256.c bech32.c deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/verifier.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a -o bench\r\n/usr/bin/ld: deps/lmdb/liblmdb.a(mdb.o): in function `mdb_txn_renew0':\r\n/home/hakkadaikon/repos/hakkadaikon/nostrdb/deps/lmdb/mdb.c:2719: undefined reference to `pthread_getspecific'\r\n/usr/bin/ld: /home/hakkadaikon/repos/hakkadaikon/nostrdb/deps/lmdb/mdb.c:2762: undefined reference to `pthread_setspecific'\r\n/usr/bin/ld: deps/lmdb/liblmdb.a(mdb.o): in function `mdb_env_copythr':\r\n/home/hakkadaikon/repos/hakkadaikon/nostrdb/deps/lmdb/mdb.c:9126: undefined reference to `pthread_sigmask'\r\n~\r\ncollect2: error: ld returned 1 exit status\r\nmake: *** [Makefile:137: bench] Error 1\r\n```\r\n\r\nThe problem was resolved by changing nostrdb/Makefile as follows.\r\n\r\n```diff\r\n--- a/Makefile\r\n+++ b/Makefile\r\n@@ -2,7 +2,7 @@ CFLAGS = -Wall -Wno-misleading-indentation -Wno-unused-function -Werror -O2 -g -\r\n HEADERS = sha256.h nostrdb.h cursor.h hex.h jsmn.h config.h sha256.h random.h memchr.h $(C_BINDINGS)\r\n FLATCC_SRCS=deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/verifier.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c\r\n SRCS = nostrdb.c sha256.c bech32.c $(FLATCC_SRCS)\r\n-LDS = $(SRCS) $(ARS) \r\n+LDS = $(SRCS) $(ARS) -lpthread\r\n DEPS = $(SRCS) $(HEADERS) $(ARS)\r\n ARS = deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a \r\n LMDB_VER=0.9.31\r\n```\r\n\r\nI'm using Ubuntu 20.04.\r\n```bash\r\ncat /etc/lsb-release\r\nDISTRIB_ID=Ubuntu\r\nDISTRIB_RELEASE=20.04\r\nDISTRIB_CODENAME=focal\r\nDISTRIB_DESCRIPTION=\"Ubuntu 20.04.2 LTS\"\r\n```\r\n\r\n", 1867 "reactions": { 1868 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/reactions", 1869 "total_count": 1, 1870 "+1": 1, 1871 "-1": 0, 1872 "laugh": 0, 1873 "hooray": 0, 1874 "confused": 0, 1875 "heart": 0, 1876 "rocket": 0, 1877 "eyes": 0 1878 }, 1879 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/timeline", 1880 "performed_via_github_app": null, 1881 "state_reason": null 1882 } 1883 }, 1884 { 1885 "issue": { 1886 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18", 1887 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1888 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}", 1889 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments", 1890 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events", 1891 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 1892 "id": 2021354427, 1893 "node_id": "PR_kwDOJ9k5Is5g7Jbr", 1894 "number": 18, 1895 "title": "Delete unuse argument (destsize)", 1896 "user": { 1897 "login": "Hakkadaikon", 1898 "id": 57866935, 1899 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 1900 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 1901 "gravatar_id": "", 1902 "url": "https://api.github.com/users/Hakkadaikon", 1903 "html_url": "https://github.com/Hakkadaikon", 1904 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 1905 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 1906 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 1907 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 1908 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 1909 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 1910 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 1911 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 1912 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 1913 "type": "User", 1914 "site_admin": false 1915 }, 1916 "labels": [], 1917 "state": "closed", 1918 "locked": false, 1919 "assignee": null, 1920 "assignees": [], 1921 "milestone": null, 1922 "comments": 7, 1923 "created_at": "2023-12-01T18:04:55Z", 1924 "updated_at": "2023-12-01T21:58:12Z", 1925 "closed_at": "2023-12-01T21:58:12Z", 1926 "author_association": "CONTRIBUTOR", 1927 "active_lock_reason": null, 1928 "draft": false, 1929 "pull_request": { 1930 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18", 1931 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 1932 "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff", 1933 "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch", 1934 "merged_at": null 1935 }, 1936 "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏", 1937 "reactions": { 1938 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions", 1939 "total_count": 0, 1940 "+1": 0, 1941 "-1": 0, 1942 "laugh": 0, 1943 "hooray": 0, 1944 "confused": 0, 1945 "heart": 0, 1946 "rocket": 0, 1947 "eyes": 0 1948 }, 1949 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline", 1950 "performed_via_github_app": null, 1951 "state_reason": null 1952 } 1953 }, 1954 { 1955 "issue": { 1956 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18", 1957 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 1958 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}", 1959 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments", 1960 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events", 1961 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 1962 "id": 2021354427, 1963 "node_id": "PR_kwDOJ9k5Is5g7Jbr", 1964 "number": 18, 1965 "title": "Delete unuse argument (destsize)", 1966 "user": { 1967 "login": "Hakkadaikon", 1968 "id": 57866935, 1969 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 1970 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 1971 "gravatar_id": "", 1972 "url": "https://api.github.com/users/Hakkadaikon", 1973 "html_url": "https://github.com/Hakkadaikon", 1974 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 1975 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 1976 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 1977 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 1978 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 1979 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 1980 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 1981 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 1982 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 1983 "type": "User", 1984 "site_admin": false 1985 }, 1986 "labels": [], 1987 "state": "closed", 1988 "locked": false, 1989 "assignee": null, 1990 "assignees": [], 1991 "milestone": null, 1992 "comments": 7, 1993 "created_at": "2023-12-01T18:04:55Z", 1994 "updated_at": "2023-12-01T21:58:12Z", 1995 "closed_at": "2023-12-01T21:58:12Z", 1996 "author_association": "CONTRIBUTOR", 1997 "active_lock_reason": null, 1998 "draft": false, 1999 "pull_request": { 2000 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18", 2001 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2002 "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff", 2003 "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch", 2004 "merged_at": null 2005 }, 2006 "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏", 2007 "reactions": { 2008 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions", 2009 "total_count": 0, 2010 "+1": 0, 2011 "-1": 0, 2012 "laugh": 0, 2013 "hooray": 0, 2014 "confused": 0, 2015 "heart": 0, 2016 "rocket": 0, 2017 "eyes": 0 2018 }, 2019 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline", 2020 "performed_via_github_app": null, 2021 "state_reason": null 2022 }, 2023 "comment": { 2024 "user": "jb55", 2025 "created_at": "2023-12-01T18:17:16Z", 2026 "updated_at": "2023-12-01T18:17:16Z", 2027 "body": "we don't ever use this function with unknown destination sizes, is there\na specific issue you're trying to fix here?\n" 2028 } 2029 }, 2030 { 2031 "issue": { 2032 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18", 2033 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2034 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}", 2035 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments", 2036 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events", 2037 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2038 "id": 2021354427, 2039 "node_id": "PR_kwDOJ9k5Is5g7Jbr", 2040 "number": 18, 2041 "title": "Delete unuse argument (destsize)", 2042 "user": { 2043 "login": "Hakkadaikon", 2044 "id": 57866935, 2045 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 2046 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 2047 "gravatar_id": "", 2048 "url": "https://api.github.com/users/Hakkadaikon", 2049 "html_url": "https://github.com/Hakkadaikon", 2050 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 2051 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 2052 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 2053 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 2054 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 2055 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 2056 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 2057 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 2058 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 2059 "type": "User", 2060 "site_admin": false 2061 }, 2062 "labels": [], 2063 "state": "closed", 2064 "locked": false, 2065 "assignee": null, 2066 "assignees": [], 2067 "milestone": null, 2068 "comments": 7, 2069 "created_at": "2023-12-01T18:04:55Z", 2070 "updated_at": "2023-12-01T21:58:12Z", 2071 "closed_at": "2023-12-01T21:58:12Z", 2072 "author_association": "CONTRIBUTOR", 2073 "active_lock_reason": null, 2074 "draft": false, 2075 "pull_request": { 2076 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18", 2077 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2078 "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff", 2079 "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch", 2080 "merged_at": null 2081 }, 2082 "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏", 2083 "reactions": { 2084 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions", 2085 "total_count": 0, 2086 "+1": 0, 2087 "-1": 0, 2088 "laugh": 0, 2089 "hooray": 0, 2090 "confused": 0, 2091 "heart": 0, 2092 "rocket": 0, 2093 "eyes": 0 2094 }, 2095 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline", 2096 "performed_via_github_app": null, 2097 "state_reason": null 2098 }, 2099 "comment": { 2100 "user": "Hakkadaikon", 2101 "created_at": "2023-12-01T18:30:25Z", 2102 "updated_at": "2023-12-01T18:30:36Z", 2103 "body": "> we don't ever use this function with unknown destination sizes\r\n\r\nI thought I meant to detect a buffer overflow on the destination size, since the destination size is passed as an argument and is not used.\r\n\r\nIf destsize is just being passed for future use, this may not be necessary." 2104 } 2105 }, 2106 { 2107 "issue": { 2108 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18", 2109 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2110 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}", 2111 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments", 2112 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events", 2113 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2114 "id": 2021354427, 2115 "node_id": "PR_kwDOJ9k5Is5g7Jbr", 2116 "number": 18, 2117 "title": "Delete unuse argument (destsize)", 2118 "user": { 2119 "login": "Hakkadaikon", 2120 "id": 57866935, 2121 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 2122 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 2123 "gravatar_id": "", 2124 "url": "https://api.github.com/users/Hakkadaikon", 2125 "html_url": "https://github.com/Hakkadaikon", 2126 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 2127 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 2128 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 2129 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 2130 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 2131 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 2132 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 2133 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 2134 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 2135 "type": "User", 2136 "site_admin": false 2137 }, 2138 "labels": [], 2139 "state": "closed", 2140 "locked": false, 2141 "assignee": null, 2142 "assignees": [], 2143 "milestone": null, 2144 "comments": 7, 2145 "created_at": "2023-12-01T18:04:55Z", 2146 "updated_at": "2023-12-01T21:58:12Z", 2147 "closed_at": "2023-12-01T21:58:12Z", 2148 "author_association": "CONTRIBUTOR", 2149 "active_lock_reason": null, 2150 "draft": false, 2151 "pull_request": { 2152 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18", 2153 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2154 "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff", 2155 "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch", 2156 "merged_at": null 2157 }, 2158 "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏", 2159 "reactions": { 2160 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions", 2161 "total_count": 0, 2162 "+1": 0, 2163 "-1": 0, 2164 "laugh": 0, 2165 "hooray": 0, 2166 "confused": 0, 2167 "heart": 0, 2168 "rocket": 0, 2169 "eyes": 0 2170 }, 2171 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline", 2172 "performed_via_github_app": null, 2173 "state_reason": null 2174 }, 2175 "comment": { 2176 "user": "jb55", 2177 "created_at": "2023-12-01T18:31:59Z", 2178 "updated_at": "2023-12-01T18:31:59Z", 2179 "body": "On Fri, Dec 01, 2023 at 10:30:36AM -0800, Hakkadaikon wrote:\n>> we don't ever use this function with unknown destination sizes\n>\n>If destsize is just being passed for future use, this may not be necessary.\n\noh we can remove destsize if we're not using it\n" 2180 } 2181 }, 2182 { 2183 "issue": { 2184 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18", 2185 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2186 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}", 2187 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments", 2188 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events", 2189 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2190 "id": 2021354427, 2191 "node_id": "PR_kwDOJ9k5Is5g7Jbr", 2192 "number": 18, 2193 "title": "Delete unuse argument (destsize)", 2194 "user": { 2195 "login": "Hakkadaikon", 2196 "id": 57866935, 2197 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 2198 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 2199 "gravatar_id": "", 2200 "url": "https://api.github.com/users/Hakkadaikon", 2201 "html_url": "https://github.com/Hakkadaikon", 2202 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 2203 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 2204 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 2205 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 2206 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 2207 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 2208 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 2209 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 2210 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 2211 "type": "User", 2212 "site_admin": false 2213 }, 2214 "labels": [], 2215 "state": "closed", 2216 "locked": false, 2217 "assignee": null, 2218 "assignees": [], 2219 "milestone": null, 2220 "comments": 7, 2221 "created_at": "2023-12-01T18:04:55Z", 2222 "updated_at": "2023-12-01T21:58:12Z", 2223 "closed_at": "2023-12-01T21:58:12Z", 2224 "author_association": "CONTRIBUTOR", 2225 "active_lock_reason": null, 2226 "draft": false, 2227 "pull_request": { 2228 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18", 2229 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2230 "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff", 2231 "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch", 2232 "merged_at": null 2233 }, 2234 "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏", 2235 "reactions": { 2236 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions", 2237 "total_count": 0, 2238 "+1": 0, 2239 "-1": 0, 2240 "laugh": 0, 2241 "hooray": 0, 2242 "confused": 0, 2243 "heart": 0, 2244 "rocket": 0, 2245 "eyes": 0 2246 }, 2247 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline", 2248 "performed_via_github_app": null, 2249 "state_reason": null 2250 }, 2251 "comment": { 2252 "user": "Hakkadaikon", 2253 "created_at": "2023-12-01T18:35:55Z", 2254 "updated_at": "2023-12-01T18:35:55Z", 2255 "body": "OK, I'll create a \"new pull request with destsize removed\"." 2256 } 2257 }, 2258 { 2259 "issue": { 2260 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18", 2261 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2262 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}", 2263 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments", 2264 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events", 2265 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2266 "id": 2021354427, 2267 "node_id": "PR_kwDOJ9k5Is5g7Jbr", 2268 "number": 18, 2269 "title": "Delete unuse argument (destsize)", 2270 "user": { 2271 "login": "Hakkadaikon", 2272 "id": 57866935, 2273 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 2274 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 2275 "gravatar_id": "", 2276 "url": "https://api.github.com/users/Hakkadaikon", 2277 "html_url": "https://github.com/Hakkadaikon", 2278 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 2279 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 2280 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 2281 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 2282 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 2283 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 2284 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 2285 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 2286 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 2287 "type": "User", 2288 "site_admin": false 2289 }, 2290 "labels": [], 2291 "state": "closed", 2292 "locked": false, 2293 "assignee": null, 2294 "assignees": [], 2295 "milestone": null, 2296 "comments": 7, 2297 "created_at": "2023-12-01T18:04:55Z", 2298 "updated_at": "2023-12-01T21:58:12Z", 2299 "closed_at": "2023-12-01T21:58:12Z", 2300 "author_association": "CONTRIBUTOR", 2301 "active_lock_reason": null, 2302 "draft": false, 2303 "pull_request": { 2304 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18", 2305 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2306 "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff", 2307 "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch", 2308 "merged_at": null 2309 }, 2310 "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏", 2311 "reactions": { 2312 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions", 2313 "total_count": 0, 2314 "+1": 0, 2315 "-1": 0, 2316 "laugh": 0, 2317 "hooray": 0, 2318 "confused": 0, 2319 "heart": 0, 2320 "rocket": 0, 2321 "eyes": 0 2322 }, 2323 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline", 2324 "performed_via_github_app": null, 2325 "state_reason": null 2326 }, 2327 "comment": { 2328 "user": "jb55", 2329 "created_at": "2023-12-01T18:50:15Z", 2330 "updated_at": "2023-12-01T18:50:15Z", 2331 "body": "On Fri, Dec 01, 2023 at 10:36:06AM -0800, Hakkadaikon wrote:\n>OK, I'll create a \"new pull request with destsize removed\".\n\nyou can just update this one as well if you want \n" 2332 } 2333 }, 2334 { 2335 "issue": { 2336 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18", 2337 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2338 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}", 2339 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments", 2340 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events", 2341 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2342 "id": 2021354427, 2343 "node_id": "PR_kwDOJ9k5Is5g7Jbr", 2344 "number": 18, 2345 "title": "Delete unuse argument (destsize)", 2346 "user": { 2347 "login": "Hakkadaikon", 2348 "id": 57866935, 2349 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 2350 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 2351 "gravatar_id": "", 2352 "url": "https://api.github.com/users/Hakkadaikon", 2353 "html_url": "https://github.com/Hakkadaikon", 2354 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 2355 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 2356 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 2357 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 2358 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 2359 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 2360 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 2361 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 2362 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 2363 "type": "User", 2364 "site_admin": false 2365 }, 2366 "labels": [], 2367 "state": "closed", 2368 "locked": false, 2369 "assignee": null, 2370 "assignees": [], 2371 "milestone": null, 2372 "comments": 7, 2373 "created_at": "2023-12-01T18:04:55Z", 2374 "updated_at": "2023-12-01T21:58:12Z", 2375 "closed_at": "2023-12-01T21:58:12Z", 2376 "author_association": "CONTRIBUTOR", 2377 "active_lock_reason": null, 2378 "draft": false, 2379 "pull_request": { 2380 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18", 2381 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2382 "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff", 2383 "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch", 2384 "merged_at": null 2385 }, 2386 "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏", 2387 "reactions": { 2388 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions", 2389 "total_count": 0, 2390 "+1": 0, 2391 "-1": 0, 2392 "laugh": 0, 2393 "hooray": 0, 2394 "confused": 0, 2395 "heart": 0, 2396 "rocket": 0, 2397 "eyes": 0 2398 }, 2399 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline", 2400 "performed_via_github_app": null, 2401 "state_reason": null 2402 }, 2403 "comment": { 2404 "user": "Hakkadaikon", 2405 "created_at": "2023-12-01T19:14:34Z", 2406 "updated_at": "2023-12-01T19:14:34Z", 2407 "body": "> you can just update this one as well if you want\r\n\r\nHi,\r\nI have changed the title and modification details of this pull request. (Unused variable: destsize removed.)\r\nPlease check.🙏\r\n\r\nAlso, hex_encode was only used in one place." 2408 } 2409 }, 2410 { 2411 "issue": { 2412 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18", 2413 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2414 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}", 2415 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments", 2416 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events", 2417 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2418 "id": 2021354427, 2419 "node_id": "PR_kwDOJ9k5Is5g7Jbr", 2420 "number": 18, 2421 "title": "Delete unuse argument (destsize)", 2422 "user": { 2423 "login": "Hakkadaikon", 2424 "id": 57866935, 2425 "node_id": "MDQ6VXNlcjU3ODY2OTM1", 2426 "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4", 2427 "gravatar_id": "", 2428 "url": "https://api.github.com/users/Hakkadaikon", 2429 "html_url": "https://github.com/Hakkadaikon", 2430 "followers_url": "https://api.github.com/users/Hakkadaikon/followers", 2431 "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}", 2432 "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}", 2433 "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}", 2434 "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions", 2435 "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs", 2436 "repos_url": "https://api.github.com/users/Hakkadaikon/repos", 2437 "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}", 2438 "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events", 2439 "type": "User", 2440 "site_admin": false 2441 }, 2442 "labels": [], 2443 "state": "closed", 2444 "locked": false, 2445 "assignee": null, 2446 "assignees": [], 2447 "milestone": null, 2448 "comments": 7, 2449 "created_at": "2023-12-01T18:04:55Z", 2450 "updated_at": "2023-12-01T21:58:12Z", 2451 "closed_at": "2023-12-01T21:58:12Z", 2452 "author_association": "CONTRIBUTOR", 2453 "active_lock_reason": null, 2454 "draft": false, 2455 "pull_request": { 2456 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18", 2457 "html_url": "https://github.com/damus-io/nostrdb/pull/18", 2458 "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff", 2459 "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch", 2460 "merged_at": null 2461 }, 2462 "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏", 2463 "reactions": { 2464 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions", 2465 "total_count": 0, 2466 "+1": 0, 2467 "-1": 0, 2468 "laugh": 0, 2469 "hooray": 0, 2470 "confused": 0, 2471 "heart": 0, 2472 "rocket": 0, 2473 "eyes": 0 2474 }, 2475 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline", 2476 "performed_via_github_app": null, 2477 "state_reason": null 2478 }, 2479 "comment": { 2480 "user": "jb55", 2481 "created_at": "2023-12-01T21:57:59Z", 2482 "updated_at": "2023-12-01T21:57:59Z", 2483 "body": "Thanks!\n\nReviewed-by: William Casarin ***@***.***>\n\nOn Sat, Dec 02, 2023 at 02:52:14AM +0900, hakkadaikon wrote:\n>Closes: https://github.com/damus-io/nostrdb/pull/18\n>---\n> hex.h | 2 +-\n> nostrdb.c | 2 +-\n> 2 files changed, 2 insertions(+), 2 deletions(-)\n>\n>diff --git a/hex.h b/hex.h\n>index 88000a7..ce20ff4 100644\n>--- a/hex.h\n>+++ b/hex.h\n>@@ -50,7 +50,7 @@ static inline char hexchar(unsigned int val)\n> \tabort();\n> }\n>\n>-static int hex_encode(const void *buf, size_t bufsize, char *dest, size_t destsize)\n>+static int hex_encode(const void *buf, size_t bufsize, char *dest)\n> {\n> \tsize_t i;\n>\n>diff --git a/nostrdb.c b/nostrdb.c\n>index d973b67..2a8451f 100644\n>--- a/nostrdb.c\n>+++ b/nostrdb.c\n>@@ -3616,7 +3616,7 @@ static int ndb_event_commitment(struct ndb_note *ev, unsigned char *buf, int buf\n> \tstruct cursor cur;\n> \tint ok;\n>\n>-\tif (!hex_encode(ev->pubkey, sizeof(ev->pubkey), pubkey, sizeof(pubkey)))\n>+\tif (!hex_encode(ev->pubkey, sizeof(ev->pubkey), pubkey))\n> \t\treturn 0;\n>\n> \tmake_cursor(buf, buf + buflen, &cur);\n" 2484 } 2485 }, 2486 { 2487 "issue": { 2488 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17", 2489 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2490 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/labels{/name}", 2491 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/comments", 2492 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/events", 2493 "html_url": "https://github.com/damus-io/nostrdb/issues/17", 2494 "id": 1891117168, 2495 "node_id": "I_kwDOJ9k5Is5wuChw", 2496 "number": 17, 2497 "title": "Consider Cap'n Proto optimizations", 2498 "user": { 2499 "login": "vRobM", 2500 "id": 2704733, 2501 "node_id": "MDQ6VXNlcjI3MDQ3MzM=", 2502 "avatar_url": "https://avatars.githubusercontent.com/u/2704733?v=4", 2503 "gravatar_id": "", 2504 "url": "https://api.github.com/users/vRobM", 2505 "html_url": "https://github.com/vRobM", 2506 "followers_url": "https://api.github.com/users/vRobM/followers", 2507 "following_url": "https://api.github.com/users/vRobM/following{/other_user}", 2508 "gists_url": "https://api.github.com/users/vRobM/gists{/gist_id}", 2509 "starred_url": "https://api.github.com/users/vRobM/starred{/owner}{/repo}", 2510 "subscriptions_url": "https://api.github.com/users/vRobM/subscriptions", 2511 "organizations_url": "https://api.github.com/users/vRobM/orgs", 2512 "repos_url": "https://api.github.com/users/vRobM/repos", 2513 "events_url": "https://api.github.com/users/vRobM/events{/privacy}", 2514 "received_events_url": "https://api.github.com/users/vRobM/received_events", 2515 "type": "User", 2516 "site_admin": false 2517 }, 2518 "labels": [], 2519 "state": "closed", 2520 "locked": false, 2521 "assignee": null, 2522 "assignees": [], 2523 "milestone": null, 2524 "comments": 3, 2525 "created_at": "2023-09-11T19:17:41Z", 2526 "updated_at": "2023-12-01T18:39:49Z", 2527 "closed_at": "2023-12-01T18:39:49Z", 2528 "author_association": "NONE", 2529 "active_lock_reason": null, 2530 "body": "Since you're familiar with flatbuffers.. ;-)", 2531 "reactions": { 2532 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/reactions", 2533 "total_count": 0, 2534 "+1": 0, 2535 "-1": 0, 2536 "laugh": 0, 2537 "hooray": 0, 2538 "confused": 0, 2539 "heart": 0, 2540 "rocket": 0, 2541 "eyes": 0 2542 }, 2543 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/timeline", 2544 "performed_via_github_app": null, 2545 "state_reason": "completed" 2546 } 2547 }, 2548 { 2549 "issue": { 2550 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17", 2551 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2552 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/labels{/name}", 2553 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/comments", 2554 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/events", 2555 "html_url": "https://github.com/damus-io/nostrdb/issues/17", 2556 "id": 1891117168, 2557 "node_id": "I_kwDOJ9k5Is5wuChw", 2558 "number": 17, 2559 "title": "Consider Cap'n Proto optimizations", 2560 "user": { 2561 "login": "vRobM", 2562 "id": 2704733, 2563 "node_id": "MDQ6VXNlcjI3MDQ3MzM=", 2564 "avatar_url": "https://avatars.githubusercontent.com/u/2704733?v=4", 2565 "gravatar_id": "", 2566 "url": "https://api.github.com/users/vRobM", 2567 "html_url": "https://github.com/vRobM", 2568 "followers_url": "https://api.github.com/users/vRobM/followers", 2569 "following_url": "https://api.github.com/users/vRobM/following{/other_user}", 2570 "gists_url": "https://api.github.com/users/vRobM/gists{/gist_id}", 2571 "starred_url": "https://api.github.com/users/vRobM/starred{/owner}{/repo}", 2572 "subscriptions_url": "https://api.github.com/users/vRobM/subscriptions", 2573 "organizations_url": "https://api.github.com/users/vRobM/orgs", 2574 "repos_url": "https://api.github.com/users/vRobM/repos", 2575 "events_url": "https://api.github.com/users/vRobM/events{/privacy}", 2576 "received_events_url": "https://api.github.com/users/vRobM/received_events", 2577 "type": "User", 2578 "site_admin": false 2579 }, 2580 "labels": [], 2581 "state": "closed", 2582 "locked": false, 2583 "assignee": null, 2584 "assignees": [], 2585 "milestone": null, 2586 "comments": 3, 2587 "created_at": "2023-09-11T19:17:41Z", 2588 "updated_at": "2023-12-01T18:39:49Z", 2589 "closed_at": "2023-12-01T18:39:49Z", 2590 "author_association": "NONE", 2591 "active_lock_reason": null, 2592 "body": "Since you're familiar with flatbuffers.. ;-)", 2593 "reactions": { 2594 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/reactions", 2595 "total_count": 0, 2596 "+1": 0, 2597 "-1": 0, 2598 "laugh": 0, 2599 "hooray": 0, 2600 "confused": 0, 2601 "heart": 0, 2602 "rocket": 0, 2603 "eyes": 0 2604 }, 2605 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/timeline", 2606 "performed_via_github_app": null, 2607 "state_reason": "completed" 2608 }, 2609 "comment": { 2610 "user": "jb55", 2611 "created_at": "2023-09-11T20:36:08Z", 2612 "updated_at": "2023-09-11T20:36:08Z", 2613 "body": "On Mon, Sep 11, 2023 at 12:17:51PM -0700, Rob wrote:\n>Since you're familiar with flatbuffers.. ;-)\n\nI'm not set on flatbuffers, it's just what I'm using right now. I was\nlooking at the capn' proto comparison to flatbuffers the other day and\nthere doesn't seem that much difference that is relevant to nostrdb. do\nyou have something specific in mind?\n" 2614 } 2615 }, 2616 { 2617 "issue": { 2618 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17", 2619 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2620 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/labels{/name}", 2621 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/comments", 2622 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/events", 2623 "html_url": "https://github.com/damus-io/nostrdb/issues/17", 2624 "id": 1891117168, 2625 "node_id": "I_kwDOJ9k5Is5wuChw", 2626 "number": 17, 2627 "title": "Consider Cap'n Proto optimizations", 2628 "user": { 2629 "login": "vRobM", 2630 "id": 2704733, 2631 "node_id": "MDQ6VXNlcjI3MDQ3MzM=", 2632 "avatar_url": "https://avatars.githubusercontent.com/u/2704733?v=4", 2633 "gravatar_id": "", 2634 "url": "https://api.github.com/users/vRobM", 2635 "html_url": "https://github.com/vRobM", 2636 "followers_url": "https://api.github.com/users/vRobM/followers", 2637 "following_url": "https://api.github.com/users/vRobM/following{/other_user}", 2638 "gists_url": "https://api.github.com/users/vRobM/gists{/gist_id}", 2639 "starred_url": "https://api.github.com/users/vRobM/starred{/owner}{/repo}", 2640 "subscriptions_url": "https://api.github.com/users/vRobM/subscriptions", 2641 "organizations_url": "https://api.github.com/users/vRobM/orgs", 2642 "repos_url": "https://api.github.com/users/vRobM/repos", 2643 "events_url": "https://api.github.com/users/vRobM/events{/privacy}", 2644 "received_events_url": "https://api.github.com/users/vRobM/received_events", 2645 "type": "User", 2646 "site_admin": false 2647 }, 2648 "labels": [], 2649 "state": "closed", 2650 "locked": false, 2651 "assignee": null, 2652 "assignees": [], 2653 "milestone": null, 2654 "comments": 3, 2655 "created_at": "2023-09-11T19:17:41Z", 2656 "updated_at": "2023-12-01T18:39:49Z", 2657 "closed_at": "2023-12-01T18:39:49Z", 2658 "author_association": "NONE", 2659 "active_lock_reason": null, 2660 "body": "Since you're familiar with flatbuffers.. ;-)", 2661 "reactions": { 2662 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/reactions", 2663 "total_count": 0, 2664 "+1": 0, 2665 "-1": 0, 2666 "laugh": 0, 2667 "hooray": 0, 2668 "confused": 0, 2669 "heart": 0, 2670 "rocket": 0, 2671 "eyes": 0 2672 }, 2673 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/timeline", 2674 "performed_via_github_app": null, 2675 "state_reason": "completed" 2676 }, 2677 "comment": { 2678 "user": "vRobM", 2679 "created_at": "2023-09-11T21:21:22Z", 2680 "updated_at": "2023-09-11T21:21:22Z", 2681 "body": "Understood.\r\n\r\nNot an expert on it, so on the surface yes, fairly similar, however it's a pretty deep subject depending on which layer you look at which can be optimized.\r\n\r\nNot sure what the data format considerations are in nostrdb, for example the binary data format would be more compact compared to JSON. How that would affect KV needs or other transformations & manipulations IDK. Depends where the overhead is acceptable. \r\n\r\nhttps://www.youtube.com/watch?v=6V_lVZzV6AE \r\nThis guy delves into the depths of Cap'n Proto which may provide useful perspectives, however limited to the example app he builds.\r\n\r\nA learning opportunity for sure, and we can connect with Kenton who designed it if desired." 2682 } 2683 }, 2684 { 2685 "issue": { 2686 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17", 2687 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2688 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/labels{/name}", 2689 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/comments", 2690 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/events", 2691 "html_url": "https://github.com/damus-io/nostrdb/issues/17", 2692 "id": 1891117168, 2693 "node_id": "I_kwDOJ9k5Is5wuChw", 2694 "number": 17, 2695 "title": "Consider Cap'n Proto optimizations", 2696 "user": { 2697 "login": "vRobM", 2698 "id": 2704733, 2699 "node_id": "MDQ6VXNlcjI3MDQ3MzM=", 2700 "avatar_url": "https://avatars.githubusercontent.com/u/2704733?v=4", 2701 "gravatar_id": "", 2702 "url": "https://api.github.com/users/vRobM", 2703 "html_url": "https://github.com/vRobM", 2704 "followers_url": "https://api.github.com/users/vRobM/followers", 2705 "following_url": "https://api.github.com/users/vRobM/following{/other_user}", 2706 "gists_url": "https://api.github.com/users/vRobM/gists{/gist_id}", 2707 "starred_url": "https://api.github.com/users/vRobM/starred{/owner}{/repo}", 2708 "subscriptions_url": "https://api.github.com/users/vRobM/subscriptions", 2709 "organizations_url": "https://api.github.com/users/vRobM/orgs", 2710 "repos_url": "https://api.github.com/users/vRobM/repos", 2711 "events_url": "https://api.github.com/users/vRobM/events{/privacy}", 2712 "received_events_url": "https://api.github.com/users/vRobM/received_events", 2713 "type": "User", 2714 "site_admin": false 2715 }, 2716 "labels": [], 2717 "state": "closed", 2718 "locked": false, 2719 "assignee": null, 2720 "assignees": [], 2721 "milestone": null, 2722 "comments": 3, 2723 "created_at": "2023-09-11T19:17:41Z", 2724 "updated_at": "2023-12-01T18:39:49Z", 2725 "closed_at": "2023-12-01T18:39:49Z", 2726 "author_association": "NONE", 2727 "active_lock_reason": null, 2728 "body": "Since you're familiar with flatbuffers.. ;-)", 2729 "reactions": { 2730 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/reactions", 2731 "total_count": 0, 2732 "+1": 0, 2733 "-1": 0, 2734 "laugh": 0, 2735 "hooray": 0, 2736 "confused": 0, 2737 "heart": 0, 2738 "rocket": 0, 2739 "eyes": 0 2740 }, 2741 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/timeline", 2742 "performed_via_github_app": null, 2743 "state_reason": "completed" 2744 }, 2745 "comment": { 2746 "user": "jb55", 2747 "created_at": "2023-12-01T18:39:49Z", 2748 "updated_at": "2023-12-01T18:39:49Z", 2749 "body": "closing this until we have some specific thing we are trying to optimize for" 2750 } 2751 }, 2752 { 2753 "issue": { 2754 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/16", 2755 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2756 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/labels{/name}", 2757 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/comments", 2758 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/events", 2759 "html_url": "https://github.com/damus-io/nostrdb/pull/16", 2760 "id": 1878171607, 2761 "node_id": "PR_kwDOJ9k5Is5ZYQrs", 2762 "number": 16, 2763 "title": "Create README.md", 2764 "user": { 2765 "login": "geeknik", 2766 "id": 466878, 2767 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 2768 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 2769 "gravatar_id": "", 2770 "url": "https://api.github.com/users/geeknik", 2771 "html_url": "https://github.com/geeknik", 2772 "followers_url": "https://api.github.com/users/geeknik/followers", 2773 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 2774 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 2775 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 2776 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 2777 "organizations_url": "https://api.github.com/users/geeknik/orgs", 2778 "repos_url": "https://api.github.com/users/geeknik/repos", 2779 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 2780 "received_events_url": "https://api.github.com/users/geeknik/received_events", 2781 "type": "User", 2782 "site_admin": false 2783 }, 2784 "labels": [], 2785 "state": "open", 2786 "locked": false, 2787 "assignee": null, 2788 "assignees": [], 2789 "milestone": null, 2790 "comments": 0, 2791 "created_at": "2023-09-01T23:35:29Z", 2792 "updated_at": "2023-12-04T22:39:25Z", 2793 "closed_at": null, 2794 "author_association": "CONTRIBUTOR", 2795 "active_lock_reason": null, 2796 "draft": false, 2797 "pull_request": { 2798 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/16", 2799 "html_url": "https://github.com/damus-io/nostrdb/pull/16", 2800 "diff_url": "https://github.com/damus-io/nostrdb/pull/16.diff", 2801 "patch_url": "https://github.com/damus-io/nostrdb/pull/16.patch", 2802 "merged_at": null 2803 }, 2804 "body": "Create README.md for the fuzzer since nobody reads the patch notes.", 2805 "reactions": { 2806 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/reactions", 2807 "total_count": 0, 2808 "+1": 0, 2809 "-1": 0, 2810 "laugh": 0, 2811 "hooray": 0, 2812 "confused": 0, 2813 "heart": 0, 2814 "rocket": 0, 2815 "eyes": 0 2816 }, 2817 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/timeline", 2818 "performed_via_github_app": null, 2819 "state_reason": null 2820 } 2821 }, 2822 { 2823 "issue": { 2824 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/15", 2825 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2826 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/labels{/name}", 2827 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/comments", 2828 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/events", 2829 "html_url": "https://github.com/damus-io/nostrdb/pull/15", 2830 "id": 1878169050, 2831 "node_id": "PR_kwDOJ9k5Is5ZYQGn", 2832 "number": 15, 2833 "title": "Create simple_fuzzer.c", 2834 "user": { 2835 "login": "geeknik", 2836 "id": 466878, 2837 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 2838 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 2839 "gravatar_id": "", 2840 "url": "https://api.github.com/users/geeknik", 2841 "html_url": "https://github.com/geeknik", 2842 "followers_url": "https://api.github.com/users/geeknik/followers", 2843 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 2844 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 2845 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 2846 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 2847 "organizations_url": "https://api.github.com/users/geeknik/orgs", 2848 "repos_url": "https://api.github.com/users/geeknik/repos", 2849 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 2850 "received_events_url": "https://api.github.com/users/geeknik/received_events", 2851 "type": "User", 2852 "site_admin": false 2853 }, 2854 "labels": [], 2855 "state": "closed", 2856 "locked": false, 2857 "assignee": null, 2858 "assignees": [], 2859 "milestone": null, 2860 "comments": 1, 2861 "created_at": "2023-09-01T23:32:54Z", 2862 "updated_at": "2023-09-27T17:24:39Z", 2863 "closed_at": "2023-09-27T17:24:35Z", 2864 "author_association": "CONTRIBUTOR", 2865 "active_lock_reason": null, 2866 "draft": false, 2867 "pull_request": { 2868 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/15", 2869 "html_url": "https://github.com/damus-io/nostrdb/pull/15", 2870 "diff_url": "https://github.com/damus-io/nostrdb/pull/15.diff", 2871 "patch_url": "https://github.com/damus-io/nostrdb/pull/15.patch", 2872 "merged_at": null 2873 }, 2874 "body": "simple and inefficient AFL fuzzer for nostrdb\r\nresponsible for finding\r\n 1x global buffer overflow\r\n 1x Floating Point Exception (div by zero)\r\n 1x Assertion failure\r\n \r\nHow to use it yourself:\r\n1. Install Clang 14+\r\n2. Install LLVM 14+\r\n3. Install AFL++\r\n4. Then...\r\n AFL_USE_ASAN=1 afl-clang-lto -flto=full -fsanitize=address -Wall -Wno-unused-function -Werror -O2 -g -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include fuzzer.c nostrdb.c sha256.c deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a -o fuzzer\r\n5. create an input directory drop some sort of starting corpus. i chose blns.txt because it rocks. \r\n6. afl-fuzz -i $input -o $output -- ./fuzzer \r\n \r\n![image](https://github.com/damus-io/nostrdb/assets/466878/d29e5db8-4bfc-4e4b-8e71-67ddfc4b6537)\r\n\r\n", 2875 "reactions": { 2876 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/reactions", 2877 "total_count": 0, 2878 "+1": 0, 2879 "-1": 0, 2880 "laugh": 0, 2881 "hooray": 0, 2882 "confused": 0, 2883 "heart": 0, 2884 "rocket": 0, 2885 "eyes": 0 2886 }, 2887 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/timeline", 2888 "performed_via_github_app": null, 2889 "state_reason": null 2890 } 2891 }, 2892 { 2893 "issue": { 2894 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/15", 2895 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2896 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/labels{/name}", 2897 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/comments", 2898 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/events", 2899 "html_url": "https://github.com/damus-io/nostrdb/pull/15", 2900 "id": 1878169050, 2901 "node_id": "PR_kwDOJ9k5Is5ZYQGn", 2902 "number": 15, 2903 "title": "Create simple_fuzzer.c", 2904 "user": { 2905 "login": "geeknik", 2906 "id": 466878, 2907 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 2908 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 2909 "gravatar_id": "", 2910 "url": "https://api.github.com/users/geeknik", 2911 "html_url": "https://github.com/geeknik", 2912 "followers_url": "https://api.github.com/users/geeknik/followers", 2913 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 2914 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 2915 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 2916 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 2917 "organizations_url": "https://api.github.com/users/geeknik/orgs", 2918 "repos_url": "https://api.github.com/users/geeknik/repos", 2919 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 2920 "received_events_url": "https://api.github.com/users/geeknik/received_events", 2921 "type": "User", 2922 "site_admin": false 2923 }, 2924 "labels": [], 2925 "state": "closed", 2926 "locked": false, 2927 "assignee": null, 2928 "assignees": [], 2929 "milestone": null, 2930 "comments": 1, 2931 "created_at": "2023-09-01T23:32:54Z", 2932 "updated_at": "2023-09-27T17:24:39Z", 2933 "closed_at": "2023-09-27T17:24:35Z", 2934 "author_association": "CONTRIBUTOR", 2935 "active_lock_reason": null, 2936 "draft": false, 2937 "pull_request": { 2938 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/15", 2939 "html_url": "https://github.com/damus-io/nostrdb/pull/15", 2940 "diff_url": "https://github.com/damus-io/nostrdb/pull/15.diff", 2941 "patch_url": "https://github.com/damus-io/nostrdb/pull/15.patch", 2942 "merged_at": null 2943 }, 2944 "body": "simple and inefficient AFL fuzzer for nostrdb\r\nresponsible for finding\r\n 1x global buffer overflow\r\n 1x Floating Point Exception (div by zero)\r\n 1x Assertion failure\r\n \r\nHow to use it yourself:\r\n1. Install Clang 14+\r\n2. Install LLVM 14+\r\n3. Install AFL++\r\n4. Then...\r\n AFL_USE_ASAN=1 afl-clang-lto -flto=full -fsanitize=address -Wall -Wno-unused-function -Werror -O2 -g -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include fuzzer.c nostrdb.c sha256.c deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a -o fuzzer\r\n5. create an input directory drop some sort of starting corpus. i chose blns.txt because it rocks. \r\n6. afl-fuzz -i $input -o $output -- ./fuzzer \r\n \r\n![image](https://github.com/damus-io/nostrdb/assets/466878/d29e5db8-4bfc-4e4b-8e71-67ddfc4b6537)\r\n\r\n", 2945 "reactions": { 2946 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/reactions", 2947 "total_count": 0, 2948 "+1": 0, 2949 "-1": 0, 2950 "laugh": 0, 2951 "hooray": 0, 2952 "confused": 0, 2953 "heart": 0, 2954 "rocket": 0, 2955 "eyes": 0 2956 }, 2957 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/timeline", 2958 "performed_via_github_app": null, 2959 "state_reason": null 2960 }, 2961 "comment": { 2962 "user": "jb55", 2963 "created_at": "2023-09-02T01:00:10Z", 2964 "updated_at": "2023-09-02T01:00:10Z", 2965 "body": "Hey! Few comments below.\n\nOn Fri, Sep 01, 2023 at 11:29:04PM +0000, geeknik wrote:\n>simple and inefficient AFL fuzzer for nostrdb\n>responsible for finding\n> 1x global buffer overflow\n> 1x Floating Point Exception (div by zero)\n> 1x Assertion failure\n>\n>Closes: https://github.com/damus-io/nostrdb/pull/15\n>---\n> fuzzer/simple_fuzzer.c | 35 +++++++++++++++++++++++++++++++++++\n> 1 file changed, 35 insertions(+)\n> create mode 100644 fuzzer/simple_fuzzer.c\n>\n>diff --git a/fuzzer/simple_fuzzer.c b/fuzzer/simple_fuzzer.c\n>new file mode 100644\n>index 0000000..f436aa1\n>--- /dev/null\n>+++ b/fuzzer/simple_fuzzer.c\n>\n>[..]\n> \n>+__AFL_FUZZ_INIT();\n>+\n>+int main(void) {\n>+ while (__AFL_LOOP(1000000)) {\n>+ unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF;\n>+ size_t len = __AFL_FUZZ_TESTCASE_LEN;\n>+ struct ndb *db;\n>+ int init_result = ndb_init(&db, 1024, 1);\n\nThis opens and closes the DB 1,000,000 times. is this intended?\n\n>+ if (init_result != 1) {\n>+ fprintf(stderr, \"Failed to initialize nostrdb\\n\");\n>+ continue;\n>+ }\n>+ int result = ndb_process_event(db, (const char *)buf, len);\n>+ if (result == 0) {\n>+ if (len >= 32) {\n>+ struct ndb_note *note = ndb_get_note_by_id(db, buf);\n>+ if (note != NULL) {\n>+ }\n>+ }\n>+ } else {\n>+ }\n\nWhy only lookup after failure to process the event? Confused by this logic.\n\n>+ ndb_destroy(db);\n>+ }\n>+ return 0;\n>+}\n\nWe should probably have a Makefile entry for building this.\n" 2966 } 2967 }, 2968 { 2969 "issue": { 2970 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/14", 2971 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 2972 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/labels{/name}", 2973 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/comments", 2974 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/events", 2975 "html_url": "https://github.com/damus-io/nostrdb/pull/14", 2976 "id": 1874256307, 2977 "node_id": "PR_kwDOJ9k5Is5ZK80y", 2978 "number": 14, 2979 "title": "Update LICENSE", 2980 "user": { 2981 "login": "punterwantsawhalepass", 2982 "id": 103547087, 2983 "node_id": "U_kgDOBiwAzw", 2984 "avatar_url": "https://avatars.githubusercontent.com/u/103547087?v=4", 2985 "gravatar_id": "", 2986 "url": "https://api.github.com/users/punterwantsawhalepass", 2987 "html_url": "https://github.com/punterwantsawhalepass", 2988 "followers_url": "https://api.github.com/users/punterwantsawhalepass/followers", 2989 "following_url": "https://api.github.com/users/punterwantsawhalepass/following{/other_user}", 2990 "gists_url": "https://api.github.com/users/punterwantsawhalepass/gists{/gist_id}", 2991 "starred_url": "https://api.github.com/users/punterwantsawhalepass/starred{/owner}{/repo}", 2992 "subscriptions_url": "https://api.github.com/users/punterwantsawhalepass/subscriptions", 2993 "organizations_url": "https://api.github.com/users/punterwantsawhalepass/orgs", 2994 "repos_url": "https://api.github.com/users/punterwantsawhalepass/repos", 2995 "events_url": "https://api.github.com/users/punterwantsawhalepass/events{/privacy}", 2996 "received_events_url": "https://api.github.com/users/punterwantsawhalepass/received_events", 2997 "type": "User", 2998 "site_admin": false 2999 }, 3000 "labels": [], 3001 "state": "closed", 3002 "locked": false, 3003 "assignee": null, 3004 "assignees": [], 3005 "milestone": null, 3006 "comments": 0, 3007 "created_at": "2023-08-30T19:34:40Z", 3008 "updated_at": "2023-12-01T18:42:46Z", 3009 "closed_at": "2023-12-01T18:42:46Z", 3010 "author_association": "NONE", 3011 "active_lock_reason": null, 3012 "draft": false, 3013 "pull_request": { 3014 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/14", 3015 "html_url": "https://github.com/damus-io/nostrdb/pull/14", 3016 "diff_url": "https://github.com/damus-io/nostrdb/pull/14.diff", 3017 "patch_url": "https://github.com/damus-io/nostrdb/pull/14.patch", 3018 "merged_at": null 3019 }, 3020 "body": null, 3021 "reactions": { 3022 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/reactions", 3023 "total_count": 0, 3024 "+1": 0, 3025 "-1": 0, 3026 "laugh": 0, 3027 "hooray": 0, 3028 "confused": 0, 3029 "heart": 0, 3030 "rocket": 0, 3031 "eyes": 0 3032 }, 3033 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/timeline", 3034 "performed_via_github_app": null, 3035 "state_reason": null 3036 } 3037 }, 3038 { 3039 "issue": { 3040 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/13", 3041 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3042 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/labels{/name}", 3043 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/comments", 3044 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/events", 3045 "html_url": "https://github.com/damus-io/nostrdb/issues/13", 3046 "id": 1856826372, 3047 "node_id": "I_kwDOJ9k5Is5urOwE", 3048 "number": 13, 3049 "title": "arm64: bench-many-ingest fails", 3050 "user": { 3051 "login": "IngwiePhoenix", 3052 "id": 2893716, 3053 "node_id": "MDQ6VXNlcjI4OTM3MTY=", 3054 "avatar_url": "https://avatars.githubusercontent.com/u/2893716?v=4", 3055 "gravatar_id": "", 3056 "url": "https://api.github.com/users/IngwiePhoenix", 3057 "html_url": "https://github.com/IngwiePhoenix", 3058 "followers_url": "https://api.github.com/users/IngwiePhoenix/followers", 3059 "following_url": "https://api.github.com/users/IngwiePhoenix/following{/other_user}", 3060 "gists_url": "https://api.github.com/users/IngwiePhoenix/gists{/gist_id}", 3061 "starred_url": "https://api.github.com/users/IngwiePhoenix/starred{/owner}{/repo}", 3062 "subscriptions_url": "https://api.github.com/users/IngwiePhoenix/subscriptions", 3063 "organizations_url": "https://api.github.com/users/IngwiePhoenix/orgs", 3064 "repos_url": "https://api.github.com/users/IngwiePhoenix/repos", 3065 "events_url": "https://api.github.com/users/IngwiePhoenix/events{/privacy}", 3066 "received_events_url": "https://api.github.com/users/IngwiePhoenix/received_events", 3067 "type": "User", 3068 "site_admin": false 3069 }, 3070 "labels": [], 3071 "state": "open", 3072 "locked": false, 3073 "assignee": null, 3074 "assignees": [], 3075 "milestone": null, 3076 "comments": 1, 3077 "created_at": "2023-08-18T14:33:08Z", 3078 "updated_at": "2023-08-18T15:11:36Z", 3079 "closed_at": null, 3080 "author_association": "NONE", 3081 "active_lock_reason": null, 3082 "body": "This is the full output I get from GDB:\r\n\r\n```\r\nroot@FriendlyWrt /u/o/nostrdb (master)# ./bench-ingest-many\r\nfish: Job 1, './bench-ingest-many' terminated by signal SIGSEGV (Address boundary error)\r\nroot@FriendlyWrt /u/o/nostrdb (master) [SIGSEGV]# gdb ./bench-ingest-many\r\nGNU gdb (GDB) 11.2\r\nCopyright (C) 2022 Free Software Foundation, Inc.\r\nLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\r\nThis is free software: you are free to change and redistribute it.\r\nThere is NO WARRANTY, to the extent permitted by law.\r\nType \"show copying\" and \"show warranty\" for details.\r\nThis GDB was configured as \"aarch64-openwrt-linux\".\r\nType \"show configuration\" for configuration details.\r\nFor bug reporting instructions, please see:\r\n<https://www.gnu.org/software/gdb/bugs/>.\r\nFind the GDB manual and other documentation resources online at:\r\n <http://www.gnu.org/software/gdb/documentation/>.\r\n\r\nFor help, type \"help\".\r\nType \"apropos word\" to search for commands related to \"word\"...\r\nReading symbols from ./bench-ingest-many...\r\n(gdb) r\r\nStarting program: /usb/opt/nostrdb/bench-ingest-many\r\n[New LWP 31045]\r\n[New LWP 31046]\r\n[New LWP 31047]\r\n\r\nThread 2 \"bench-ingest-ma\" received signal SIGSEGV, Segmentation fault.\r\n[Switching to LWP 31045]\r\nprot_queue_pop_all (q=0xfffff7ffff68, q@entry=0xfffffffff1c0, dest=dest@entry=0xffff785c7a00, max_items=4096) at /usb/opt/nostrdb/protected_queue.h:186\r\n186 pthread_mutex_lock(&q->mutex);\r\n(gdb) bt\r\n#0 prot_queue_pop_all (q=0xfffff7ffff68, q@entry=0xfffffffff1c0, dest=dest@entry=0xffff785c7a00, max_items=4096) at /usb/opt/nostrdb/protected_queue.h:186\r\n#1 0x0000000000404778 in ndb_writer_thread (data=0xfffff7ffff48) at nostrdb.c:569\r\n#2 0x0000fffff7f9f124 in ?? () from /lib/ld-musl-aarch64.so.1\r\nBacktrace stopped: previous frame identical to this frame (corrupt stack?)\r\n(gdb) q\r\n```\r\n\r\nI built with \"make\", then \"make bench-ingest-many\" to build the binary, from a fully fresh and just-pulled (`git rev-parse HEAD: 1b389a869f8836af4cf80f5fe4c884817dfe47c3`) repo.\r\n\r\nI am on OpenWrt, ARM64 (RK3588).\r\n\r\nIs there something I can do to further dig into this?\r\n\r\nThanks!", 3083 "reactions": { 3084 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/reactions", 3085 "total_count": 0, 3086 "+1": 0, 3087 "-1": 0, 3088 "laugh": 0, 3089 "hooray": 0, 3090 "confused": 0, 3091 "heart": 0, 3092 "rocket": 0, 3093 "eyes": 0 3094 }, 3095 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/timeline", 3096 "performed_via_github_app": null, 3097 "state_reason": null 3098 } 3099 }, 3100 { 3101 "issue": { 3102 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/13", 3103 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3104 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/labels{/name}", 3105 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/comments", 3106 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/events", 3107 "html_url": "https://github.com/damus-io/nostrdb/issues/13", 3108 "id": 1856826372, 3109 "node_id": "I_kwDOJ9k5Is5urOwE", 3110 "number": 13, 3111 "title": "arm64: bench-many-ingest fails", 3112 "user": { 3113 "login": "IngwiePhoenix", 3114 "id": 2893716, 3115 "node_id": "MDQ6VXNlcjI4OTM3MTY=", 3116 "avatar_url": "https://avatars.githubusercontent.com/u/2893716?v=4", 3117 "gravatar_id": "", 3118 "url": "https://api.github.com/users/IngwiePhoenix", 3119 "html_url": "https://github.com/IngwiePhoenix", 3120 "followers_url": "https://api.github.com/users/IngwiePhoenix/followers", 3121 "following_url": "https://api.github.com/users/IngwiePhoenix/following{/other_user}", 3122 "gists_url": "https://api.github.com/users/IngwiePhoenix/gists{/gist_id}", 3123 "starred_url": "https://api.github.com/users/IngwiePhoenix/starred{/owner}{/repo}", 3124 "subscriptions_url": "https://api.github.com/users/IngwiePhoenix/subscriptions", 3125 "organizations_url": "https://api.github.com/users/IngwiePhoenix/orgs", 3126 "repos_url": "https://api.github.com/users/IngwiePhoenix/repos", 3127 "events_url": "https://api.github.com/users/IngwiePhoenix/events{/privacy}", 3128 "received_events_url": "https://api.github.com/users/IngwiePhoenix/received_events", 3129 "type": "User", 3130 "site_admin": false 3131 }, 3132 "labels": [], 3133 "state": "open", 3134 "locked": false, 3135 "assignee": null, 3136 "assignees": [], 3137 "milestone": null, 3138 "comments": 1, 3139 "created_at": "2023-08-18T14:33:08Z", 3140 "updated_at": "2023-08-18T15:11:36Z", 3141 "closed_at": null, 3142 "author_association": "NONE", 3143 "active_lock_reason": null, 3144 "body": "This is the full output I get from GDB:\r\n\r\n```\r\nroot@FriendlyWrt /u/o/nostrdb (master)# ./bench-ingest-many\r\nfish: Job 1, './bench-ingest-many' terminated by signal SIGSEGV (Address boundary error)\r\nroot@FriendlyWrt /u/o/nostrdb (master) [SIGSEGV]# gdb ./bench-ingest-many\r\nGNU gdb (GDB) 11.2\r\nCopyright (C) 2022 Free Software Foundation, Inc.\r\nLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\r\nThis is free software: you are free to change and redistribute it.\r\nThere is NO WARRANTY, to the extent permitted by law.\r\nType \"show copying\" and \"show warranty\" for details.\r\nThis GDB was configured as \"aarch64-openwrt-linux\".\r\nType \"show configuration\" for configuration details.\r\nFor bug reporting instructions, please see:\r\n<https://www.gnu.org/software/gdb/bugs/>.\r\nFind the GDB manual and other documentation resources online at:\r\n <http://www.gnu.org/software/gdb/documentation/>.\r\n\r\nFor help, type \"help\".\r\nType \"apropos word\" to search for commands related to \"word\"...\r\nReading symbols from ./bench-ingest-many...\r\n(gdb) r\r\nStarting program: /usb/opt/nostrdb/bench-ingest-many\r\n[New LWP 31045]\r\n[New LWP 31046]\r\n[New LWP 31047]\r\n\r\nThread 2 \"bench-ingest-ma\" received signal SIGSEGV, Segmentation fault.\r\n[Switching to LWP 31045]\r\nprot_queue_pop_all (q=0xfffff7ffff68, q@entry=0xfffffffff1c0, dest=dest@entry=0xffff785c7a00, max_items=4096) at /usb/opt/nostrdb/protected_queue.h:186\r\n186 pthread_mutex_lock(&q->mutex);\r\n(gdb) bt\r\n#0 prot_queue_pop_all (q=0xfffff7ffff68, q@entry=0xfffffffff1c0, dest=dest@entry=0xffff785c7a00, max_items=4096) at /usb/opt/nostrdb/protected_queue.h:186\r\n#1 0x0000000000404778 in ndb_writer_thread (data=0xfffff7ffff48) at nostrdb.c:569\r\n#2 0x0000fffff7f9f124 in ?? () from /lib/ld-musl-aarch64.so.1\r\nBacktrace stopped: previous frame identical to this frame (corrupt stack?)\r\n(gdb) q\r\n```\r\n\r\nI built with \"make\", then \"make bench-ingest-many\" to build the binary, from a fully fresh and just-pulled (`git rev-parse HEAD: 1b389a869f8836af4cf80f5fe4c884817dfe47c3`) repo.\r\n\r\nI am on OpenWrt, ARM64 (RK3588).\r\n\r\nIs there something I can do to further dig into this?\r\n\r\nThanks!", 3145 "reactions": { 3146 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/reactions", 3147 "total_count": 0, 3148 "+1": 0, 3149 "-1": 0, 3150 "laugh": 0, 3151 "hooray": 0, 3152 "confused": 0, 3153 "heart": 0, 3154 "rocket": 0, 3155 "eyes": 0 3156 }, 3157 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/timeline", 3158 "performed_via_github_app": null, 3159 "state_reason": null 3160 }, 3161 "comment": { 3162 "user": "jb55", 3163 "created_at": "2023-08-18T15:11:36Z", 3164 "updated_at": "2023-08-18T15:11:36Z", 3165 "body": "On Fri, Aug 18, 2023 at 07:33:20AM -0700, Ingwie Phoenix wrote:\n>This is the full output I get from GDB:\n>I built with \"make\", then \"make bench-ingest-many\" to build the binary, from a fully fresh and just-pulled (`git rev-parse HEAD: 1b389a869f8836af4cf80f5fe4c884817dfe47c3`) repo.\n>\n>I am on OpenWrt, ARM64 (RK3588).\n>\n>Is there something I can do to further dig into this?\n\nnot sure, this codebase is very new and uses lots of untested\ncomponents. I haven't run into this one.\n" 3166 } 3167 }, 3168 { 3169 "issue": { 3170 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12", 3171 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3172 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/labels{/name}", 3173 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/comments", 3174 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/events", 3175 "html_url": "https://github.com/damus-io/nostrdb/issues/12", 3176 "id": 1848708029, 3177 "node_id": "I_kwDOJ9k5Is5uMQu9", 3178 "number": 12, 3179 "title": "Assertion Failure in nostrdb.c at Line 611", 3180 "user": { 3181 "login": "geeknik", 3182 "id": 466878, 3183 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3184 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3185 "gravatar_id": "", 3186 "url": "https://api.github.com/users/geeknik", 3187 "html_url": "https://github.com/geeknik", 3188 "followers_url": "https://api.github.com/users/geeknik/followers", 3189 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3190 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3191 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3192 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3193 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3194 "repos_url": "https://api.github.com/users/geeknik/repos", 3195 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3196 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3197 "type": "User", 3198 "site_admin": false 3199 }, 3200 "labels": [], 3201 "state": "closed", 3202 "locked": false, 3203 "assignee": null, 3204 "assignees": [], 3205 "milestone": null, 3206 "comments": 3, 3207 "created_at": "2023-08-13T19:17:41Z", 3208 "updated_at": "2023-12-01T18:40:24Z", 3209 "closed_at": "2023-12-01T18:40:24Z", 3210 "author_association": "CONTRIBUTOR", 3211 "active_lock_reason": null, 3212 "body": "While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\r\n\r\n```\r\nwriter thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\r\nAborted\r\n```\r\n\r\n**Input File (test0000):**\r\n```\r\n[\"EVENT\"\"\"{\"content\"\"created_at\":0\r\n\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\r\n```\r\n\r\nEncoded in Base64, the above input is:\r\n```\r\nWyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\r\nNTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\r\nInB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\r\nNGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\r\nODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\r\nZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\r\n```", 3213 "reactions": { 3214 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/reactions", 3215 "total_count": 0, 3216 "+1": 0, 3217 "-1": 0, 3218 "laugh": 0, 3219 "hooray": 0, 3220 "confused": 0, 3221 "heart": 0, 3222 "rocket": 0, 3223 "eyes": 0 3224 }, 3225 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/timeline", 3226 "performed_via_github_app": null, 3227 "state_reason": "completed" 3228 } 3229 }, 3230 { 3231 "issue": { 3232 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12", 3233 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3234 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/labels{/name}", 3235 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/comments", 3236 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/events", 3237 "html_url": "https://github.com/damus-io/nostrdb/issues/12", 3238 "id": 1848708029, 3239 "node_id": "I_kwDOJ9k5Is5uMQu9", 3240 "number": 12, 3241 "title": "Assertion Failure in nostrdb.c at Line 611", 3242 "user": { 3243 "login": "geeknik", 3244 "id": 466878, 3245 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3246 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3247 "gravatar_id": "", 3248 "url": "https://api.github.com/users/geeknik", 3249 "html_url": "https://github.com/geeknik", 3250 "followers_url": "https://api.github.com/users/geeknik/followers", 3251 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3252 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3253 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3254 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3255 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3256 "repos_url": "https://api.github.com/users/geeknik/repos", 3257 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3258 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3259 "type": "User", 3260 "site_admin": false 3261 }, 3262 "labels": [], 3263 "state": "closed", 3264 "locked": false, 3265 "assignee": null, 3266 "assignees": [], 3267 "milestone": null, 3268 "comments": 3, 3269 "created_at": "2023-08-13T19:17:41Z", 3270 "updated_at": "2023-12-01T18:40:24Z", 3271 "closed_at": "2023-12-01T18:40:24Z", 3272 "author_association": "CONTRIBUTOR", 3273 "active_lock_reason": null, 3274 "body": "While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\r\n\r\n```\r\nwriter thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\r\nAborted\r\n```\r\n\r\n**Input File (test0000):**\r\n```\r\n[\"EVENT\"\"\"{\"content\"\"created_at\":0\r\n\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\r\n```\r\n\r\nEncoded in Base64, the above input is:\r\n```\r\nWyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\r\nNTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\r\nInB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\r\nNGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\r\nODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\r\nZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\r\n```", 3275 "reactions": { 3276 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/reactions", 3277 "total_count": 0, 3278 "+1": 0, 3279 "-1": 0, 3280 "laugh": 0, 3281 "hooray": 0, 3282 "confused": 0, 3283 "heart": 0, 3284 "rocket": 0, 3285 "eyes": 0 3286 }, 3287 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/timeline", 3288 "performed_via_github_app": null, 3289 "state_reason": "completed" 3290 }, 3291 "comment": { 3292 "user": "jb55", 3293 "created_at": "2023-08-16T17:22:18Z", 3294 "updated_at": "2023-08-16T17:22:18Z", 3295 "body": "On Sun, Aug 13, 2023 at 12:17:51PM -0700, geeknik wrote:\n>While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\n>\n>```\n>writer thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\n>Aborted\n>```\n>\n>**Input File (test0000):**\n>```\n>[\"EVENT\"\"\"{\"content\"\"created_at\":0\n>\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\n>```\n>\n>Encoded in Base64, the above input is:\n>```\n>WyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\n>NTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\n>InB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\n>NGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\n>ODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\n>ZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\n>```\n\nawesome! thanks. will add a test case for this\n" 3296 } 3297 }, 3298 { 3299 "issue": { 3300 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12", 3301 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3302 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/labels{/name}", 3303 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/comments", 3304 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/events", 3305 "html_url": "https://github.com/damus-io/nostrdb/issues/12", 3306 "id": 1848708029, 3307 "node_id": "I_kwDOJ9k5Is5uMQu9", 3308 "number": 12, 3309 "title": "Assertion Failure in nostrdb.c at Line 611", 3310 "user": { 3311 "login": "geeknik", 3312 "id": 466878, 3313 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3314 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3315 "gravatar_id": "", 3316 "url": "https://api.github.com/users/geeknik", 3317 "html_url": "https://github.com/geeknik", 3318 "followers_url": "https://api.github.com/users/geeknik/followers", 3319 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3320 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3321 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3322 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3323 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3324 "repos_url": "https://api.github.com/users/geeknik/repos", 3325 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3326 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3327 "type": "User", 3328 "site_admin": false 3329 }, 3330 "labels": [], 3331 "state": "closed", 3332 "locked": false, 3333 "assignee": null, 3334 "assignees": [], 3335 "milestone": null, 3336 "comments": 3, 3337 "created_at": "2023-08-13T19:17:41Z", 3338 "updated_at": "2023-12-01T18:40:24Z", 3339 "closed_at": "2023-12-01T18:40:24Z", 3340 "author_association": "CONTRIBUTOR", 3341 "active_lock_reason": null, 3342 "body": "While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\r\n\r\n```\r\nwriter thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\r\nAborted\r\n```\r\n\r\n**Input File (test0000):**\r\n```\r\n[\"EVENT\"\"\"{\"content\"\"created_at\":0\r\n\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\r\n```\r\n\r\nEncoded in Base64, the above input is:\r\n```\r\nWyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\r\nNTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\r\nInB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\r\nNGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\r\nODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\r\nZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\r\n```", 3343 "reactions": { 3344 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/reactions", 3345 "total_count": 0, 3346 "+1": 0, 3347 "-1": 0, 3348 "laugh": 0, 3349 "hooray": 0, 3350 "confused": 0, 3351 "heart": 0, 3352 "rocket": 0, 3353 "eyes": 0 3354 }, 3355 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/timeline", 3356 "performed_via_github_app": null, 3357 "state_reason": "completed" 3358 }, 3359 "comment": { 3360 "user": "jb55", 3361 "created_at": "2023-08-21T21:38:44Z", 3362 "updated_at": "2023-08-21T21:38:44Z", 3363 "body": "I can't seem to reproduce this. I added a test below but it passes\nwithout a crash.\n\n From be06e3d1a622e436050a66df1b200f7441242c07 Mon Sep 17 00:00:00 2001\nFrom: William Casarin ***@***.***>\nDate: Mon, 21 Aug 2023 14:36:55 -0700\nSubject: [PATCH] test: add test for fuzz crash\n\nSigned-off-by: William Casarin ***@***.***>\n---\n test.c | 9 +++++++++\n 1 file changed, 9 insertions(+)\n\ndiff --git a/test.c b/test.c\nindex 279e415a012d..7dffe3d9bbe5 100644\n--- a/test.c\n+++ b/test.c\n@@ -47,6 +47,14 @@ static void test_load_profiles()\n \tfree(buf);\n }\n \n+static void test_fuzz_events() {\n+\tstruct ndb *ndb;\n+\tconst char *str = \"[\\\"EVENT\\\"\\\"\\\"{\\\"content\\\"\\\"created_at\\\":0 \\\"id\\\"\\\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\\\"\\\"kind\\\":0 \\\"pubkey\\\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \\\"sig\\\"\\\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153 ea93cf5\\\"\\\"tags\\\"[[][\\\"\\\"]]}]\";\n+\n+\tndb_init(&ndb, 1024 * 1024, 1);\n+\tndb_process_event(ndb, str, strlen(str));\n+\tndb_destroy(ndb);\n+}\n \n static void test_basic_event() {\n \tunsigned char buf[512];\n@@ -538,6 +546,7 @@ int main(int argc, const char *argv[]) {\n \ttest_tce_eose();\n \ttest_tce_command_result_empty_msg();\n \ttest_content_len();\n+\ttest_fuzz_events();\n \n \t// protected queue tests\n \ttest_queue_init_pop_push();\n-- \n2.39.2 (Apple Git-144)\n\n\n" 3364 } 3365 }, 3366 { 3367 "issue": { 3368 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12", 3369 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3370 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/labels{/name}", 3371 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/comments", 3372 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/events", 3373 "html_url": "https://github.com/damus-io/nostrdb/issues/12", 3374 "id": 1848708029, 3375 "node_id": "I_kwDOJ9k5Is5uMQu9", 3376 "number": 12, 3377 "title": "Assertion Failure in nostrdb.c at Line 611", 3378 "user": { 3379 "login": "geeknik", 3380 "id": 466878, 3381 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3382 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3383 "gravatar_id": "", 3384 "url": "https://api.github.com/users/geeknik", 3385 "html_url": "https://github.com/geeknik", 3386 "followers_url": "https://api.github.com/users/geeknik/followers", 3387 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3388 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3389 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3390 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3391 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3392 "repos_url": "https://api.github.com/users/geeknik/repos", 3393 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3394 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3395 "type": "User", 3396 "site_admin": false 3397 }, 3398 "labels": [], 3399 "state": "closed", 3400 "locked": false, 3401 "assignee": null, 3402 "assignees": [], 3403 "milestone": null, 3404 "comments": 3, 3405 "created_at": "2023-08-13T19:17:41Z", 3406 "updated_at": "2023-12-01T18:40:24Z", 3407 "closed_at": "2023-12-01T18:40:24Z", 3408 "author_association": "CONTRIBUTOR", 3409 "active_lock_reason": null, 3410 "body": "While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\r\n\r\n```\r\nwriter thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\r\nAborted\r\n```\r\n\r\n**Input File (test0000):**\r\n```\r\n[\"EVENT\"\"\"{\"content\"\"created_at\":0\r\n\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\r\n```\r\n\r\nEncoded in Base64, the above input is:\r\n```\r\nWyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\r\nNTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\r\nInB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\r\nNGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\r\nODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\r\nZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\r\n```", 3411 "reactions": { 3412 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/reactions", 3413 "total_count": 0, 3414 "+1": 0, 3415 "-1": 0, 3416 "laugh": 0, 3417 "hooray": 0, 3418 "confused": 0, 3419 "heart": 0, 3420 "rocket": 0, 3421 "eyes": 0 3422 }, 3423 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/timeline", 3424 "performed_via_github_app": null, 3425 "state_reason": "completed" 3426 }, 3427 "comment": { 3428 "user": "geeknik", 3429 "created_at": "2023-09-02T00:55:46Z", 3430 "updated_at": "2023-09-02T00:55:46Z", 3431 "body": "I guess we can ignore this for now, I can no longer reproduce it. #heisenbug" 3432 } 3433 }, 3434 { 3435 "issue": { 3436 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11", 3437 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3438 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/labels{/name}", 3439 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/comments", 3440 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/events", 3441 "html_url": "https://github.com/damus-io/nostrdb/pull/11", 3442 "id": 1848619150, 3443 "node_id": "PR_kwDOJ9k5Is5X0kl7", 3444 "number": 11, 3445 "title": "Update hex.h", 3446 "user": { 3447 "login": "geeknik", 3448 "id": 466878, 3449 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3450 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3451 "gravatar_id": "", 3452 "url": "https://api.github.com/users/geeknik", 3453 "html_url": "https://github.com/geeknik", 3454 "followers_url": "https://api.github.com/users/geeknik/followers", 3455 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3456 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3457 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3458 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3459 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3460 "repos_url": "https://api.github.com/users/geeknik/repos", 3461 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3462 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3463 "type": "User", 3464 "site_admin": false 3465 }, 3466 "labels": [], 3467 "state": "open", 3468 "locked": false, 3469 "assignee": null, 3470 "assignees": [], 3471 "milestone": null, 3472 "comments": 2, 3473 "created_at": "2023-08-13T14:35:46Z", 3474 "updated_at": "2023-12-04T22:39:25Z", 3475 "closed_at": null, 3476 "author_association": "CONTRIBUTOR", 3477 "active_lock_reason": null, 3478 "draft": false, 3479 "pull_request": { 3480 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/11", 3481 "html_url": "https://github.com/damus-io/nostrdb/pull/11", 3482 "diff_url": "https://github.com/damus-io/nostrdb/pull/11.diff", 3483 "patch_url": "https://github.com/damus-io/nostrdb/pull/11.patch", 3484 "merged_at": null 3485 }, 3486 "body": "Probably fixes #10 ", 3487 "reactions": { 3488 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/reactions", 3489 "total_count": 0, 3490 "+1": 0, 3491 "-1": 0, 3492 "laugh": 0, 3493 "hooray": 0, 3494 "confused": 0, 3495 "heart": 0, 3496 "rocket": 0, 3497 "eyes": 0 3498 }, 3499 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/timeline", 3500 "performed_via_github_app": null, 3501 "state_reason": null 3502 } 3503 }, 3504 { 3505 "issue": { 3506 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11", 3507 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3508 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/labels{/name}", 3509 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/comments", 3510 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/events", 3511 "html_url": "https://github.com/damus-io/nostrdb/pull/11", 3512 "id": 1848619150, 3513 "node_id": "PR_kwDOJ9k5Is5X0kl7", 3514 "number": 11, 3515 "title": "Update hex.h", 3516 "user": { 3517 "login": "geeknik", 3518 "id": 466878, 3519 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3520 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3521 "gravatar_id": "", 3522 "url": "https://api.github.com/users/geeknik", 3523 "html_url": "https://github.com/geeknik", 3524 "followers_url": "https://api.github.com/users/geeknik/followers", 3525 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3526 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3527 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3528 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3529 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3530 "repos_url": "https://api.github.com/users/geeknik/repos", 3531 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3532 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3533 "type": "User", 3534 "site_admin": false 3535 }, 3536 "labels": [], 3537 "state": "open", 3538 "locked": false, 3539 "assignee": null, 3540 "assignees": [], 3541 "milestone": null, 3542 "comments": 2, 3543 "created_at": "2023-08-13T14:35:46Z", 3544 "updated_at": "2023-12-04T22:39:25Z", 3545 "closed_at": null, 3546 "author_association": "CONTRIBUTOR", 3547 "active_lock_reason": null, 3548 "draft": false, 3549 "pull_request": { 3550 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/11", 3551 "html_url": "https://github.com/damus-io/nostrdb/pull/11", 3552 "diff_url": "https://github.com/damus-io/nostrdb/pull/11.diff", 3553 "patch_url": "https://github.com/damus-io/nostrdb/pull/11.patch", 3554 "merged_at": null 3555 }, 3556 "body": "Probably fixes #10 ", 3557 "reactions": { 3558 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/reactions", 3559 "total_count": 0, 3560 "+1": 0, 3561 "-1": 0, 3562 "laugh": 0, 3563 "hooray": 0, 3564 "confused": 0, 3565 "heart": 0, 3566 "rocket": 0, 3567 "eyes": 0 3568 }, 3569 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/timeline", 3570 "performed_via_github_app": null, 3571 "state_reason": null 3572 }, 3573 "comment": { 3574 "user": "geeknik", 3575 "created_at": "2023-08-13T14:51:23Z", 3576 "updated_at": "2023-08-13T14:51:23Z", 3577 "body": "Confirmed locally this fixes the crashes I was seeing. 🤙🏻" 3578 } 3579 }, 3580 { 3581 "issue": { 3582 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11", 3583 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3584 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/labels{/name}", 3585 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/comments", 3586 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/events", 3587 "html_url": "https://github.com/damus-io/nostrdb/pull/11", 3588 "id": 1848619150, 3589 "node_id": "PR_kwDOJ9k5Is5X0kl7", 3590 "number": 11, 3591 "title": "Update hex.h", 3592 "user": { 3593 "login": "geeknik", 3594 "id": 466878, 3595 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3596 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3597 "gravatar_id": "", 3598 "url": "https://api.github.com/users/geeknik", 3599 "html_url": "https://github.com/geeknik", 3600 "followers_url": "https://api.github.com/users/geeknik/followers", 3601 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3602 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3603 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3604 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3605 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3606 "repos_url": "https://api.github.com/users/geeknik/repos", 3607 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3608 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3609 "type": "User", 3610 "site_admin": false 3611 }, 3612 "labels": [], 3613 "state": "open", 3614 "locked": false, 3615 "assignee": null, 3616 "assignees": [], 3617 "milestone": null, 3618 "comments": 2, 3619 "created_at": "2023-08-13T14:35:46Z", 3620 "updated_at": "2023-12-04T22:39:25Z", 3621 "closed_at": null, 3622 "author_association": "CONTRIBUTOR", 3623 "active_lock_reason": null, 3624 "draft": false, 3625 "pull_request": { 3626 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/11", 3627 "html_url": "https://github.com/damus-io/nostrdb/pull/11", 3628 "diff_url": "https://github.com/damus-io/nostrdb/pull/11.diff", 3629 "patch_url": "https://github.com/damus-io/nostrdb/pull/11.patch", 3630 "merged_at": null 3631 }, 3632 "body": "Probably fixes #10 ", 3633 "reactions": { 3634 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/reactions", 3635 "total_count": 0, 3636 "+1": 0, 3637 "-1": 0, 3638 "laugh": 0, 3639 "hooray": 0, 3640 "confused": 0, 3641 "heart": 0, 3642 "rocket": 0, 3643 "eyes": 0 3644 }, 3645 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/timeline", 3646 "performed_via_github_app": null, 3647 "state_reason": null 3648 }, 3649 "comment": { 3650 "user": "jb55", 3651 "created_at": "2023-08-16T17:22:52Z", 3652 "updated_at": "2023-08-16T17:22:52Z", 3653 "body": "On Sun, Aug 13, 2023 at 07:51:33AM -0700, geeknik wrote:\n>Confirmed locally this fixes the crashes I was seeing. 🤙🏻\n\ngreat catch\n" 3654 } 3655 }, 3656 { 3657 "issue": { 3658 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/10", 3659 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3660 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/labels{/name}", 3661 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/comments", 3662 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/events", 3663 "html_url": "https://github.com/damus-io/nostrdb/issues/10", 3664 "id": 1848617435, 3665 "node_id": "I_kwDOJ9k5Is5uL6nb", 3666 "number": 10, 3667 "title": "Global buffer overflow in char_to_hex()", 3668 "user": { 3669 "login": "geeknik", 3670 "id": 466878, 3671 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3672 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3673 "gravatar_id": "", 3674 "url": "https://api.github.com/users/geeknik", 3675 "html_url": "https://github.com/geeknik", 3676 "followers_url": "https://api.github.com/users/geeknik/followers", 3677 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3678 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3679 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3680 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3681 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3682 "repos_url": "https://api.github.com/users/geeknik/repos", 3683 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3684 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3685 "type": "User", 3686 "site_admin": false 3687 }, 3688 "labels": [], 3689 "state": "closed", 3690 "locked": false, 3691 "assignee": null, 3692 "assignees": [], 3693 "milestone": null, 3694 "comments": 0, 3695 "created_at": "2023-08-13T14:31:14Z", 3696 "updated_at": "2023-08-18T15:42:15Z", 3697 "closed_at": "2023-08-18T15:42:15Z", 3698 "author_association": "CONTRIBUTOR", 3699 "active_lock_reason": null, 3700 "body": "This error is occurring because the hex_table array is being accessed with an index that is outside its bounds.\r\n\r\n```\r\n==34840==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00000038f47f at pc 0x000000512353 bp 0x7ff980f5b050 sp 0x7ff980f5b048\r\nREAD of size 1 at 0x00000038f47f thread T2\r\n #0 0x512352 in char_to_hex /root/nostrdb/./hex.h:18:6\r\n #1 0x512352 in hex_decode /root/nostrdb/./hex.h:31:37\r\n #2 0x512352 in ndb_ingester_json_controller /root/nostrdb/nostrdb.c:317:2\r\n #3 0x512cf1 in ndb_json_parser_parse /root/nostrdb/nostrdb.c:1046:11\r\n #4 0x512cf1 in ndb_ws_event_from_json /root/nostrdb/nostrdb.c:1621:13\r\n #5 0x500597 in ndb_ingester_process_event /root/nostrdb/nostrdb.c:386:3\r\n #6 0x500597 in ndb_ingester_thread /root/nostrdb/nostrdb.c:673:9\r\n #7 0x7ff98926c608 in start_thread /build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:477:8\r\n #8 0x7ff989017132 in clone /build/glibc-SzIz7B/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95\r\n\r\n0x00000038f47f is located 1 bytes to the left of global variable 'hex_table' defined in './hex.h:7:19' (0x38f480) of size 256\r\n0x00000038f47f is located 60 bytes to the right of global variable '<string literal>' defined in 'nostrdb.c:1091:48' (0x38f440) of size 3\r\n '<string literal>' is ascii string '\\t'\r\nSUMMARY: AddressSanitizer: global-buffer-overflow /root/nostrdb/./hex.h:18:6 in char_to_hex\r\n```\r\n\r\n```\r\nstatic inline int char_to_hex(unsigned char *val, int c)\r\n{\r\n\tif (hex_table[(int)c] || c == '0') {\r\n\t\t*val = hex_table[c];\r\n\t\treturn 1;\r\n\t}\r\n\treturn 0;\r\n}\r\n```\r\n\r\nIf I'm reading the code correctly, `c` is being used as an index into `hex_table`, but there is no guarantee that `c` is within the valid range of indices for `hex_table`. Since `hex_table` has 256 elements, valid indices are in the range `[0, 255]`. If `c` is outside this range, it will result in undefined behavior, such as the buffer overflow indicated above.\r\n\r\nHere's a base64 representation of the bad data which triggers this:\r\n```\r\nImlkIiIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDD/MDAwMDAw\r\nMDAwMDAwMDAwMDAwIg==\r\n```\r\n", 3701 "reactions": { 3702 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/reactions", 3703 "total_count": 0, 3704 "+1": 0, 3705 "-1": 0, 3706 "laugh": 0, 3707 "hooray": 0, 3708 "confused": 0, 3709 "heart": 0, 3710 "rocket": 0, 3711 "eyes": 0 3712 }, 3713 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/timeline", 3714 "performed_via_github_app": null, 3715 "state_reason": "completed" 3716 } 3717 }, 3718 { 3719 "issue": { 3720 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9", 3721 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3722 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/labels{/name}", 3723 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/comments", 3724 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/events", 3725 "html_url": "https://github.com/damus-io/nostrdb/pull/9", 3726 "id": 1848332833, 3727 "node_id": "PR_kwDOJ9k5Is5XzpO5", 3728 "number": 9, 3729 "title": "Update threadpool.h", 3730 "user": { 3731 "login": "geeknik", 3732 "id": 466878, 3733 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3734 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3735 "gravatar_id": "", 3736 "url": "https://api.github.com/users/geeknik", 3737 "html_url": "https://github.com/geeknik", 3738 "followers_url": "https://api.github.com/users/geeknik/followers", 3739 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3740 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3741 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3742 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3743 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3744 "repos_url": "https://api.github.com/users/geeknik/repos", 3745 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3746 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3747 "type": "User", 3748 "site_admin": false 3749 }, 3750 "labels": [], 3751 "state": "closed", 3752 "locked": false, 3753 "assignee": null, 3754 "assignees": [], 3755 "milestone": null, 3756 "comments": 2, 3757 "created_at": "2023-08-13T01:07:14Z", 3758 "updated_at": "2023-12-01T22:04:04Z", 3759 "closed_at": "2023-12-01T22:04:04Z", 3760 "author_association": "CONTRIBUTOR", 3761 "active_lock_reason": null, 3762 "draft": false, 3763 "pull_request": { 3764 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/9", 3765 "html_url": "https://github.com/damus-io/nostrdb/pull/9", 3766 "diff_url": "https://github.com/damus-io/nostrdb/pull/9.diff", 3767 "patch_url": "https://github.com/damus-io/nostrdb/pull/9.patch", 3768 "merged_at": null 3769 }, 3770 "body": "Prevent creation of a thread pool with zero threads", 3771 "reactions": { 3772 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/reactions", 3773 "total_count": 0, 3774 "+1": 0, 3775 "-1": 0, 3776 "laugh": 0, 3777 "hooray": 0, 3778 "confused": 0, 3779 "heart": 0, 3780 "rocket": 0, 3781 "eyes": 0 3782 }, 3783 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/timeline", 3784 "performed_via_github_app": null, 3785 "state_reason": null 3786 } 3787 }, 3788 { 3789 "issue": { 3790 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9", 3791 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3792 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/labels{/name}", 3793 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/comments", 3794 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/events", 3795 "html_url": "https://github.com/damus-io/nostrdb/pull/9", 3796 "id": 1848332833, 3797 "node_id": "PR_kwDOJ9k5Is5XzpO5", 3798 "number": 9, 3799 "title": "Update threadpool.h", 3800 "user": { 3801 "login": "geeknik", 3802 "id": 466878, 3803 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3804 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3805 "gravatar_id": "", 3806 "url": "https://api.github.com/users/geeknik", 3807 "html_url": "https://github.com/geeknik", 3808 "followers_url": "https://api.github.com/users/geeknik/followers", 3809 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3810 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3811 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3812 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3813 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3814 "repos_url": "https://api.github.com/users/geeknik/repos", 3815 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3816 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3817 "type": "User", 3818 "site_admin": false 3819 }, 3820 "labels": [], 3821 "state": "closed", 3822 "locked": false, 3823 "assignee": null, 3824 "assignees": [], 3825 "milestone": null, 3826 "comments": 2, 3827 "created_at": "2023-08-13T01:07:14Z", 3828 "updated_at": "2023-12-01T22:04:04Z", 3829 "closed_at": "2023-12-01T22:04:04Z", 3830 "author_association": "CONTRIBUTOR", 3831 "active_lock_reason": null, 3832 "draft": false, 3833 "pull_request": { 3834 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/9", 3835 "html_url": "https://github.com/damus-io/nostrdb/pull/9", 3836 "diff_url": "https://github.com/damus-io/nostrdb/pull/9.diff", 3837 "patch_url": "https://github.com/damus-io/nostrdb/pull/9.patch", 3838 "merged_at": null 3839 }, 3840 "body": "Prevent creation of a thread pool with zero threads", 3841 "reactions": { 3842 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/reactions", 3843 "total_count": 0, 3844 "+1": 0, 3845 "-1": 0, 3846 "laugh": 0, 3847 "hooray": 0, 3848 "confused": 0, 3849 "heart": 0, 3850 "rocket": 0, 3851 "eyes": 0 3852 }, 3853 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/timeline", 3854 "performed_via_github_app": null, 3855 "state_reason": null 3856 }, 3857 "comment": { 3858 "user": "jb55", 3859 "created_at": "2023-08-16T17:24:13Z", 3860 "updated_at": "2023-08-16T17:24:13Z", 3861 "body": "On Sat, Aug 12, 2023 at 06:07:26PM -0700, geeknik wrote:\n>Prevent creation of a thread pool with zero threads\n>You can view, comment on, or merge this pull request online at:\n\nmakes sense\n" 3862 } 3863 }, 3864 { 3865 "issue": { 3866 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9", 3867 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3868 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/labels{/name}", 3869 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/comments", 3870 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/events", 3871 "html_url": "https://github.com/damus-io/nostrdb/pull/9", 3872 "id": 1848332833, 3873 "node_id": "PR_kwDOJ9k5Is5XzpO5", 3874 "number": 9, 3875 "title": "Update threadpool.h", 3876 "user": { 3877 "login": "geeknik", 3878 "id": 466878, 3879 "node_id": "MDQ6VXNlcjQ2Njg3OA==", 3880 "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4", 3881 "gravatar_id": "", 3882 "url": "https://api.github.com/users/geeknik", 3883 "html_url": "https://github.com/geeknik", 3884 "followers_url": "https://api.github.com/users/geeknik/followers", 3885 "following_url": "https://api.github.com/users/geeknik/following{/other_user}", 3886 "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}", 3887 "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}", 3888 "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions", 3889 "organizations_url": "https://api.github.com/users/geeknik/orgs", 3890 "repos_url": "https://api.github.com/users/geeknik/repos", 3891 "events_url": "https://api.github.com/users/geeknik/events{/privacy}", 3892 "received_events_url": "https://api.github.com/users/geeknik/received_events", 3893 "type": "User", 3894 "site_admin": false 3895 }, 3896 "labels": [], 3897 "state": "closed", 3898 "locked": false, 3899 "assignee": null, 3900 "assignees": [], 3901 "milestone": null, 3902 "comments": 2, 3903 "created_at": "2023-08-13T01:07:14Z", 3904 "updated_at": "2023-12-01T22:04:04Z", 3905 "closed_at": "2023-12-01T22:04:04Z", 3906 "author_association": "CONTRIBUTOR", 3907 "active_lock_reason": null, 3908 "draft": false, 3909 "pull_request": { 3910 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/9", 3911 "html_url": "https://github.com/damus-io/nostrdb/pull/9", 3912 "diff_url": "https://github.com/damus-io/nostrdb/pull/9.diff", 3913 "patch_url": "https://github.com/damus-io/nostrdb/pull/9.patch", 3914 "merged_at": null 3915 }, 3916 "body": "Prevent creation of a thread pool with zero threads", 3917 "reactions": { 3918 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/reactions", 3919 "total_count": 0, 3920 "+1": 0, 3921 "-1": 0, 3922 "laugh": 0, 3923 "hooray": 0, 3924 "confused": 0, 3925 "heart": 0, 3926 "rocket": 0, 3927 "eyes": 0 3928 }, 3929 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/timeline", 3930 "performed_via_github_app": null, 3931 "state_reason": null 3932 }, 3933 "comment": { 3934 "user": "geeknik", 3935 "created_at": "2023-08-18T17:21:22Z", 3936 "updated_at": "2023-08-18T17:21:22Z", 3937 "body": "Interesting. The FPE (division by zero) error went away after I added my check. " 3938 } 3939 }, 3940 { 3941 "issue": { 3942 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/8", 3943 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 3944 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/labels{/name}", 3945 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/comments", 3946 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/events", 3947 "html_url": "https://github.com/damus-io/nostrdb/issues/8", 3948 "id": 1842131935, 3949 "node_id": "I_kwDOJ9k5Is5tzLPf", 3950 "number": 8, 3951 "title": "Threadpool", 3952 "user": { 3953 "login": "jb55", 3954 "id": 45598, 3955 "node_id": "MDQ6VXNlcjQ1NTk4", 3956 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 3957 "gravatar_id": "", 3958 "url": "https://api.github.com/users/jb55", 3959 "html_url": "https://github.com/jb55", 3960 "followers_url": "https://api.github.com/users/jb55/followers", 3961 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 3962 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 3963 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 3964 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 3965 "organizations_url": "https://api.github.com/users/jb55/orgs", 3966 "repos_url": "https://api.github.com/users/jb55/repos", 3967 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 3968 "received_events_url": "https://api.github.com/users/jb55/received_events", 3969 "type": "User", 3970 "site_admin": false 3971 }, 3972 "labels": [], 3973 "state": "closed", 3974 "locked": false, 3975 "assignee": null, 3976 "assignees": [], 3977 "milestone": null, 3978 "comments": 0, 3979 "created_at": "2023-08-08T21:32:56Z", 3980 "updated_at": "2023-08-10T15:04:37Z", 3981 "closed_at": "2023-08-10T15:04:37Z", 3982 "author_association": "CONTRIBUTOR", 3983 "active_lock_reason": null, 3984 "body": "ingester threadpool... why not! let's go fasttt", 3985 "reactions": { 3986 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/reactions", 3987 "total_count": 0, 3988 "+1": 0, 3989 "-1": 0, 3990 "laugh": 0, 3991 "hooray": 0, 3992 "confused": 0, 3993 "heart": 0, 3994 "rocket": 0, 3995 "eyes": 0 3996 }, 3997 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/timeline", 3998 "performed_via_github_app": null, 3999 "state_reason": "completed" 4000 } 4001 }, 4002 { 4003 "issue": { 4004 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/7", 4005 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4006 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/labels{/name}", 4007 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/comments", 4008 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/events", 4009 "html_url": "https://github.com/damus-io/nostrdb/issues/7", 4010 "id": 1837247926, 4011 "node_id": "I_kwDOJ9k5Is5tgi22", 4012 "number": 7, 4013 "title": "Initial LMDB integration", 4014 "user": { 4015 "login": "jb55", 4016 "id": 45598, 4017 "node_id": "MDQ6VXNlcjQ1NTk4", 4018 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4019 "gravatar_id": "", 4020 "url": "https://api.github.com/users/jb55", 4021 "html_url": "https://github.com/jb55", 4022 "followers_url": "https://api.github.com/users/jb55/followers", 4023 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4024 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4025 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4026 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4027 "organizations_url": "https://api.github.com/users/jb55/orgs", 4028 "repos_url": "https://api.github.com/users/jb55/repos", 4029 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4030 "received_events_url": "https://api.github.com/users/jb55/received_events", 4031 "type": "User", 4032 "site_admin": false 4033 }, 4034 "labels": [], 4035 "state": "closed", 4036 "locked": false, 4037 "assignee": null, 4038 "assignees": [], 4039 "milestone": null, 4040 "comments": 0, 4041 "created_at": "2023-08-04T19:36:42Z", 4042 "updated_at": "2023-08-04T19:38:24Z", 4043 "closed_at": "2023-08-04T19:38:24Z", 4044 "author_association": "CONTRIBUTOR", 4045 "active_lock_reason": null, 4046 "body": "\r\n```[tasklist]\r\n- [ ] #4 \r\n```", 4047 "reactions": { 4048 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/reactions", 4049 "total_count": 0, 4050 "+1": 0, 4051 "-1": 0, 4052 "laugh": 0, 4053 "hooray": 0, 4054 "confused": 0, 4055 "heart": 0, 4056 "rocket": 0, 4057 "eyes": 0 4058 }, 4059 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/timeline", 4060 "performed_via_github_app": null, 4061 "state_reason": "completed" 4062 } 4063 }, 4064 { 4065 "issue": { 4066 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/6", 4067 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4068 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/labels{/name}", 4069 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/comments", 4070 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/events", 4071 "html_url": "https://github.com/damus-io/nostrdb/issues/6", 4072 "id": 1837230169, 4073 "node_id": "I_kwDOJ9k5Is5tgehZ", 4074 "number": 6, 4075 "title": "Clustered created_at indices", 4076 "user": { 4077 "login": "jb55", 4078 "id": 45598, 4079 "node_id": "MDQ6VXNlcjQ1NTk4", 4080 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4081 "gravatar_id": "", 4082 "url": "https://api.github.com/users/jb55", 4083 "html_url": "https://github.com/jb55", 4084 "followers_url": "https://api.github.com/users/jb55/followers", 4085 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4086 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4087 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4088 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4089 "organizations_url": "https://api.github.com/users/jb55/orgs", 4090 "repos_url": "https://api.github.com/users/jb55/repos", 4091 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4092 "received_events_url": "https://api.github.com/users/jb55/received_events", 4093 "type": "User", 4094 "site_admin": false 4095 }, 4096 "labels": [], 4097 "state": "closed", 4098 "locked": false, 4099 "assignee": null, 4100 "assignees": [], 4101 "milestone": { 4102 "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1", 4103 "html_url": "https://github.com/damus-io/nostrdb/milestone/1", 4104 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1/labels", 4105 "id": 9744457, 4106 "node_id": "MI_kwDOJ9k5Is4AlLBJ", 4107 "number": 1, 4108 "title": "Initial LMDB Database", 4109 "description": "The initial implementation of the nostrdb database. Implement LMDB and get some basic queries working.", 4110 "creator": { 4111 "login": "jb55", 4112 "id": 45598, 4113 "node_id": "MDQ6VXNlcjQ1NTk4", 4114 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4115 "gravatar_id": "", 4116 "url": "https://api.github.com/users/jb55", 4117 "html_url": "https://github.com/jb55", 4118 "followers_url": "https://api.github.com/users/jb55/followers", 4119 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4120 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4121 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4122 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4123 "organizations_url": "https://api.github.com/users/jb55/orgs", 4124 "repos_url": "https://api.github.com/users/jb55/repos", 4125 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4126 "received_events_url": "https://api.github.com/users/jb55/received_events", 4127 "type": "User", 4128 "site_admin": false 4129 }, 4130 "open_issues": 0, 4131 "closed_issues": 2, 4132 "state": "open", 4133 "created_at": "2023-08-04T19:16:58Z", 4134 "updated_at": "2023-08-31T19:50:55Z", 4135 "due_on": null, 4136 "closed_at": null 4137 }, 4138 "comments": 1, 4139 "created_at": "2023-08-04T19:19:29Z", 4140 "updated_at": "2023-08-31T19:50:56Z", 4141 "closed_at": "2023-08-31T19:50:55Z", 4142 "author_association": "CONTRIBUTOR", 4143 "active_lock_reason": null, 4144 "body": "For efficient since/until scans\r\n\r\nLMDB stores keys in an ordered fashion, so if we cluster keys like <created_at><id> and <id> then we can do quick lookups by date and id.", 4145 "reactions": { 4146 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/reactions", 4147 "total_count": 0, 4148 "+1": 0, 4149 "-1": 0, 4150 "laugh": 0, 4151 "hooray": 0, 4152 "confused": 0, 4153 "heart": 0, 4154 "rocket": 0, 4155 "eyes": 0 4156 }, 4157 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/timeline", 4158 "performed_via_github_app": null, 4159 "state_reason": "completed" 4160 } 4161 }, 4162 { 4163 "issue": { 4164 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/6", 4165 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4166 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/labels{/name}", 4167 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/comments", 4168 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/events", 4169 "html_url": "https://github.com/damus-io/nostrdb/issues/6", 4170 "id": 1837230169, 4171 "node_id": "I_kwDOJ9k5Is5tgehZ", 4172 "number": 6, 4173 "title": "Clustered created_at indices", 4174 "user": { 4175 "login": "jb55", 4176 "id": 45598, 4177 "node_id": "MDQ6VXNlcjQ1NTk4", 4178 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4179 "gravatar_id": "", 4180 "url": "https://api.github.com/users/jb55", 4181 "html_url": "https://github.com/jb55", 4182 "followers_url": "https://api.github.com/users/jb55/followers", 4183 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4184 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4185 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4186 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4187 "organizations_url": "https://api.github.com/users/jb55/orgs", 4188 "repos_url": "https://api.github.com/users/jb55/repos", 4189 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4190 "received_events_url": "https://api.github.com/users/jb55/received_events", 4191 "type": "User", 4192 "site_admin": false 4193 }, 4194 "labels": [], 4195 "state": "closed", 4196 "locked": false, 4197 "assignee": null, 4198 "assignees": [], 4199 "milestone": { 4200 "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1", 4201 "html_url": "https://github.com/damus-io/nostrdb/milestone/1", 4202 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1/labels", 4203 "id": 9744457, 4204 "node_id": "MI_kwDOJ9k5Is4AlLBJ", 4205 "number": 1, 4206 "title": "Initial LMDB Database", 4207 "description": "The initial implementation of the nostrdb database. Implement LMDB and get some basic queries working.", 4208 "creator": { 4209 "login": "jb55", 4210 "id": 45598, 4211 "node_id": "MDQ6VXNlcjQ1NTk4", 4212 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4213 "gravatar_id": "", 4214 "url": "https://api.github.com/users/jb55", 4215 "html_url": "https://github.com/jb55", 4216 "followers_url": "https://api.github.com/users/jb55/followers", 4217 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4218 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4219 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4220 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4221 "organizations_url": "https://api.github.com/users/jb55/orgs", 4222 "repos_url": "https://api.github.com/users/jb55/repos", 4223 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4224 "received_events_url": "https://api.github.com/users/jb55/received_events", 4225 "type": "User", 4226 "site_admin": false 4227 }, 4228 "open_issues": 0, 4229 "closed_issues": 2, 4230 "state": "open", 4231 "created_at": "2023-08-04T19:16:58Z", 4232 "updated_at": "2023-08-31T19:50:55Z", 4233 "due_on": null, 4234 "closed_at": null 4235 }, 4236 "comments": 1, 4237 "created_at": "2023-08-04T19:19:29Z", 4238 "updated_at": "2023-08-31T19:50:56Z", 4239 "closed_at": "2023-08-31T19:50:55Z", 4240 "author_association": "CONTRIBUTOR", 4241 "active_lock_reason": null, 4242 "body": "For efficient since/until scans\r\n\r\nLMDB stores keys in an ordered fashion, so if we cluster keys like <created_at><id> and <id> then we can do quick lookups by date and id.", 4243 "reactions": { 4244 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/reactions", 4245 "total_count": 0, 4246 "+1": 0, 4247 "-1": 0, 4248 "laugh": 0, 4249 "hooray": 0, 4250 "confused": 0, 4251 "heart": 0, 4252 "rocket": 0, 4253 "eyes": 0 4254 }, 4255 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/timeline", 4256 "performed_via_github_app": null, 4257 "state_reason": "completed" 4258 }, 4259 "comment": { 4260 "user": "jb55", 4261 "created_at": "2023-08-31T19:50:55Z", 4262 "updated_at": "2023-08-31T19:50:55Z", 4263 "body": "should be done now (this is the tsid thing)" 4264 } 4265 }, 4266 { 4267 "issue": { 4268 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/5", 4269 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4270 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/labels{/name}", 4271 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/comments", 4272 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/events", 4273 "html_url": "https://github.com/damus-io/nostrdb/issues/5", 4274 "id": 1837220692, 4275 "node_id": "I_kwDOJ9k5Is5tgcNU", 4276 "number": 5, 4277 "title": "Initial LMDB integration", 4278 "user": { 4279 "login": "jb55", 4280 "id": 45598, 4281 "node_id": "MDQ6VXNlcjQ1NTk4", 4282 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4283 "gravatar_id": "", 4284 "url": "https://api.github.com/users/jb55", 4285 "html_url": "https://github.com/jb55", 4286 "followers_url": "https://api.github.com/users/jb55/followers", 4287 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4288 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4289 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4290 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4291 "organizations_url": "https://api.github.com/users/jb55/orgs", 4292 "repos_url": "https://api.github.com/users/jb55/repos", 4293 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4294 "received_events_url": "https://api.github.com/users/jb55/received_events", 4295 "type": "User", 4296 "site_admin": false 4297 }, 4298 "labels": [], 4299 "state": "closed", 4300 "locked": false, 4301 "assignee": null, 4302 "assignees": [], 4303 "milestone": null, 4304 "comments": 0, 4305 "created_at": "2023-08-04T19:09:42Z", 4306 "updated_at": "2023-08-04T19:17:07Z", 4307 "closed_at": "2023-08-04T19:17:07Z", 4308 "author_association": "CONTRIBUTOR", 4309 "active_lock_reason": null, 4310 "body": "Setup `struct ndb` to hold db environment.\r\n\r\nInsert data\r\n\r\nGet data out\r\n\r\nyada yada", 4311 "reactions": { 4312 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/reactions", 4313 "total_count": 0, 4314 "+1": 0, 4315 "-1": 0, 4316 "laugh": 0, 4317 "hooray": 0, 4318 "confused": 0, 4319 "heart": 0, 4320 "rocket": 0, 4321 "eyes": 0 4322 }, 4323 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/timeline", 4324 "performed_via_github_app": null, 4325 "state_reason": "completed" 4326 } 4327 }, 4328 { 4329 "issue": { 4330 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/4", 4331 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4332 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/labels{/name}", 4333 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/comments", 4334 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/events", 4335 "html_url": "https://github.com/damus-io/nostrdb/issues/4", 4336 "id": 1837189285, 4337 "node_id": "I_kwDOJ9k5Is5tgUil", 4338 "number": 4, 4339 "title": "Safe queue implementation", 4340 "user": { 4341 "login": "jb55", 4342 "id": 45598, 4343 "node_id": "MDQ6VXNlcjQ1NTk4", 4344 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4345 "gravatar_id": "", 4346 "url": "https://api.github.com/users/jb55", 4347 "html_url": "https://github.com/jb55", 4348 "followers_url": "https://api.github.com/users/jb55/followers", 4349 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4350 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4351 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4352 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4353 "organizations_url": "https://api.github.com/users/jb55/orgs", 4354 "repos_url": "https://api.github.com/users/jb55/repos", 4355 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4356 "received_events_url": "https://api.github.com/users/jb55/received_events", 4357 "type": "User", 4358 "site_admin": false 4359 }, 4360 "labels": [], 4361 "state": "closed", 4362 "locked": false, 4363 "assignee": { 4364 "login": "jb55", 4365 "id": 45598, 4366 "node_id": "MDQ6VXNlcjQ1NTk4", 4367 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4368 "gravatar_id": "", 4369 "url": "https://api.github.com/users/jb55", 4370 "html_url": "https://github.com/jb55", 4371 "followers_url": "https://api.github.com/users/jb55/followers", 4372 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4373 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4374 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4375 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4376 "organizations_url": "https://api.github.com/users/jb55/orgs", 4377 "repos_url": "https://api.github.com/users/jb55/repos", 4378 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4379 "received_events_url": "https://api.github.com/users/jb55/received_events", 4380 "type": "User", 4381 "site_admin": false 4382 }, 4383 "assignees": [ 4384 { 4385 "login": "jb55", 4386 "id": 45598, 4387 "node_id": "MDQ6VXNlcjQ1NTk4", 4388 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4389 "gravatar_id": "", 4390 "url": "https://api.github.com/users/jb55", 4391 "html_url": "https://github.com/jb55", 4392 "followers_url": "https://api.github.com/users/jb55/followers", 4393 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4394 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4395 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4396 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4397 "organizations_url": "https://api.github.com/users/jb55/orgs", 4398 "repos_url": "https://api.github.com/users/jb55/repos", 4399 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4400 "received_events_url": "https://api.github.com/users/jb55/received_events", 4401 "type": "User", 4402 "site_admin": false 4403 } 4404 ], 4405 "milestone": { 4406 "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1", 4407 "html_url": "https://github.com/damus-io/nostrdb/milestone/1", 4408 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1/labels", 4409 "id": 9744457, 4410 "node_id": "MI_kwDOJ9k5Is4AlLBJ", 4411 "number": 1, 4412 "title": "Initial LMDB Database", 4413 "description": "The initial implementation of the nostrdb database. Implement LMDB and get some basic queries working.", 4414 "creator": { 4415 "login": "jb55", 4416 "id": 45598, 4417 "node_id": "MDQ6VXNlcjQ1NTk4", 4418 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4419 "gravatar_id": "", 4420 "url": "https://api.github.com/users/jb55", 4421 "html_url": "https://github.com/jb55", 4422 "followers_url": "https://api.github.com/users/jb55/followers", 4423 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4424 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4425 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4426 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4427 "organizations_url": "https://api.github.com/users/jb55/orgs", 4428 "repos_url": "https://api.github.com/users/jb55/repos", 4429 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4430 "received_events_url": "https://api.github.com/users/jb55/received_events", 4431 "type": "User", 4432 "site_admin": false 4433 }, 4434 "open_issues": 0, 4435 "closed_issues": 2, 4436 "state": "open", 4437 "created_at": "2023-08-04T19:16:58Z", 4438 "updated_at": "2023-08-31T19:50:55Z", 4439 "due_on": null, 4440 "closed_at": null 4441 }, 4442 "comments": 1, 4443 "created_at": "2023-08-04T18:38:53Z", 4444 "updated_at": "2023-08-04T23:45:56Z", 4445 "closed_at": "2023-08-04T23:45:55Z", 4446 "author_association": "CONTRIBUTOR", 4447 "active_lock_reason": null, 4448 "body": "We're going to use the same parallellism/concurrency model as strfry, so let's build a protected queue in C", 4449 "reactions": { 4450 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/reactions", 4451 "total_count": 0, 4452 "+1": 0, 4453 "-1": 0, 4454 "laugh": 0, 4455 "hooray": 0, 4456 "confused": 0, 4457 "heart": 0, 4458 "rocket": 0, 4459 "eyes": 0 4460 }, 4461 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/timeline", 4462 "performed_via_github_app": null, 4463 "state_reason": "completed" 4464 } 4465 }, 4466 { 4467 "issue": { 4468 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/4", 4469 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4470 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/labels{/name}", 4471 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/comments", 4472 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/events", 4473 "html_url": "https://github.com/damus-io/nostrdb/issues/4", 4474 "id": 1837189285, 4475 "node_id": "I_kwDOJ9k5Is5tgUil", 4476 "number": 4, 4477 "title": "Safe queue implementation", 4478 "user": { 4479 "login": "jb55", 4480 "id": 45598, 4481 "node_id": "MDQ6VXNlcjQ1NTk4", 4482 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4483 "gravatar_id": "", 4484 "url": "https://api.github.com/users/jb55", 4485 "html_url": "https://github.com/jb55", 4486 "followers_url": "https://api.github.com/users/jb55/followers", 4487 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4488 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4489 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4490 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4491 "organizations_url": "https://api.github.com/users/jb55/orgs", 4492 "repos_url": "https://api.github.com/users/jb55/repos", 4493 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4494 "received_events_url": "https://api.github.com/users/jb55/received_events", 4495 "type": "User", 4496 "site_admin": false 4497 }, 4498 "labels": [], 4499 "state": "closed", 4500 "locked": false, 4501 "assignee": { 4502 "login": "jb55", 4503 "id": 45598, 4504 "node_id": "MDQ6VXNlcjQ1NTk4", 4505 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4506 "gravatar_id": "", 4507 "url": "https://api.github.com/users/jb55", 4508 "html_url": "https://github.com/jb55", 4509 "followers_url": "https://api.github.com/users/jb55/followers", 4510 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4511 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4512 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4513 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4514 "organizations_url": "https://api.github.com/users/jb55/orgs", 4515 "repos_url": "https://api.github.com/users/jb55/repos", 4516 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4517 "received_events_url": "https://api.github.com/users/jb55/received_events", 4518 "type": "User", 4519 "site_admin": false 4520 }, 4521 "assignees": [ 4522 { 4523 "login": "jb55", 4524 "id": 45598, 4525 "node_id": "MDQ6VXNlcjQ1NTk4", 4526 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4527 "gravatar_id": "", 4528 "url": "https://api.github.com/users/jb55", 4529 "html_url": "https://github.com/jb55", 4530 "followers_url": "https://api.github.com/users/jb55/followers", 4531 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4532 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4533 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4534 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4535 "organizations_url": "https://api.github.com/users/jb55/orgs", 4536 "repos_url": "https://api.github.com/users/jb55/repos", 4537 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4538 "received_events_url": "https://api.github.com/users/jb55/received_events", 4539 "type": "User", 4540 "site_admin": false 4541 } 4542 ], 4543 "milestone": { 4544 "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1", 4545 "html_url": "https://github.com/damus-io/nostrdb/milestone/1", 4546 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1/labels", 4547 "id": 9744457, 4548 "node_id": "MI_kwDOJ9k5Is4AlLBJ", 4549 "number": 1, 4550 "title": "Initial LMDB Database", 4551 "description": "The initial implementation of the nostrdb database. Implement LMDB and get some basic queries working.", 4552 "creator": { 4553 "login": "jb55", 4554 "id": 45598, 4555 "node_id": "MDQ6VXNlcjQ1NTk4", 4556 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4557 "gravatar_id": "", 4558 "url": "https://api.github.com/users/jb55", 4559 "html_url": "https://github.com/jb55", 4560 "followers_url": "https://api.github.com/users/jb55/followers", 4561 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4562 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4563 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4564 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4565 "organizations_url": "https://api.github.com/users/jb55/orgs", 4566 "repos_url": "https://api.github.com/users/jb55/repos", 4567 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4568 "received_events_url": "https://api.github.com/users/jb55/received_events", 4569 "type": "User", 4570 "site_admin": false 4571 }, 4572 "open_issues": 0, 4573 "closed_issues": 2, 4574 "state": "open", 4575 "created_at": "2023-08-04T19:16:58Z", 4576 "updated_at": "2023-08-31T19:50:55Z", 4577 "due_on": null, 4578 "closed_at": null 4579 }, 4580 "comments": 1, 4581 "created_at": "2023-08-04T18:38:53Z", 4582 "updated_at": "2023-08-04T23:45:56Z", 4583 "closed_at": "2023-08-04T23:45:55Z", 4584 "author_association": "CONTRIBUTOR", 4585 "active_lock_reason": null, 4586 "body": "We're going to use the same parallellism/concurrency model as strfry, so let's build a protected queue in C", 4587 "reactions": { 4588 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/reactions", 4589 "total_count": 0, 4590 "+1": 0, 4591 "-1": 0, 4592 "laugh": 0, 4593 "hooray": 0, 4594 "confused": 0, 4595 "heart": 0, 4596 "rocket": 0, 4597 "eyes": 0 4598 }, 4599 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/timeline", 4600 "performed_via_github_app": null, 4601 "state_reason": "completed" 4602 }, 4603 "comment": { 4604 "user": "jb55", 4605 "created_at": "2023-08-04T23:45:55Z", 4606 "updated_at": "2023-08-04T23:45:55Z", 4607 "body": "804df0bdf801c583e2f935361ab18edfb4f5261a" 4608 } 4609 }, 4610 { 4611 "issue": { 4612 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/3", 4613 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4614 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/labels{/name}", 4615 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/comments", 4616 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/events", 4617 "html_url": "https://github.com/damus-io/nostrdb/issues/3", 4618 "id": 1828766007, 4619 "node_id": "I_kwDOJ9k5Is5tAME3", 4620 "number": 3, 4621 "title": "Negentropy sync", 4622 "user": { 4623 "login": "jb55", 4624 "id": 45598, 4625 "node_id": "MDQ6VXNlcjQ1NTk4", 4626 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4627 "gravatar_id": "", 4628 "url": "https://api.github.com/users/jb55", 4629 "html_url": "https://github.com/jb55", 4630 "followers_url": "https://api.github.com/users/jb55/followers", 4631 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4632 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4633 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4634 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4635 "organizations_url": "https://api.github.com/users/jb55/orgs", 4636 "repos_url": "https://api.github.com/users/jb55/repos", 4637 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4638 "received_events_url": "https://api.github.com/users/jb55/received_events", 4639 "type": "User", 4640 "site_admin": false 4641 }, 4642 "labels": [], 4643 "state": "open", 4644 "locked": false, 4645 "assignee": null, 4646 "assignees": [], 4647 "milestone": { 4648 "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/2", 4649 "html_url": "https://github.com/damus-io/nostrdb/milestone/2", 4650 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/2/labels", 4651 "id": 9744460, 4652 "node_id": "MI_kwDOJ9k5Is4AlLBM", 4653 "number": 2, 4654 "title": "Negentropy", 4655 "description": "", 4656 "creator": { 4657 "login": "jb55", 4658 "id": 45598, 4659 "node_id": "MDQ6VXNlcjQ1NTk4", 4660 "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4", 4661 "gravatar_id": "", 4662 "url": "https://api.github.com/users/jb55", 4663 "html_url": "https://github.com/jb55", 4664 "followers_url": "https://api.github.com/users/jb55/followers", 4665 "following_url": "https://api.github.com/users/jb55/following{/other_user}", 4666 "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}", 4667 "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}", 4668 "subscriptions_url": "https://api.github.com/users/jb55/subscriptions", 4669 "organizations_url": "https://api.github.com/users/jb55/orgs", 4670 "repos_url": "https://api.github.com/users/jb55/repos", 4671 "events_url": "https://api.github.com/users/jb55/events{/privacy}", 4672 "received_events_url": "https://api.github.com/users/jb55/received_events", 4673 "type": "User", 4674 "site_admin": false 4675 }, 4676 "open_issues": 1, 4677 "closed_issues": 0, 4678 "state": "open", 4679 "created_at": "2023-08-04T19:17:35Z", 4680 "updated_at": "2023-08-04T19:17:42Z", 4681 "due_on": null, 4682 "closed_at": null 4683 }, 4684 "comments": 0, 4685 "created_at": "2023-07-31T09:20:56Z", 4686 "updated_at": "2023-08-04T19:34:58Z", 4687 "closed_at": null, 4688 "author_association": "CONTRIBUTOR", 4689 "active_lock_reason": null, 4690 "body": "Implement negentropy so that we have efficient queries with strfry instances\r\n\r\n```[tasklist]\r\n- [ ] Research\r\n```", 4691 "reactions": { 4692 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/reactions", 4693 "total_count": 1, 4694 "+1": 0, 4695 "-1": 0, 4696 "laugh": 0, 4697 "hooray": 0, 4698 "confused": 0, 4699 "heart": 0, 4700 "rocket": 1, 4701 "eyes": 0 4702 }, 4703 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/timeline", 4704 "performed_via_github_app": null, 4705 "state_reason": null 4706 } 4707 }, 4708 { 4709 "issue": { 4710 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2", 4711 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4712 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}", 4713 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments", 4714 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events", 4715 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 4716 "id": 1823339429, 4717 "node_id": "PR_kwDOJ9k5Is5Wfdqi", 4718 "number": 2, 4719 "title": "Add secp256k1 as dependency library", 4720 "user": { 4721 "login": "pedro-vicente", 4722 "id": 6119070, 4723 "node_id": "MDQ6VXNlcjYxMTkwNzA=", 4724 "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4", 4725 "gravatar_id": "", 4726 "url": "https://api.github.com/users/pedro-vicente", 4727 "html_url": "https://github.com/pedro-vicente", 4728 "followers_url": "https://api.github.com/users/pedro-vicente/followers", 4729 "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}", 4730 "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}", 4731 "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}", 4732 "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions", 4733 "organizations_url": "https://api.github.com/users/pedro-vicente/orgs", 4734 "repos_url": "https://api.github.com/users/pedro-vicente/repos", 4735 "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}", 4736 "received_events_url": "https://api.github.com/users/pedro-vicente/received_events", 4737 "type": "User", 4738 "site_admin": false 4739 }, 4740 "labels": [], 4741 "state": "closed", 4742 "locked": false, 4743 "assignee": null, 4744 "assignees": [], 4745 "milestone": null, 4746 "comments": 4, 4747 "created_at": "2023-07-26T23:12:40Z", 4748 "updated_at": "2024-03-18T06:00:46Z", 4749 "closed_at": "2024-03-18T06:00:46Z", 4750 "author_association": "CONTRIBUTOR", 4751 "active_lock_reason": null, 4752 "draft": false, 4753 "pull_request": { 4754 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2", 4755 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 4756 "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff", 4757 "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch", 4758 "merged_at": null 4759 }, 4760 "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n", 4761 "reactions": { 4762 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions", 4763 "total_count": 0, 4764 "+1": 0, 4765 "-1": 0, 4766 "laugh": 0, 4767 "hooray": 0, 4768 "confused": 0, 4769 "heart": 0, 4770 "rocket": 0, 4771 "eyes": 0 4772 }, 4773 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline", 4774 "performed_via_github_app": null, 4775 "state_reason": null 4776 } 4777 }, 4778 { 4779 "issue": { 4780 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2", 4781 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4782 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}", 4783 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments", 4784 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events", 4785 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 4786 "id": 1823339429, 4787 "node_id": "PR_kwDOJ9k5Is5Wfdqi", 4788 "number": 2, 4789 "title": "Add secp256k1 as dependency library", 4790 "user": { 4791 "login": "pedro-vicente", 4792 "id": 6119070, 4793 "node_id": "MDQ6VXNlcjYxMTkwNzA=", 4794 "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4", 4795 "gravatar_id": "", 4796 "url": "https://api.github.com/users/pedro-vicente", 4797 "html_url": "https://github.com/pedro-vicente", 4798 "followers_url": "https://api.github.com/users/pedro-vicente/followers", 4799 "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}", 4800 "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}", 4801 "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}", 4802 "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions", 4803 "organizations_url": "https://api.github.com/users/pedro-vicente/orgs", 4804 "repos_url": "https://api.github.com/users/pedro-vicente/repos", 4805 "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}", 4806 "received_events_url": "https://api.github.com/users/pedro-vicente/received_events", 4807 "type": "User", 4808 "site_admin": false 4809 }, 4810 "labels": [], 4811 "state": "closed", 4812 "locked": false, 4813 "assignee": null, 4814 "assignees": [], 4815 "milestone": null, 4816 "comments": 4, 4817 "created_at": "2023-07-26T23:12:40Z", 4818 "updated_at": "2024-03-18T06:00:46Z", 4819 "closed_at": "2024-03-18T06:00:46Z", 4820 "author_association": "CONTRIBUTOR", 4821 "active_lock_reason": null, 4822 "draft": false, 4823 "pull_request": { 4824 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2", 4825 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 4826 "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff", 4827 "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch", 4828 "merged_at": null 4829 }, 4830 "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n", 4831 "reactions": { 4832 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions", 4833 "total_count": 0, 4834 "+1": 0, 4835 "-1": 0, 4836 "laugh": 0, 4837 "hooray": 0, 4838 "confused": 0, 4839 "heart": 0, 4840 "rocket": 0, 4841 "eyes": 0 4842 }, 4843 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline", 4844 "performed_via_github_app": null, 4845 "state_reason": null 4846 }, 4847 "comment": { 4848 "user": "jb55", 4849 "created_at": "2023-07-26T23:21:45Z", 4850 "updated_at": "2023-07-26T23:21:45Z", 4851 "body": "great! thank you" 4852 } 4853 }, 4854 { 4855 "issue": { 4856 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2", 4857 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4858 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}", 4859 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments", 4860 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events", 4861 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 4862 "id": 1823339429, 4863 "node_id": "PR_kwDOJ9k5Is5Wfdqi", 4864 "number": 2, 4865 "title": "Add secp256k1 as dependency library", 4866 "user": { 4867 "login": "pedro-vicente", 4868 "id": 6119070, 4869 "node_id": "MDQ6VXNlcjYxMTkwNzA=", 4870 "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4", 4871 "gravatar_id": "", 4872 "url": "https://api.github.com/users/pedro-vicente", 4873 "html_url": "https://github.com/pedro-vicente", 4874 "followers_url": "https://api.github.com/users/pedro-vicente/followers", 4875 "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}", 4876 "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}", 4877 "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}", 4878 "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions", 4879 "organizations_url": "https://api.github.com/users/pedro-vicente/orgs", 4880 "repos_url": "https://api.github.com/users/pedro-vicente/repos", 4881 "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}", 4882 "received_events_url": "https://api.github.com/users/pedro-vicente/received_events", 4883 "type": "User", 4884 "site_admin": false 4885 }, 4886 "labels": [], 4887 "state": "closed", 4888 "locked": false, 4889 "assignee": null, 4890 "assignees": [], 4891 "milestone": null, 4892 "comments": 4, 4893 "created_at": "2023-07-26T23:12:40Z", 4894 "updated_at": "2024-03-18T06:00:46Z", 4895 "closed_at": "2024-03-18T06:00:46Z", 4896 "author_association": "CONTRIBUTOR", 4897 "active_lock_reason": null, 4898 "draft": false, 4899 "pull_request": { 4900 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2", 4901 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 4902 "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff", 4903 "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch", 4904 "merged_at": null 4905 }, 4906 "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n", 4907 "reactions": { 4908 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions", 4909 "total_count": 0, 4910 "+1": 0, 4911 "-1": 0, 4912 "laugh": 0, 4913 "hooray": 0, 4914 "confused": 0, 4915 "heart": 0, 4916 "rocket": 0, 4917 "eyes": 0 4918 }, 4919 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline", 4920 "performed_via_github_app": null, 4921 "state_reason": null 4922 }, 4923 "comment": { 4924 "user": "pedro-vicente", 4925 "created_at": "2023-07-27T16:43:37Z", 4926 "updated_at": "2023-07-27T16:43:37Z", 4927 "body": "The cmake usage is\r\n\r\n```\r\ncmake -S . -B build \r\ncd build\r\ncmake --build .\r\n```\r\n\r\nand this builds target 'configurator' needed to generate 'config.h'\r\n\r\n```\r\nConsolidate compiler generated dependencies of target configurator\r\n[ 4%] Linking C executable configurator\r\n```\r\n\r\n\r\nBut for some reason, on Mac, this target is not built\r\nSo, a solution , is to call it manually , like this\r\n\r\n\r\n```\r\ncmake -S . -B build \r\ncd build\r\ncmake --build . --target configurator\r\ncmake --build .\r\n```\r\n\r\nThis could be put on a README.md file " 4928 } 4929 }, 4930 { 4931 "issue": { 4932 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2", 4933 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 4934 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}", 4935 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments", 4936 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events", 4937 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 4938 "id": 1823339429, 4939 "node_id": "PR_kwDOJ9k5Is5Wfdqi", 4940 "number": 2, 4941 "title": "Add secp256k1 as dependency library", 4942 "user": { 4943 "login": "pedro-vicente", 4944 "id": 6119070, 4945 "node_id": "MDQ6VXNlcjYxMTkwNzA=", 4946 "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4", 4947 "gravatar_id": "", 4948 "url": "https://api.github.com/users/pedro-vicente", 4949 "html_url": "https://github.com/pedro-vicente", 4950 "followers_url": "https://api.github.com/users/pedro-vicente/followers", 4951 "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}", 4952 "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}", 4953 "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}", 4954 "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions", 4955 "organizations_url": "https://api.github.com/users/pedro-vicente/orgs", 4956 "repos_url": "https://api.github.com/users/pedro-vicente/repos", 4957 "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}", 4958 "received_events_url": "https://api.github.com/users/pedro-vicente/received_events", 4959 "type": "User", 4960 "site_admin": false 4961 }, 4962 "labels": [], 4963 "state": "closed", 4964 "locked": false, 4965 "assignee": null, 4966 "assignees": [], 4967 "milestone": null, 4968 "comments": 4, 4969 "created_at": "2023-07-26T23:12:40Z", 4970 "updated_at": "2024-03-18T06:00:46Z", 4971 "closed_at": "2024-03-18T06:00:46Z", 4972 "author_association": "CONTRIBUTOR", 4973 "active_lock_reason": null, 4974 "draft": false, 4975 "pull_request": { 4976 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2", 4977 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 4978 "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff", 4979 "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch", 4980 "merged_at": null 4981 }, 4982 "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n", 4983 "reactions": { 4984 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions", 4985 "total_count": 0, 4986 "+1": 0, 4987 "-1": 0, 4988 "laugh": 0, 4989 "hooray": 0, 4990 "confused": 0, 4991 "heart": 0, 4992 "rocket": 0, 4993 "eyes": 0 4994 }, 4995 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline", 4996 "performed_via_github_app": null, 4997 "state_reason": null 4998 }, 4999 "comment": { 5000 "user": "jb55", 5001 "created_at": "2023-08-21T21:49:29Z", 5002 "updated_at": "2023-08-21T21:49:29Z", 5003 "body": "Looks like all these patches touch the same file, let's just squash them together\n\nAlso, I added LMDB, that might need support as well.\n\n\nOn Wed, Jul 26, 2023 at 09:17:58PM -0400, pvn wrote:\n>\n>Closes: https://github.com/damus-io/nostrdb/pull/2\n>---\n> CMakeLists.txt | 2 +-\n> 1 file changed, 1 insertion(+), 1 deletion(-)\n>\n>diff --git a/CMakeLists.txt b/CMakeLists.txt\n>index a65265b..35c2d8d 100644\n>--- a/CMakeLists.txt\n>+++ b/CMakeLists.txt\n>@@ -1,5 +1,6 @@\n> # cmake -S . -B build\n> # cd build\n>+# cmake --build . --target configurator\n> # cmake --build .\n> # Pedro Vicente\n>\n>@@ -13,7 +14,6 @@ project (nostrdb C)\n>\n> set(CMAKE_FIND_LIBRARY_SUFFIXES \".a\")\n> set(BUILD_SHARED_LIBS OFF)\n>-set(CMAKE_EXE_LINKER_FLAGS \"-static\")\n>\n> include_directories(${CMAKE_SOURCE_DIR}/deps/secp256k1/include)\n> add_subdirectory(${CMAKE_SOURCE_DIR}/deps/secp256k1)\n" 5004 } 5005 }, 5006 { 5007 "issue": { 5008 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2", 5009 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 5010 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}", 5011 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments", 5012 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events", 5013 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 5014 "id": 1823339429, 5015 "node_id": "PR_kwDOJ9k5Is5Wfdqi", 5016 "number": 2, 5017 "title": "Add secp256k1 as dependency library", 5018 "user": { 5019 "login": "pedro-vicente", 5020 "id": 6119070, 5021 "node_id": "MDQ6VXNlcjYxMTkwNzA=", 5022 "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4", 5023 "gravatar_id": "", 5024 "url": "https://api.github.com/users/pedro-vicente", 5025 "html_url": "https://github.com/pedro-vicente", 5026 "followers_url": "https://api.github.com/users/pedro-vicente/followers", 5027 "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}", 5028 "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}", 5029 "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}", 5030 "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions", 5031 "organizations_url": "https://api.github.com/users/pedro-vicente/orgs", 5032 "repos_url": "https://api.github.com/users/pedro-vicente/repos", 5033 "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}", 5034 "received_events_url": "https://api.github.com/users/pedro-vicente/received_events", 5035 "type": "User", 5036 "site_admin": false 5037 }, 5038 "labels": [], 5039 "state": "closed", 5040 "locked": false, 5041 "assignee": null, 5042 "assignees": [], 5043 "milestone": null, 5044 "comments": 4, 5045 "created_at": "2023-07-26T23:12:40Z", 5046 "updated_at": "2024-03-18T06:00:46Z", 5047 "closed_at": "2024-03-18T06:00:46Z", 5048 "author_association": "CONTRIBUTOR", 5049 "active_lock_reason": null, 5050 "draft": false, 5051 "pull_request": { 5052 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2", 5053 "html_url": "https://github.com/damus-io/nostrdb/pull/2", 5054 "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff", 5055 "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch", 5056 "merged_at": null 5057 }, 5058 "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n", 5059 "reactions": { 5060 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions", 5061 "total_count": 0, 5062 "+1": 0, 5063 "-1": 0, 5064 "laugh": 0, 5065 "hooray": 0, 5066 "confused": 0, 5067 "heart": 0, 5068 "rocket": 0, 5069 "eyes": 0 5070 }, 5071 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline", 5072 "performed_via_github_app": null, 5073 "state_reason": null 5074 }, 5075 "comment": { 5076 "user": "pedro-vicente", 5077 "created_at": "2023-08-22T05:49:43Z", 5078 "updated_at": "2023-08-22T05:49:43Z", 5079 "body": ">>> Looks like all these patches touch the same file, let's just squash them together\r\n\r\nYes, it is only 1 file for now, CMakeLists.txt, it seems I did changes in several commits. \r\nI am not that good with GitHub , it seems if you merge the pull request, that's all that is needed to merge.\r\n\r\nOr do I have to do something on my end?\r\n\r\nThanks\r\n" 5080 } 5081 }, 5082 { 5083 "issue": { 5084 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/1", 5085 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 5086 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/labels{/name}", 5087 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/comments", 5088 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/events", 5089 "html_url": "https://github.com/damus-io/nostrdb/pull/1", 5090 "id": 1819199828, 5091 "node_id": "PR_kwDOJ9k5Is5WRe5B", 5092 "number": 1, 5093 "title": "Add a CMake script. Tested in Ubuntu Linux 22.04", 5094 "user": { 5095 "login": "pedro-vicente", 5096 "id": 6119070, 5097 "node_id": "MDQ6VXNlcjYxMTkwNzA=", 5098 "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4", 5099 "gravatar_id": "", 5100 "url": "https://api.github.com/users/pedro-vicente", 5101 "html_url": "https://github.com/pedro-vicente", 5102 "followers_url": "https://api.github.com/users/pedro-vicente/followers", 5103 "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}", 5104 "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}", 5105 "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}", 5106 "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions", 5107 "organizations_url": "https://api.github.com/users/pedro-vicente/orgs", 5108 "repos_url": "https://api.github.com/users/pedro-vicente/repos", 5109 "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}", 5110 "received_events_url": "https://api.github.com/users/pedro-vicente/received_events", 5111 "type": "User", 5112 "site_admin": false 5113 }, 5114 "labels": [], 5115 "state": "closed", 5116 "locked": false, 5117 "assignee": null, 5118 "assignees": [], 5119 "milestone": null, 5120 "comments": 1, 5121 "created_at": "2023-07-24T21:51:35Z", 5122 "updated_at": "2023-07-25T16:19:23Z", 5123 "closed_at": "2023-07-25T16:19:22Z", 5124 "author_association": "CONTRIBUTOR", 5125 "active_lock_reason": null, 5126 "draft": false, 5127 "pull_request": { 5128 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/1", 5129 "html_url": "https://github.com/damus-io/nostrdb/pull/1", 5130 "diff_url": "https://github.com/damus-io/nostrdb/pull/1.diff", 5131 "patch_url": "https://github.com/damus-io/nostrdb/pull/1.patch", 5132 "merged_at": null 5133 }, 5134 "body": null, 5135 "reactions": { 5136 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/reactions", 5137 "total_count": 0, 5138 "+1": 0, 5139 "-1": 0, 5140 "laugh": 0, 5141 "hooray": 0, 5142 "confused": 0, 5143 "heart": 0, 5144 "rocket": 0, 5145 "eyes": 0 5146 }, 5147 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/timeline", 5148 "performed_via_github_app": null, 5149 "state_reason": null 5150 } 5151 }, 5152 { 5153 "issue": { 5154 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/1", 5155 "repository_url": "https://api.github.com/repos/damus-io/nostrdb", 5156 "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/labels{/name}", 5157 "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/comments", 5158 "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/events", 5159 "html_url": "https://github.com/damus-io/nostrdb/pull/1", 5160 "id": 1819199828, 5161 "node_id": "PR_kwDOJ9k5Is5WRe5B", 5162 "number": 1, 5163 "title": "Add a CMake script. Tested in Ubuntu Linux 22.04", 5164 "user": { 5165 "login": "pedro-vicente", 5166 "id": 6119070, 5167 "node_id": "MDQ6VXNlcjYxMTkwNzA=", 5168 "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4", 5169 "gravatar_id": "", 5170 "url": "https://api.github.com/users/pedro-vicente", 5171 "html_url": "https://github.com/pedro-vicente", 5172 "followers_url": "https://api.github.com/users/pedro-vicente/followers", 5173 "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}", 5174 "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}", 5175 "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}", 5176 "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions", 5177 "organizations_url": "https://api.github.com/users/pedro-vicente/orgs", 5178 "repos_url": "https://api.github.com/users/pedro-vicente/repos", 5179 "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}", 5180 "received_events_url": "https://api.github.com/users/pedro-vicente/received_events", 5181 "type": "User", 5182 "site_admin": false 5183 }, 5184 "labels": [], 5185 "state": "closed", 5186 "locked": false, 5187 "assignee": null, 5188 "assignees": [], 5189 "milestone": null, 5190 "comments": 1, 5191 "created_at": "2023-07-24T21:51:35Z", 5192 "updated_at": "2023-07-25T16:19:23Z", 5193 "closed_at": "2023-07-25T16:19:22Z", 5194 "author_association": "CONTRIBUTOR", 5195 "active_lock_reason": null, 5196 "draft": false, 5197 "pull_request": { 5198 "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/1", 5199 "html_url": "https://github.com/damus-io/nostrdb/pull/1", 5200 "diff_url": "https://github.com/damus-io/nostrdb/pull/1.diff", 5201 "patch_url": "https://github.com/damus-io/nostrdb/pull/1.patch", 5202 "merged_at": null 5203 }, 5204 "body": null, 5205 "reactions": { 5206 "url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/reactions", 5207 "total_count": 0, 5208 "+1": 0, 5209 "-1": 0, 5210 "laugh": 0, 5211 "hooray": 0, 5212 "confused": 0, 5213 "heart": 0, 5214 "rocket": 0, 5215 "eyes": 0 5216 }, 5217 "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/timeline", 5218 "performed_via_github_app": null, 5219 "state_reason": null 5220 }, 5221 "comment": { 5222 "user": "jb55", 5223 "created_at": "2023-07-25T15:00:29Z", 5224 "updated_at": "2023-07-25T15:00:29Z", 5225 "body": "thanks! " 5226 } 5227 } 5228 ]