Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API: add scrape endpoint. #725

Closed
josecelano opened this issue Mar 8, 2024 · 1 comment · Fixed by #728
Closed

API: add scrape endpoint. #725

josecelano opened this issue Mar 8, 2024 · 1 comment · Fixed by #728
Assignees
Labels
Milestone

Comments

@josecelano
Copy link
Member

josecelano commented Mar 8, 2024

Relates to: #708

I would like to improve the importation of statistics in the Index.

Currently, the Index is getting statistics from a single torrent at the time using the endpoint to get the torrent info:

/torrent/info-hash

I would like to add a new endpoint to import statistics in batches.

/tracker/scrape?info-hash=3b245504cf5f11bbdbe1201cea6a6bf45aee1bc0,info-hash=...

You can specify up to 74 torrents at the same time.

The normal HTTP tracker response for a scrape request is (converted to JSON format):

{
  "090c6d4fb3a03191c4ef1fda6236ef0efb2d5c10": {
    "complete": 1,
    "downloaded": 1,
    "incomplete": 0
  }
}

I think we can use a structure that is better for JSON, matching the Rust struct so that it's easier to generate the in-memory representation from the JSON object.

This is the proposed JSON format for the new scrape endpoint. It would follow the scrape specification but in JSON.

[
  {
    "info_hash": "090c6d4fb3a03191c4ef1fda6236ef0efb2d5c10",
    "complete": 0,
    "downloaded": 0,
    "incomplete": 0
  }
]

In Rust the struct would be:

#[derive(Debug, Serialize, Deserialize, PartialEq)]
pub struct TorrentInfo {
    pub info_hash: String,
    pub complete: i64,
    pub downloaded: i64,
    pub incomplete: i64,
}

Current implementation in the Index

The current struct used by the Index for the torrent details endpoint:

#[derive(Debug, Serialize, Deserialize, PartialEq)]
pub struct TorrentInfo {
    pub info_hash: String,
    pub seeders: i64,
    pub completed: i64,
    pub leechers: i64,
    pub peers: Vec<Peer>,
}

Notice, we are also importing the peer list and we don't need it in the Index.

Torrent endpoints

List of torrents:

http://127.0.0.1:1212/api/v1/torrents?token=MyAccessToken

[
  {
    "info_hash": "090c6d4fb3a03191c4ef1fda6236ef0efb2d5c10",
    "seeders": 1,
    "completed": 1,
    "leechers": 0
  }
]

Torrent info (the one currently used by the Index to import statistics):

http://127.0.0.1:1212/api/v1/torrent/090c6d4fb3a03191c4ef1fda6236ef0efb2d5c10?token=MyAccessToken

{
  "info_hash": "090c6d4fb3a03191c4ef1fda6236ef0efb2d5c10",
  "seeders": 1,
  "completed": 1,
  "leechers": 0,
  "peers": [
    {
      "peer_id": {
        "id": "0x2d71423030303030303030303030303030303031",
        "client": null
      },
      "peer_addr": "0.0.0.0:17548",
      "updated": 1709916034742,
      "updated_milliseconds_ago": 1709916034742,
      "uploaded": 0,
      "downloaded": 0,
      "left": 0,
      "event": "Completed"
    }
  ]
}

Extra considerations

This endpoint will be useful even if we decide to import statistics only for the torrents that are being loaded in the views in the Index. See torrust/torrust-index#469 (comment). Becuase, in the torrent list page the Index also shows the seeders and leechers:

image

So we need to get statistics for more than one torrent at the same time (for each result page)

@josecelano josecelano self-assigned this Mar 8, 2024
@josecelano josecelano added this to the v3.0.0 milestone Mar 11, 2024
@josecelano josecelano changed the title API: add scrapeendpoint. API: add scrape endpoint. Mar 11, 2024
josecelano added a commit to josecelano/torrust-tracker that referenced this issue Mar 11, 2024
The torrents endppint allow getting a list of torrents provifing the
infohashes:

http://127.0.0.1:1212/api/v1/torrents?token=MyAccessToken&info_hash=9c38422213e30bff212b30c360d26f9a02136422&info_hash=2b66980093bc11806fab50cb3cb41835b95a0362

It's like the tracker "scrape" request. The response JSON is the same as
the normal torrent list:

```json
[
  {
    "info_hash": "9c38422213e30bff212b30c360d26f9a02136422",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  },
  {
    "info_hash": "2b66980093bc11806fab50cb3cb41835b95a0362",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  }
]
```
@josecelano
Copy link
Member Author

In the end, I decided to use the torrents endpoint. It contains the same information as the tracker "scrape" request. Currently, the torrent list resource only contains the torrent's stats:

