{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":21529845,"defaultBranch":"master","name":"mirrorbits","ownerLogin":"etix","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-07-05T23:15:44.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/38853?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1542795980.0","currentOid":""},"activityList":{"items":[{"before":"31dce703fde889e9b377f720655c8ccb44b54f4e","after":"7164f2c5e6f03e84f34612895ebd8218f741d1da","ref":"refs/heads/master","pushedAt":"2024-04-26T16:57:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"make: don't automatically run protoc-gen-go\n\nThere are multiple issues with the current automatic way:\n\n* By default it protoc-gen-go is updated when make is called\n which changes the dependencies to potentially incompatible\n versions\n* From what I understand \"go get\" in older versions also installed\n the binaries, but that is no longer the case, so it doesn't\n do anything anymore and PROTOC_GEN_GO is never created.\n Instead if will always fall back to the host protoc-gen-go\n* There are multiple protoc-gen-go versions that are incompatible,\n Debian for example ships 1.3 and 1.5 (default), while the .proto\n file is currently only compatible with 1.3\n* If \"go install\" would be used, the makefile would never update\n it again if it existed in $(GOPATH)/bin already\n\nSince there are so many potential pitfalls with the current approach:\n\n* Never call protoc automatically during the build, create a phony\n regen-proto target in the makefile.\n* Use \"go install\" to install protoc-gen-go into $(GOPATH)/bin\n and pin the version to a compatible range.\n\nSee #172","shortMessageHtmlLink":"make: don't automatically run protoc-gen-go"}},{"before":"2a4a34ce50f4e1a38b9818e1e8c3a69def8a9990","after":"31dce703fde889e9b377f720655c8ccb44b54f4e","ref":"refs/heads/master","pushedAt":"2024-04-26T16:57:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Update google.golang.org/grpc to fix the build\n\nStarting with db6fec71fa8bdfdb44007b61f355b4e5d8e2a564 mirrorbits fails to build with:\n\nrpc/rpc.pb.go:1411:12: undefined: grpc.ClientConnInterface\nrpc/rpc.pb.go:1415:16: undefined: grpc.SupportPackageIsVersion6\nrpc/rpc.pb.go:1442:10: undefined: grpc.ClientConnInterface\nrpc/rpc.pb.go:1445:27: undefined: grpc.ClientConnInterface\n\nThis is due to the generated rpc/rpc.pb.go depending on a newer version\nof google.golang.org/grpc.\n\nThis bumps the version to the next minor version that fixes the build,\nto keep the diff small.\n\nFixes #172","shortMessageHtmlLink":"Update google.golang.org/grpc to fix the build"}},{"before":"6dafe509d9ea9ead10f3766d754259e129c32feb","after":"2a4a34ce50f4e1a38b9818e1e8c3a69def8a9990","ref":"refs/heads/master","pushedAt":"2024-04-08T05:19:41.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Document support for If-Modified-Since\n\nReadme is the best doc we have so far","shortMessageHtmlLink":"Document support for If-Modified-Since"}},{"before":"db6fec71fa8bdfdb44007b61f355b4e5d8e2a564","after":"6dafe509d9ea9ead10f3766d754259e129c32feb","ref":"refs/heads/master","pushedAt":"2024-04-08T05:13:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Add a contrib script to delete old mirrorbits stats\n\nOtherwise stats pile up forever, stored in the Redis database, hence\neating precious RAM.\n\nIn practice, the keys MIRROR_${date} and MIRROR_BYTES_${date} don't take\ntoo much space. Each key is a hash, and the number of items in the hash\nis the number of mirrors, so that shouldn't be too big.\n\nHowever, the keys FILE_${date} are more problematic. Each key is a hash,\nbut this time the number of items in the hash is the number of files\nthat were served. For big repositories (think Linux distribution for\nwhich the repo has between 500k to 1 million files), each daily stat can\nbe quite big, so if we keep it all in the database, in the long-term it\nwill really waste a considerable amount of RAM.\n\nIt would be nice if Mirrorbits would provide a command to cleanup the\nold stats. In the meantime, this script should do the job just as well.","shortMessageHtmlLink":"Add a contrib script to delete old mirrorbits stats"}},{"before":"ed0366e41e6f8afbf714e74f3224318e6a403af9","after":"db6fec71fa8bdfdb44007b61f355b4e5d8e2a564","ref":"refs/heads/master","pushedAt":"2024-04-08T05:12:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Add a CLI command to update the geolocation of a mirror (fix #96)\n\nAlso provide a contrib script to make it easy to update the geolocation\nof all the mirrors in one go.","shortMessageHtmlLink":"Add a CLI command to update the geolocation of a mirror (fix #96)"}},{"before":"3fc19f533b6f89b42b82973a8b70fd4174e03168","after":"ed0366e41e6f8afbf714e74f3224318e6a403af9","ref":"refs/heads/master","pushedAt":"2024-04-08T05:10:03.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"New settings SameDownloadInterval.\n\nThis lets admins customize the time interval (in seconds) between which\nthey want to consider 2 range downloads to be the same download.\n\nSetting SameDownloadInterval to 0 disables the same download detection\nlogic (i.e. that every range download counts as a full download, just as\nit used to happen until now).","shortMessageHtmlLink":"New settings SameDownloadInterval."}},{"before":"990d1dca3c48929b1e510765a76115300aaa0f1b","after":"3fc19f533b6f89b42b82973a8b70fd4174e03168","ref":"refs/heads/master","pushedAt":"2024-03-12T23:18:26.000Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"http: Drop useless check for Redis.ErrNil\n\nThis is a follow-up of previous commit, where we added new unit tests\nthat show that GetFileInfo doesn't return Redis.ErrNil.\n\nTherefore we can drop this useless check.\n\nGrepping through the code, there are a few places where GetFileInfo is\ncalled, but it's only in this one place that there was a check for\nRedis.ErrNil.\n\nJust to clarify, in case it's not clear: this commit doesn't change\nmirrorbits' behavior, it really removes a check that never triggered.\nAfter this commit, querying the checksum for a non-existing file still\nreturns 404 \"Not Found\", due to the check `if len(hash) == 0` that comes\na few lines below.","shortMessageHtmlLink":"http: Drop useless check for Redis.ErrNil"}},{"before":"4e34d9b961a56bd669934acf1fd7d2313128a3d5","after":"990d1dca3c48929b1e510765a76115300aaa0f1b","ref":"refs/heads/master","pushedAt":"2024-03-12T07:25:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Reload logs on SIGHUP, in case the LogDir option was modified\n\nHere's the issue: if ever the LogDir option is modified in the\nconfiguration file, sending SIGHUP is not enough to make the change\neffective, and mirrorbits keep using the old LogDir value. In other\nwords: the LogDir config option is not reloaded on SIGHUP.\n\nHow to reproduce: say you have mirrorbits running, and LogDir is\ncommented out. It means mirrorbits doesn't log downloads under the file\n`$LogDir/downloads.log`. Now, edit the configuration, uncomment LogDir,\nsend SIGHUP to mirrorbits, and observe that it has no effect: there is\nstill no file `$LogDir/downloads.log`.\n\nI consider it a bug, even though a minor one, just a papercut.\n\nThis commit fixes it by always reloading the logs on SIGHUP, thus making\nsure that, if ever LogDir was modified, the change is taken into\naccount.","shortMessageHtmlLink":"Reload logs on SIGHUP, in case the LogDir option was modified"}},{"before":"ef6d09915cd922cef4ad5cfa5e8e228609b664d3","after":"4e34d9b961a56bd669934acf1fd7d2313128a3d5","ref":"refs/heads/master","pushedAt":"2024-02-03T14:16:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"contrib: Update bash completion for commands reload, upgrade and version\n\nThe -help flag for those commands was added in\n1fe530495bac08e34e0fdae0aa44e54e511f62fb","shortMessageHtmlLink":"contrib: Update bash completion for commands reload, upgrade and version"}},{"before":"b64284f37f3022da31288b7ed9c9998e902e471c","after":"ef6d09915cd922cef4ad5cfa5e8e228609b664d3","ref":"refs/heads/master","pushedAt":"2024-02-03T08:35:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Switch to gopkg.in/yaml.v3\n\nThe main reason to switch (apart from keeping dependencies up-to-date)\nis the default behaviour for line wrapping. In yaml.v2, the default was\nline wrapping after 80 characters. In yaml.v3, no line wrapping by\ndefault.\n\nFor mirrorbits, line wrapping manifests itself in the `show` and `edit`\ncommands. It's an issue, in the sense that it makes it difficult for\nscripts to interact with those commands, since long values might spread\nover several lines. For example, parsing the output of `mirrorbits show`\nwith `grep` is error prone because of line wrapping.\n\nThis commit bumps the build depencency gopkg.in/yaml from v2 to v3, thus\ndisabling line wrapping in yaml output.\n\nCloses: #153","shortMessageHtmlLink":"Switch to gopkg.in/yaml.v3"}},{"before":"15ebe581de8b2fcb4daf3954b52417b0d1aa6050","after":"b64284f37f3022da31288b7ed9c9998e902e471c","ref":"refs/heads/master","pushedAt":"2024-02-03T08:34:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"pubsub: Don't drop messages\n\nAs stated in the code explicitly, mirrorbits might drop some messages\nwhen the channel is full (at the moment it's a buffered channel of size\n10).\n\nI don't know _why_ this behaviour. It's been like this forever, since\ninitial commit ebaacce44180c17075f216f8635cf92a6739522e, but at the time\nthere was no buffered channels, so maybe there was good reasons that\ndon't apply anymore?\n\nWhat I observe in practice is that, indeed, sometimes the channel is\nfull, and mirrorbits does as instructed: it doesn't wait for the\nlistener to consume the message, instead it just drop it.\n\nI added some debug logs, did a quick run, and observed that, after a\nmirror scan returned, 7% of the messages were dropped.\n\nMessages being dropped means that the LRU cache might not be notified\nwhen some entries are updated in the database, hence entries are not\nevicted from the cache. That leads to subtle bugs where mirrorbits has\nwrong information in the cache for a certain amount of time.\n\nIf the machine is under load, it might go un-noticed, as entries don't\nstay in the LRU cache for long (I suppose).\n\nHowever, for cases where there's no load (say testing), outdated entries\nmight remain in the LRU cache forever, basically until mirrorbits is\nrestarted, as was reported at\nhttps://github.com/etix/mirrorbits/issues/114.\n\nThis commit seems to fix it, by asking mirrorbits to block until it can\nsend messages on the channel, instead of dropping it.","shortMessageHtmlLink":"pubsub: Don't drop messages"}},{"before":"1b0b02c5ecce1e434efda008b0f5d3802c1e5f93","after":"15ebe581de8b2fcb4daf3954b52417b0d1aa6050","ref":"refs/heads/master","pushedAt":"2024-02-03T08:33:37.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Fix typo in the 'mirrorbits reload' error message","shortMessageHtmlLink":"Fix typo in the 'mirrorbits reload' error message"}},{"before":"5d5512a82c6ec48269e72d28f73e962097ba264e","after":"1b0b02c5ecce1e434efda008b0f5d3802c1e5f93","ref":"refs/heads/master","pushedAt":"2024-02-02T16:42:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"contrib: Add bash completion","shortMessageHtmlLink":"contrib: Add bash completion"}},{"before":"0d00d9ed9693a27df22bda108fa1608de59ed31b","after":"5d5512a82c6ec48269e72d28f73e962097ba264e","ref":"refs/heads/master","pushedAt":"2023-12-11T07:47:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"mirrorlist: Better display for files that were not scanned yet\n\nAs reported in https://github.com/etix/mirrorbits/issues/114, the\nmirrorlist page shows information that is rather confusing when a file\nis 1) present on the local repo but 2) has not been scanned yet.\n\nThis commit aims (and hopefully succeeds) at improving the situation.","shortMessageHtmlLink":"mirrorlist: Better display for files that were not scanned yet"}},{"before":"0318e9b1e11a97558e0e03678f8df32fd995a529","after":"0d00d9ed9693a27df22bda108fa1608de59ed31b","ref":"refs/heads/master","pushedAt":"2023-11-12T18:18:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"contrib: Add a logrotate config file\n\nCf. #126, better late than never...","shortMessageHtmlLink":"contrib: Add a logrotate config file"}},{"before":"a0df8a24df7bb3351dc15afc0ea4ba71b8696144","after":"0318e9b1e11a97558e0e03678f8df32fd995a529","ref":"refs/heads/master","pushedAt":"2023-11-07T14:06:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"HTTPS required for MaxMind downloads\n\nMaxMind will be requiring HTTPS for all database download requests starting in March 2024.\r\n\r\nSee [this release note](https://dev.maxmind.com/geoip/release-notes/2023#api-policies---temporary-enforcement-on-october-17-2023).","shortMessageHtmlLink":"HTTPS required for MaxMind downloads"}},{"before":"9d80d387098dd7279a1ae1166a90ca06d9b4c3cc","after":"a0df8a24df7bb3351dc15afc0ea4ba71b8696144","ref":"refs/heads/master","pushedAt":"2023-11-07T14:03:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Add another production ready example\n\n+ fix typo","shortMessageHtmlLink":"Add another production ready example"}},{"before":"02631da70b4463e8ae237a0495720ce25681e574","after":"9d80d387098dd7279a1ae1166a90ca06d9b4c3cc","ref":"refs/heads/master","pushedAt":"2023-11-07T13:58:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Do not list disabled mirrors as down\n\nIt was mentioned in issue #125 that it is confusing if mirrors that are\ndisabled are listed as down. Therefore, \"mirrorbits list -down\" meets\nuser expectations better if it does not list disabled mirrors as down.\nAs a result, the mirror categories disabled and down do no longer\nintersect.","shortMessageHtmlLink":"Do not list disabled mirrors as down"}},{"before":"29733b5068ab79df65a5f2adf2d3a1bbed85bd17","after":"02631da70b4463e8ae237a0495720ce25681e574","ref":"refs/heads/master","pushedAt":"2023-10-30T14:35:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"README: fix the IRC server.","shortMessageHtmlLink":"README: fix the IRC server."}},{"before":"52236245084c36ff276360802e4e37c0872e3d29","after":"29733b5068ab79df65a5f2adf2d3a1bbed85bd17","ref":"refs/heads/master","pushedAt":"2023-10-30T14:34:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"README: Endless OS still uses Mirrorbits\n\nProof: https://images-dl.endlessm.com/release/?mirrorstats\n\nWe were removed in 07bb318287daaac8f44c75428ad992163c6d1d0b for unknown\nreasons.","shortMessageHtmlLink":"README: Endless OS still uses Mirrorbits"}},{"before":"9189dc7c20b389b5921de4fc85273cdbe7b52356","after":"52236245084c36ff276360802e4e37c0872e3d29","ref":"refs/heads/master","pushedAt":"2023-10-30T11:23:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbkempf","name":"Jean-Baptiste Kempf","path":"/jbkempf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9219282?s=80&v=4"},"commit":{"message":"Re-instate OSMC as listed project\n\nSigned-off-by: Sam Nazarko ","shortMessageHtmlLink":"Re-instate OSMC as listed project"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEO12mcgA","startCursor":null,"endCursor":null}},"title":"Activity ยท etix/mirrorbits"}