[
  {
    "info_hash": "9c38422213e30bff212b30c360d26f9a02136422",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  },
  {
    "info_hash": "2b66980093bc11806fab50cb3cb41835b95a0362",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  }
]

I've only added a new query parameter info_hash which is an array. You can specify directly the list of torrents you want to get.

http://127.0.0.1:1212/api/v1/torrents?token=MyAccessToken&info_hash=9c38422213e30bff212b30c360d26f9a02136422&info_hash=2b66980093bc11806fab50cb3cb41835b95a0362

josecelano added a commit to josecelano/torrust-tracker that referenced this issue Mar 11, 2024
The torrents endppint allow getting a list of torrents provifing the
infohashes:

http://127.0.0.1:1212/api/v1/torrents?token=MyAccessToken&info_hash=9c38422213e30bff212b30c360d26f9a02136422&info_hash=2b66980093bc11806fab50cb3cb41835b95a0362

It's like the tracker "scrape" request. The response JSON is the same as
the normal torrent list:

```json
[
  {
    "info_hash": "9c38422213e30bff212b30c360d26f9a02136422",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  },
  {
    "info_hash": "2b66980093bc11806fab50cb3cb41835b95a0362",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  }
]
```
josecelano added a commit to josecelano/torrust-tracker that referenced this issue Mar 11, 2024
The torrents endppint allow getting a list of torrents provifing the
infohashes:

http://127.0.0.1:1212/api/v1/torrents?token=MyAccessToken&info_hash=9c38422213e30bff212b30c360d26f9a02136422&info_hash=2b66980093bc11806fab50cb3cb41835b95a0362

It's like the tracker "scrape" request. The response JSON is the same as
the normal torrent list:

```json
[
  {
    "info_hash": "9c38422213e30bff212b30c360d26f9a02136422",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  },
  {
    "info_hash": "2b66980093bc11806fab50cb3cb41835b95a0362",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  }
]
```
josecelano added a commit to josecelano/torrust-tracker that referenced this issue Mar 11, 2024
The torrents endppint allow getting a list of torrents provifing the
infohashes:

http://127.0.0.1:1212/api/v1/torrents?token=MyAccessToken&info_hash=9c38422213e30bff212b30c360d26f9a02136422&info_hash=2b66980093bc11806fab50cb3cb41835b95a0362

It's like the tracker "scrape" request. The response JSON is the same as
the normal torrent list:

```json
[
  {
    "info_hash": "9c38422213e30bff212b30c360d26f9a02136422",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  },
  {
    "info_hash": "2b66980093bc11806fab50cb3cb41835b95a0362",
    "seeders": 1,
    "completed": 0,
    "leechers": 0
  }
]
```
josecelano added a commit that referenced this issue Mar 11, 2024
…list endpoint

d39bfc2 feat: [#725] API. Add scrape filter to torrents endpoint (Jose Celano)
4b24256 chore(deps): add cargo dependency: axum-extra (Jose Celano)

Pull request description:

  API endpoint: http://127.0.0.1:1212/api/v1/torrents?token=MyAccessToken&info_hash=9c38422213e30bff212b30c360d26f9a02136422&info_hash=2b66980093bc11806fab50cb3cb41835b95a0362

  Added a new query parameter `info_hash` which is an array. You can specify directly the list of torrents you want to get.

  The JSON result is the same:

  ```json
  [
    {
      "info_hash": "9c38422213e30bff212b30c360d26f9a02136422",
      "seeders": 1,
      "completed": 0,
      "leechers": 0
    },
    {
      "info_hash": "2b66980093bc11806fab50cb3cb41835b95a0362",
      "seeders": 1,
      "completed": 0,
      "leechers": 0
    }
  ]
  ```

  It contains torrent's stats.

ACKs for top commit:
  josecelano:
    ACK d39bfc2

Tree-SHA512: 74414200e4d22035cbffd77fa21437551806c671b06a5787211224242627c1f6e95e22d8709f4c7157b1dfeeb1614237eee0fdf9a0dbfb3a41a3876d924c5f96
josecelano added a commit that referenced this issue Aug 13, 2024
592c9cc release: version 3.0.0-alpha.12 (Jose Celano)
1455295 ci: [#1010] fix missing publishing packages (Jose Celano)
62ffffb chore(deps): update dependencies (Jose Celano)
6a707b9 fix: linter errors (Jose Celano)
f5e38bb feat!: [#1006] remove config  deafults for secrets (Jose Celano)
3fbab31 refactor: [#1002] rename is_good fn to meets_retaining_policy (Jose Celano)
1766587 feat: [#1002] remove inactive peers always (Jose Celano)
e563bfb fix: benchmarking config template (Jose Celano)
222fa42 feat: disable TimeoutAcceptor when TSL is enabled (Jose Celano)
5939b9a docs: update roadmap in README (Jose Celano)
7c62645 chore(deps): update dependencies (Jose Celano)
90ef14d feat!: [#938] add mandatory config options (Jose Celano)
287e484 feat!: [#958] improve metadata in config files (Jose Celano)
349692b test: [#989] add more tests for keys (Jose Celano)
8d58882 refactor: make method private (Jose Celano)
d7dfc3b feat: [#978] add semantic validation for configuration (Jose Celano)
e8e935c feat: [#978] add a config option to disable cheking keys' expiration (Jose Celano)
c5beff5 feat: [#979] permanent keys (Jose Celano)
8d3fe72 chore(deps): [#979] add new cargo dep: serde_with (Jose Celano)
e81914b refactor: [#976] concrete errors for parsing keys (Jose Celano)
8d41d18 fix: [#976] do not allow invalid tracker keys (Jose Celano)
04f50e4 docs: [#974] update add key endpoint doc (Jose Celano)
583b305 test: [#874] new key generation endpoint (Jose Celano)
09beb52 feat: [#974] new API endpoint to upload pre-existing keys (Jose Celano)
82a8b43 chore(deps): update dependencies (Jose Celano)
8cefad6 fix: [#933] uppercase for containerfile keywords (Jose Celano)
9791427 chore: update deps (Cameron Garnham)
d2717ad fixup: doc fixups (Cameron Garnham)
7f867d6 toml: use major versions (Cameron Garnham)
cafb9aa chore: update deps (Cameron Garnham)
64850af dev: remove async trait dep (Cameron Garnham)
019cf9f udp: processor for requests (Cameron Garnham)
ca348a8 chore: remove unused dependency (Jose Celano)
9d72f51 feat: [#950] use lowercase for database driver values in configuration (Jose Celano)
d970bb8 refactor: [#950] rename DatabaseDriver to Driver (Jose Celano)
954295a refactor: [#950] move DatabaseDriver to databases mod (Jose Celano)
9be9638 refactor: [#950] decouple database driver enum (Jose Celano)
4673514 fix: [#948] mask secrets in logs (Jose Celano)
16aa652 chore(deps): add url dependency (Jose Celano)
60c6876 feat: [#937] add version to configration file following semver. (Jose Celano)
4846c9f chore: update workflow action build-push-action (Jose Celano)
e2dbb0b chore(deps): update dependencies (Jose Celano)
af61e20 feat: [#936] rename config value log_level to threshold (Jose Celano)
397ef0f feat: log final config after processing all config sources (Jose Celano)
ddfbde3 feat: the configuration can be serialized as JSON (Jose Celano)
46c3263 feat: normalize log nessages (Jose Celano)
e299792 feat: warn adming when no service is enabled in the configration (Jose Celano)
632ad0d refactor: use only latest config version in prod code (Jose Celano)
2969df3 refactor: [#939] change config version (Jose Celano)
b6b841d chore: remove crate from ignore list in cargo machete (Jose Celano)
f61c7c3 docs: add commments to core::Tracker struct fields (Jose Celano)
5a16ea1 refactor: [#932] make all Tracker fields private (Jose Celano)
a5b9e14 refactor: inject the core config to the core tracker (Jose Celano)
ca31c83 feat: [#932] replace `mode` core config option with `private` and `listed` flags (Jose Celano)
f5d8dc6 refactor: [#932] WIP. Add new core config options: private and listed (Jose Celano)
2186809 refactor: [#932] sort config core section fields (Jose Celano)
d1c2d15 fix: [#918] revision for UDP active reqeust buffer comments (Cameron Garnham)
6495a4c docs: [#918] add comments to the UDP server (Jose Celano)
daeb7cc ci: coverage workflow pre-build fix (Cameron Garnham)
77c6954 chore(deps): update dependencies (Jose Celano)
c202db7 dev: tracker client error enums (Cameron Garnham)
988f1c7 dev: add vscode 'code-workspace' to git ignore file (Cameron Garnham)
16d4cb6 ci: coverage workflow add pre-build-test step (Cameron Garnham)
5f3957a ci: coverage build with two jobs (Cameron Garnham)
f0de8dd ci: pre-build coverage test (Cameron Garnham)
3d567c8 ci: nightly build for coverage (Cameron Garnham)
2518c54 fix: [#917] clients output in JSON should not include logging (Jose Celano)
f06976e docs: update some UDP server comments (Jose Celano)
89bb735 refactor: reorganize UDP server mod (Jose Celano)
c121bf2 refactor: rename UDP server types (Jose Celano)
336e0e6 refactor: reorganize mod to extract new submods (Jose Celano)
61fb4b2 refactor: move active requests logic to ActiveRequest type (Jose Celano)
35b6c84 refactor: simplify UDP server receiver (Jose Celano)
a5e2baf refactor: extract method (Jose Celano)
b4b4515 refactor: extract const for logging targets (Jose Celano)
0388e1d refactor: extract consts for logging targets (Jose Celano)
16ae4fd refactor: rename vars and extract constructor (Jose Celano)
7ff0cd2 refactor: rename var (Jose Celano)
0e3678d refactor: rename Socket to BoundSocket and fix format errors" (Jose Celano)
9b3b75b fix: log message (Jose Celano)
84cc1a1 dev: use stream for udp requests (Cameron Garnham)
0bcca80 chore(deps): update dependencies (Jose Celano)
06ad5da feat!: [#878] remove enabled fields in config (Jose Celano)
50bef25 feat: remove ambiguous log entry (Jose Celano)
c5cc9fd feat: [#878] extract tsl_config in toml config (Jose Celano)
7b2f757 feat!: [#878] extract tracker_policy section in core config section (Jose Celano)
fc046e0 feat!: [#878] extract announce_policy section in core config section (Jose Celano)
edc706c feat!: [#878] extract net section in core config section (Jose Celano)
2f94f6c feat!: [#878] extract database section in core config section (Jose Celano)
77dd938 feat!: [#878] make log_level config value mandatory (Jose Celano)
ef9461a feat!: [#878] extract logging and core section in toml config files (Jose Celano)
3c715fb fix: [#898] docker build error: failed to load bitcode of module criterion (Jose Celano)
eb928bc fix: [#893] enable color for logs (Jose Celano)
a293373 chore(deps): add cargo dependency regex (Jose Celano)
a88082a fix: [#893] enable color in logs (Jose Celano)
322b976 chore(deps): update dependencies (Jose Celano)
f8a9976 docs: [#770] update benchmarking docs (Jose Celano)
c08de75 refactor: [#659] use clap and anyhow in E2E test runner (Jose Celano)
ec88dbf chore(deps): remove unused dependencies log and fern (Jose Celano)
d6fd11a test: [#884] add test for parsing array of services from app logs (Jose Celano)
7de2595 chore(deps): [#884] remove unused crate log (Jose Celano)
69f100a refactor: [#884] move from log to tracing crate (Jose Celano)
6e06b2e refactor: [#884] move from log to tracing crate (Jose Celano)
3ccc0e4 chore(deps): add cargo dependency tracing (Jose Celano)
6e87d3e chore(deps): update dependencies (Jose Celano)
f5d843b docs: add benchmarking to torrent repo README (Jose Celano)
0157d96 refactor:[#670] fix clippy errors (Mario)
32416ee refactor: [#670] changed DTOs and variable names (Mario)
5a529cc refactor: [#670]  new mod for responses logic and refactors to json serialization trait (Mario)
74f4cb0 refactor: [#670] added error message for pint_response function (Mario)
08e87ca refactor: [#670] new print_response function from trait implemented (Mario)
625db48 refactor: [#670] new trait for printing responses in JSON format and  enum for Dto wrapper (Mario)
4de7793 feat: [#670] new JSON serialization for connect and error aquatic responses (Mario)
a3df726 fix: clippy errors (Jose Celano)
9e71e71 chore(deps): update dependencies (Jose Celano)
0c9da2f feat: [#870] implement traits Dispaly and FromStr for TrackerMode (Jose Celano)
74d8f79 feat: [#870] remove Copy trait from TrackerMode (Jose Celano)
932e66e feat: [#870] add privacy methods to the TrackerMode (Jose Celano)
9be9366 Fix and improved bootstrap jobs module test. (Gabriel GRONDIN)
23c52b1 Fix REAADME HTTP port (Gabriel Grondin)
23d5e5e fix: [#613] add timeout for time waiting for the first HTTP tracker request (Jose Celano)
9e42a1a feat: [#612] tower middleware to apply timeouts to requests (Jose Celano)
112b76d fix: [#612] add timeout for time waiting for the first API requests (Jose Celano)
dadc216 chore(deps): add cargo dependencies needed for axum timeouts (Jose Celano)
80fc8d6 docs: udpate roadmap in README (Jose Celano)
e1e1071 docs: update README (Jose Celano)
a4d2adf feat!: remove deprecated env var (Jose Celano)
ef15e0b refactor: [#851] rename env vars (Jose Celano)
4de5e7d refactor: move config env vars to configuration package (Jose Celano)
da6a21e refactor: [#855] show toml file location in Figment errors (Jose Celano)
cf1bfb1 chore(deps): update dependencies (Jose Celano)
445bd53 feat: define only non-defaults in toml config templates (Jose Celano)
ae77ebc refactor: tracker core service only needs the core config (Jose Celano)
b545b33 refactor: [#852] extract Core configuration type (Jose Celano)
7519ecc refactor: [#852] enrich field types in Configuration struct (Jose Celano)
ceb3074 refactor: [#852] enrich field types in HttpApi config struct (Jose Celano)
3997cfa refactor: [#852] eenrich field types in TslConfig config struct (Jose Celano)
a2e718b chore(deps): add dependency camino (Jose Celano)
fc191f7 refactor: [#852] enrich field types in HttpTracker config struct (Jose Celano)
1475ead refactor: [#852] eenrich field types in UdpTracker config struct (Jose Celano)
384e9f8 refactor: [#852] eenrich field types in HealthCheckApi config struct (Jose Celano)
0252f30 feat: allow users not to provide config option with default values (Jose Celano)
43942ce tests: add test for configuration with deprecated env var name (Jose Celano)
b0c2f9f docs: update env var name in toml config template files (Jose Celano)
69d7939 refactor: implement Default for Configuration sections (Jose Celano)
caae725 feat: use double underscore to split config env var names (Jose Celano)
b3a1442 refactor!: remove unused method in Configuration (Jose Celano)
632c8ba refactor: move Configuration unit test to inner mods (Jose Celano)
146b77d feat: enable overwrite Configuration values using env vars (Jose Celano)
5bd9494 chore: remove unused config dependenciy (Jose Celano)
265d89d refactor: replace Config by Figment in Configuration implementation (Jose Celano)
002fb30 refactor: reexport config versioned config types (Jose Celano)
e7d344c refactor: create new configuration v1 mod with figment (Jose Celano)
636e779 refactor: create new configuration v1 mod with figment (Jose Celano)
157807c chore(deps): enable figment features: env, toml, test (Jose Celano)
f0e0721 test: remove broken example in rustdoc (Jose Celano)
7da52b1 chore(deps): add dependency figment (Jose Celano)
9e01f7f dev: fix udp ring-buffer not looping (Cameron Garnham)
6f02aeb docs: fix profiling docs (Jose Celano)
cddc4de chore(deps): bump rustc-demangle v0.1.23 -> v0.1.24 (Jose Celano)
3dee03e docs: udpate installation docs (Jose Celano)
e3143f7 feat: log aborted UDP requests (Jose Celano)
62d4a20 chore(deps): update dependencies (Jose Celano)
be51d2f chore(deps): bump ringbuf from 0.3.3 to 0.4.0 (Jose Celano)
801d913 chore(deps): bump aquatic_udp_protocol from 0.8.0 to 0.9.0 (Jose Celano)
7551857 chore(deps): update dependencies (Jose Celano)
895efe9 refactor: [#680] http return errors instead of panicking (ngthhu)
effca56 refactor: [#681] udp return errors instead of panicking (ngthhu)
b27f002 remove unused dependencies (ngthhu)
7de4fbc format fix (ngthhu)
b301596 chore:[#674] Tracker Checker: Ouput in JSON (ngthhu)
87c9834 chore(deps): update dependencies (Jose Celano)
0058e72 feat: new torrent repo implementation using parking_lot Mutex (Jose Celano)
0fa396c chore(deps): add parking_lot to cargo machete (Jose Celano)
9258ac0 feat: new torrent repo implementation using parking_lot RwLock (Jose Celano)
5750e2c chore(deps): add dependency parking_lot (Jose Celano)
40182b4 test: add tests for PeerList type (Jose Celano)
42f1b30 refactor: extract mod peer_list (Jose Celano)
922afda refactor: rename field from peers to swarm (Jose Celano)
4a567cd refactor: extract PeerList (Jose Celano)
5fa01e7 chore(deps): update dependencies (Jose Celano)
aa4bfba refactor: segregate command and query for announce request (Jose Celano)
4030fd1 fix: torrent repository tests. DashMap is not ordered (Jose Celano)
1e76c17 chore: add dashmap cargo dep to cargp machete (Jose Celano)
00ee9db feat: [#565] new torrent repository implementation usind DashMap (Jose Celano)
78b46c4 chore(deps): add cargo dependency: dashmap (Jose Celano)
5373493 chore(deps): update dependencies (Jose Celano)
12f54e7 test: add tests for new torrent repository using SkipMap (Jose Celano)
0989285 refactor: separate torrent repository trait from implementations (Jose Celano)
eec2024 chore: ignore crossbeam-skiplist crate in cargo-machete (Jose Celano)
642d6be feat: new torrent repository using crossbeam_skiplist::SkipMap (Jose Celano)
608585e chore: add new cargo dependency: crossbeam-skiplist (Jose Celano)
3ac4aa5 docs: [#768] udpate profiling docs (Jose Celano)
0999aa0 dev: ci: enable rust stable workflows (Cameron Garnham)
9e23ec9 chore: update deps (Cameron Garnham)
3414e2a dev: torrent repository tests (Cameron Garnham)
e18cae4 dev: torrent repository cleanups (Cameron Garnham)
3e0745b dev: extract clock to new package (Cameron Garnham)
03883c0 dev: repository benchmark uses criterion (Cameron Garnham)
9a43815 dev: move torrent/repository to packages (Cameron Garnham)
4b2d6fe dev: extract repo implementations and benchmarks (Cameron Garnham)
1025125 dev: create torrent repo trait and extract entry (Cameron Garnham)
48ce426 dev: bench torrent/repository add sync_asyn variant (Cameron Garnham)
5c0047a dev: refactor torrent repository (Cameron Garnham)
fbd0469 fix: revert number of active UDP request to previous value (Jose Celano)
294357b docs: [#746] add missing flamegraph in docs (Jose Celano)
6a7275e docs: [#746] for profiling (Jose Celano)
bfdeafc test: [#746] profiling: add configuration to generate flamegraphs (Jose Celano)
d2a346a chore: update deps (Cameron Garnham)
1c59d89 chore: various maintenance (Cameron Garnham)
9015668 refactor: [#746] rename functions and extract named closures (Jose Celano)
cc1cbc1 test: [#746] add a new binary for profiling (Jose Celano)
8395c42 test: [#746] disable tracker stats for profiling (Jose Celano)
14ef168 dev: ci: update coverage build flags (Cameron Garnham)
3a9c52f fix: error messages starting UDP tracker (Jose Celano)
439821c dev: bugfix completed download stat (Cameron Garnham)
b3ad652 chore: update cargo deps (Cameron Garnham)
26215e8 docs: [#733] udpate benchmarking docs and results (Jose Celano)
45c77c3 fix: linter error, unused code (Jose Celano)
d32a748 docs: [#87] benchmarking (Jose Celano)
fd0ad1b test: [#87] remove lua script for HTTP tracker benchmarking (Jose Celano)
d39bfc2 feat: [#725] API. Add scrape filter to torrents endpoint (Jose Celano)
4b24256 chore(deps): add cargo dependency: axum-extra (Jose Celano)
f9a5f7e chore: fix linting errors (Jose Celano)
e77d89f chore: add ADR about when to use plural for mod names (Jose Celano)
eb8478d refactor: [#714] use tower_http::request_id::MakeRequestUuid (Jose Celano)
d4310a5 chore(deps): udpate cargo dependencies (Jose Celano)
5a6c968 feat: [#704] add latency to UDP tracker logs (Jose Celano)
c348f72 docs: fix linter warnings in markdown (Jose Celano)
d673a59 docs: fix podman commands (Jose Celano)
37c1fa7 chore(deps): bump EndBug/label-sync from 2.3.2 to 2.3.3 (Jose Celano)
1bf8a82 chore(deps): udpate dependencies (Jose Celano)
4a2d902 feat: [#698] refactor UDP logs (Jose Celano)
30ae6df feat: [#697] add logs to HTTP tracker (Jose Celano)
e0836bd feat: [#700] add logs to Health Check API (Jose Celano)
5ccdf10 fix: build errors `imported redundantly` (Jose Celano)
32727ca feat: [#696] API, log request and responses (Jose Celano)
945e91f chore: [#696] add cargo dependencies for logging (Jose Celano)
36fcee7 fix: [#691] unknown feature stdsimd (Jose Celano)
873f98d refactor: [#639] Tracker Checker: extract mod for Health checks (Jose Celano)
70924ed refactor: [#639] Tracker Checker: extract mod for HTTP checks (Jose Celano)
77c32a1 refactor: [#639] Tracker Checker: extract mod for UDP checks (Jose Celano)
592c0dd fix: add timeouts to UdpClient operations (Jose Celano)
6b74c66 feat: [#639] Tracker Checker. Setup logging (Jose Celano)
bbfca2c feat: [#639] Tracker Checker. Check UDP trackers (Jose Celano)
661b521 chore: [#639] add cargo dependency: hex_literal (Jose Celano)
1b92b77 refactor: [#639] UDP client. Extract aquatic reponses wrappers (Jose Celano)
a2e123c refactor: [#639] UDP client. Extract command handlers (Jose Celano)
011fdb7 refactor: [#639] Tracker Checker: extract checker:Client to check UDP servers (Jose Celano)
3b735a7 refactor: [#639] Tracker Checker: prepare outout for UDP checks (Jose Celano)
e9e0ded chore: update deps (Cargo Lockfile) (Cameron Garnham)
4456203 feat: [#640] Tracker Chekcer: scrape check (Jose Celano)
cb5bb68 feat: [#640] Tracker Chekcer: announce check (Jose Celano)
47551ff refactor: [#661] move UDP Tracker Client mod (Jose Celano)
b96c2c3 refactor: [#661] move HTTP Tracker Client mod (Jose Celano)
0960ff2 refactor: [#661] move Tracker Checker mod (Jose Celano)
d8a9f7b refactor: [#661] move E2E tests runner mod (Jose Celano)
392ffab refactor: [#656] E2E runner. Pass config as env var to Tracker Checker (Jose Celano)
1bab582 feat: [#656] Tracker Checker sopports env var for config (Jose Celano)
7f43fbd chore: [656] add cargo dep feature (Jose Celano)
8543190 refactor: Tracker Checker: use clap and anyhow (Jose Celano)
f4e9bda feat: [#654] UDP tracker client: scrape (Jose Celano)
1b34d93 refactor: [#654] UDP tracker client: use clap and anyhow (Jose Celano)
0624bf2 refactor: [#649] use anyhow to handle errors (Jose Celano)
271bfa8 feat: [#649] add cargo dep: anyhow (Jose Celano)
415ca1c feat: [#649] scrape req for the HTTP tracker client (Jose Celano)
b05e2f5 refactor: [#649] use clap in HTTP tracker client (Jose Celano)
f439015 feat: [#649] add cargo dependency: clap (Jose Celano)
f18e68c fix: tracker checker return error code when it fails (Jose Celano)
e5cd81b refactor: [#647] E2E tests. Extract function (Jose Celano)
68f71be refactor: [#647] E2E tests. Extract strcut TrackerContainer (Jose Celano)
ddad4a4 ci: [#647] E2E tests. Make sure there are not panics in logs (Jose Celano)
670927c ci: [#647] E2E tests. Make sure we run at least one service per type (Jose Celano)
0afab09 refactor: [#647] extract strcut RunOptions (Jose Celano)
ec13fb4 ci: [#634] run E2E tests in the testing workflow (Jose Celano)
4edcd2e ci: [#634] new script to run E2E tests (Jose Celano)
8e43205 ci: [#634] new dependency to make temp dirs (Jose Celano)
72c8348 udp: handle udp requests concurrently (Cameron Garnham)
b2ef4e0 feat: tracker checker command (Jose Celano)
1b7e5b9 feat: enable all services in dev default config (Jose Celano)
4c416e0 fix: remove coverage report generation from testing workflow (Jose Celano)
f0710d3 feat: [#625] a new UDP tracker client (Jose Celano)
17296cd fix: [#626] healt check api server shutdown (Jose Celano)
bbf1be6 fix: don't start HTTP tracker if it's disabled (Jose Celano)
3f0dcea dev: add tests to health check (Cameron Garnham)
b310c75 dev: extract config from health check (Cameron Garnham)
3b49257 dev: extract config from core::tracker (Cameron Garnham)
129fd2f refactor: move upd tracker client (Jose Celano)
470e608 feat: a simple HTTP tracker client command (Jose Celano)
fec9716 feat: [#609] add timeout to UDP tracker requests (Jose Celano)
3e2b152 feat: [#604] add timeout to http_health_check binary (Jose Celano)
0e6fe33 dev: Announce Responce Cleanup (Cameron Garnham)
58a57d3 refactor: extract struct SwarmStats (Jose Celano)
d4adfa7 refactor: extract config struct `AnnouncePolicy` (Jose Celano)
cca17d5 refactor: rename `non-compact` to `normal` (Jose Celano)
5fd0c84 chore: normalize log ouput (Jose Celano)
0c1f389 fix: [#591] panicking after starting UDP server due to close halt channel (Jose Celano)
ba4cb34 feat: improve logging for HTTP tracker bootstrapping (Jose Celano)
9f3f949 fix: [#592] halt channel closed after starting HTTP tracker (Jose Celano)
452b4a0 feat: improve http_health_check output (Jose Celano)
ac18605 feat: improve log when starting the API (Jose Celano)
53613ec feat: start log lines with capital (Jose Celano)
cf613b8 fix: [#588] broken grateful shutdown for tracker API (Jose Celano)
13140f6 dev: cleanup service bootstraping (Cameron Garnham)
9a0919f chore: update cargo deps (Cameron Garnham)
541a072 ci: add threshold to patch changes (Cameron Garnham)
fc9bd77 refactor: preload info hashes in wrk benchmark (Warm Beer)
02b64f2 refactor: [#343] remove deprecated function (Jose Celano)
d03e930 feat!: [#536] remove always-empty peer list in torrent list item (Jose Celano)
46e67a8 refactor: [#262] split global consts for limits (Jose Celano)
f4c762b chore: update cargo deps (Cameron Garnham)
911708c chore: fixup clippy and spelling (Cameron Garnham)
922a46d Update labels.json #503 (Shrirang Borde)
14cb26c chore: update deps to hyper v1 (Cameron Garnham)
3b8a625 chore: update cargo deps (Cameron Garnham)
ff3928e fix: clippy error (Jose Celano)
6e607c3 feat: [#539] change log for UDP tracker (Jose Celano)
ebb7d4c chore: make Containerfile use nightly rust (Warm Beer)
1735a7a chore: only run contract, deployment & testing jobs in nightly rust (Warm Beer)
6087e4f feat: added benchmarking binary for torrent repository (Warm Beer)
985633e feat!: [#537] move API healthcheck endpoint (Jose Celano)
986ab64 dev: refactor: rename tracker mod to core (Cameron Garnham)
5439b6e chore: update deps (Cameron Garnham)
74511ee feat: add script to install for development (Jose Celano)
5ce0048 fix: disable shellcheck (Jose Celano)
5e0a686 refactor: [#508] extract health check methods (Jose Celano)
bf23479 feat: [#508] add health check for UDP tracker (Jose Celano)
2a05590 refactor: [#508] move UDP tracker client to production code (Jose Celano)
7421306 feat: [#508] add health check enpoint to HTTP tracker (Jose Celano)
ef296f7 feat: [#508] app health check endpoint checks API (Jose Celano)
e1a45a2 feat: [#508] Health Check API but no checks yet (Jose Celano)
48ac64f feat: [#508] add container healthcheck for API (Jose Celano)
0ef4e34 feat: [#508] add new binary HTTP health check (Jose Celano)
f1c7ccc feat: add cargo dependency reqwest (Jose Celano)
b609c83 chore: update dependencies (Jose Celano)
f7c5ace chore: update dependencies (Jose Celano)
f8175b5 chore(deps): bump tokio from 1.33.0 to 1.34.0 (dependabot[bot])
b4329f9 ci: workflow to show the tracker contract in markdown (Jose Celano)
9c0b090 fixup: rename field for clippy (Cameron Garnham)
dbc8920 ci: fix nightly changes (Cameron Garnham)
8ec0a23 chore: update deps (Cameron Garnham)
cb914da feat: replace peer ID recognition with tdyne-peer-id-registry (Dan Groshev)
eb428f2 various: small updates (Cameron Garnham)
ccfb06f ci: deny doc warnings (Cameron Garnham)
417ad73 chore: fix doc warnings (Cameron Garnham)
7dbca2b ci: move doc tests to unit section (Cameron Garnham)
308f490 deps: update cargo lockfile (Cameron Garnham)
8f2e22e ci: maintaince update for labelsync (Cameron Garnham)
62c6c10 ci: improve labels workflow (Cameron Garnham)
483cc04 ci: fixup labels workflow (Cameron Garnham)
d46633c ci: enable sync labels workflow (Cameron Garnham)
050b27a ci: export labels using workflow (Cameron Garnham)
be914b6 ci: re-enable llvm-cov coverage (Cameron Garnham)
4ca47a4 fixup: ignore new clippy warning (Cameron Garnham)
ae3fda6 chore: update dependencies (Jose Celano)
bf269bc fix: renaming yml to yaml (Alex Wellnitz)
8a49a94 docs: remove duplicate COPYRIGHT file (Cameron Garnham)
36716f7 legal: clean up licensing documents (Cameron Garnham)
cba4cda docs: fix little issues in release process (Cameron Garnham)
f897f2f docs: fix docs.rs links in readme (Cameron Garnham)
a14bdc6 develop: bump to version 3.0.0-alpha.12-develop (Cameron Garnham)

Pull request description:

  Release Version 3.0.0-alpha.12 following the [release process](https://github.com/torrust/torrust-tracker/blob/develop/docs/release_process.md).

Top commit has no ACKs.

Tree-SHA512: fdf327a1065fabe55ff90b9aab763dcc7751d6ba51b34c99ff3023627815173467db10b9c9f9a5cf4cbd4fa8821982abaaedb7cdf9a4fbdcf64748d46940e4c9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant