prosody 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0f289892abe26b82d26930f960b62c85099389e346cfa529bcc9813b0b15bf35
4
- data.tar.gz: 8b872d6abeb6de9bd875ba38e06756b9b5d5bf3bd474ead62e1d455d44c57d25
3
+ metadata.gz: 50b24e61e2dffddd6de734d1f7d46bbcd2cdc5351ff4205f09d1ed038a289a22
4
+ data.tar.gz: c7d7b1533053dd7a30a7d370216f29202e4ff45eb137244de556eb1037398785
5
5
  SHA512:
6
- metadata.gz: 80d93d0985b60c0202229de769b8015a4cb28bc1d7ee9d5fe20c0d35d50e4aa4e8420de283a78d1264ebf512ffd19af126a3627441540ffb1af23d2dd2451324
7
- data.tar.gz: f244a973e52b2b7ed2cb0b3913eb11e42a2e4d40396eb4a4dc8216cd34d40f703a35b276b121b4a5beec3d926900c1cec67d6979826bad20234f6ec58a094929
6
+ metadata.gz: 0b9478cb2ea9568f9a498b109638fa504d42a5ba802cdc3dc824d4495871c6670f6325593a10ec3a74075ae2616a1a6df292f45f7694575267bfa21da051af30
7
+ data.tar.gz: 3563ae9225b5ab4373240e739ae950eabe7fbc5353d0de76fec05b954335fcb18892af74581e238543e5071d0eef10ae5932d0aaed37f0dc71f7c7926740e82f
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "0.1.1"
2
+ ".": "0.1.2"
3
3
  }
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.2](https://github.com/prosody-events/prosody-rb/compare/prosody/v0.1.1...prosody/v0.1.2) (2026-04-20)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **deps:** upgrade prosody to 0.1.2 ([#12](https://github.com/prosody-events/prosody-rb/issues/12)) ([381a5d9](https://github.com/prosody-events/prosody-rb/commit/381a5d9b53092680bb81bef406b3180ec6ace305))
9
+
3
10
  ## [0.1.1](https://github.com/prosody-events/prosody-rb/compare/prosody/v0.1.0...prosody/v0.1.1) (2026-04-14)
4
11
 
5
12
 
data/Cargo.lock CHANGED
@@ -1701,7 +1701,7 @@ dependencies = [
1701
1701
  "futures",
1702
1702
  "magnus",
1703
1703
  "opentelemetry",
1704
- "prosody 0.1.1",
1704
+ "prosody 0.1.2",
1705
1705
  "rb-sys",
1706
1706
  "serde",
1707
1707
  "serde-untagged",
@@ -1717,9 +1717,9 @@ dependencies = [
1717
1717
 
1718
1718
  [[package]]
1719
1719
  name = "prosody"
1720
- version = "0.1.1"
1720
+ version = "0.1.2"
1721
1721
  source = "registry+https://github.com/rust-lang/crates.io-index"
1722
- checksum = "cf07bd61886febe163f11b58a99e1d02d5b9ea56b1bb43af63e3c94251e5123b"
1722
+ checksum = "31165aa5c07d25b92ab22a47d9400b20b1115f702b55c4c0325d51e285903b83"
1723
1723
  dependencies = [
1724
1724
  "ahash",
1725
1725
  "aho-corasick",
@@ -2215,9 +2215,9 @@ dependencies = [
2215
2215
 
2216
2216
  [[package]]
2217
2217
  name = "sdd"
2218
- version = "4.8.3"
2218
+ version = "4.8.6"
2219
2219
  source = "registry+https://github.com/rust-lang/crates.io-index"
2220
- checksum = "0ec3c6d3fde776a6aadfda5991a2e14ba161c9bbe317da88732a5ded4ac4c493"
2220
+ checksum = "e5f0e40a01b94e35d1dacbcfbe5bfd3d31e37d9590b2e6d86a82b0e87bd4f551"
2221
2221
  dependencies = [
2222
2222
  "saa",
2223
2223
  ]
@@ -2561,9 +2561,9 @@ dependencies = [
2561
2561
 
2562
2562
  [[package]]
2563
2563
  name = "tokio"
2564
- version = "1.52.0"
2564
+ version = "1.52.1"
2565
2565
  source = "registry+https://github.com/rust-lang/crates.io-index"
2566
- checksum = "a91135f59b1cbf38c91e73cf3386fca9bb77915c45ce2771460c9d92f0f3d776"
2566
+ checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6"
2567
2567
  dependencies = [
2568
2568
  "bytes",
2569
2569
  "libc",
@@ -2833,9 +2833,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
2833
2833
 
2834
2834
  [[package]]
2835
2835
  name = "typenum"
2836
- version = "1.19.0"
2836
+ version = "1.20.0"
2837
2837
  source = "registry+https://github.com/rust-lang/crates.io-index"
2838
- checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
2838
+ checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de"
2839
2839
 
2840
2840
  [[package]]
2841
2841
  name = "unarray"
@@ -2875,9 +2875,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
2875
2875
 
2876
2876
  [[package]]
2877
2877
  name = "uuid"
2878
- version = "1.23.0"
2878
+ version = "1.23.1"
2879
2879
  source = "registry+https://github.com/rust-lang/crates.io-index"
2880
- checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9"
2880
+ checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76"
2881
2881
  dependencies = [
2882
2882
  "getrandom 0.4.2",
2883
2883
  "js-sys",
@@ -2981,11 +2981,11 @@ dependencies = [
2981
2981
 
2982
2982
  [[package]]
2983
2983
  name = "wasip2"
2984
- version = "1.0.2+wasi-0.2.9"
2984
+ version = "1.0.3+wasi-0.2.9"
2985
2985
  source = "registry+https://github.com/rust-lang/crates.io-index"
2986
- checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
2986
+ checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6"
2987
2987
  dependencies = [
2988
- "wit-bindgen",
2988
+ "wit-bindgen 0.57.1",
2989
2989
  ]
2990
2990
 
2991
2991
  [[package]]
@@ -2994,7 +2994,7 @@ version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
2994
2994
  source = "registry+https://github.com/rust-lang/crates.io-index"
2995
2995
  checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
2996
2996
  dependencies = [
2997
- "wit-bindgen",
2997
+ "wit-bindgen 0.51.0",
2998
2998
  ]
2999
2999
 
3000
3000
  [[package]]
@@ -3318,6 +3318,12 @@ dependencies = [
3318
3318
  "wit-bindgen-rust-macro",
3319
3319
  ]
3320
3320
 
3321
+ [[package]]
3322
+ name = "wit-bindgen"
3323
+ version = "0.57.1"
3324
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3325
+ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
3326
+
3321
3327
  [[package]]
3322
3328
  name = "wit-bindgen-core"
3323
3329
  version = "0.51.0"
data/README.md CHANGED
@@ -225,6 +225,7 @@ When a handler fails, retry with exponential backoff:
225
225
  | `defer_failure_threshold` / `PROSODY_DEFER_FAILURE_THRESHOLD` | Disable deferral when failure rate exceeds this | 0.9 |
226
226
  | `defer_failure_window` / `PROSODY_DEFER_FAILURE_WINDOW` | Measure failure rate over this time window | 5m |
227
227
  | `defer_cache_size` / `PROSODY_DEFER_CACHE_SIZE` | Track this many deferred keys in memory | 1024 |
228
+ | `defer_store_cache_size` / `PROSODY_DEFER_STORE_CACHE_SIZE` | Maximum deferred store cache entries per Cassandra defer store | 8192 |
228
229
  | `defer_seek_timeout` / `PROSODY_DEFER_SEEK_TIMEOUT` | Timeout when loading deferred messages | 30s |
229
230
  | `defer_discard_threshold` / `PROSODY_DEFER_DISCARD_THRESHOLD` | Read optimization (rarely needs changing) | 100 |
230
231
 
@@ -0,0 +1,67 @@
1
+ services:
2
+ lgtm:
3
+ image: grafana/otel-lgtm:latest
4
+ ports:
5
+ - "3000:3000" # Grafana UI
6
+ - "4317:4317" # OTLP gRPC ingest
7
+ - "4318:4318" # OTLP HTTP ingest
8
+ - "3200:3200" # Tempo API
9
+ volumes:
10
+ - lgtm_data:/data
11
+ environment:
12
+ GF_PATHS_DATA: /data/grafana
13
+
14
+ kafka:
15
+ image: apache/kafka:latest
16
+ ports:
17
+ - "9094:9094"
18
+ volumes:
19
+ - "kafka_data:/var/lib/kafka/data"
20
+ environment:
21
+ # KRaft settings
22
+ KAFKA_NODE_ID: 0
23
+ KAFKA_PROCESS_ROLES: controller,broker
24
+ KAFKA_CONTROLLER_QUORUM_VOTERS: 0@kafka:9093
25
+ # Listeners
26
+ KAFKA_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
27
+ KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,EXTERNAL://localhost:9094
28
+ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
29
+ KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
30
+ KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
31
+ # Single-node settings - required for internal topics
32
+ KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
33
+ KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
34
+ KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
35
+ healthcheck:
36
+ test: [ "CMD-SHELL", "/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list" ]
37
+ interval: 15s
38
+ timeout: 10s
39
+ retries: 15
40
+ cassandra:
41
+ image: cassandra:latest
42
+ ports:
43
+ - "9042:9042"
44
+ volumes:
45
+ - cassandra_data:/var/lib/cassandra
46
+ healthcheck:
47
+ test: [ "CMD-SHELL", "cqlsh -e 'SELECT cluster_name FROM system.local;'" ]
48
+ interval: 15s
49
+ timeout: 10s
50
+ retries: 15
51
+ console:
52
+ image: docker.redpanda.com/redpandadata/console:latest
53
+ entrypoint: /bin/sh
54
+ command: -c 'echo "$$CONSOLE_CONFIG_FILE" > /tmp/config.yml; /app/console'
55
+ environment:
56
+ CONFIG_FILEPATH: /tmp/config.yml
57
+ CONSOLE_CONFIG_FILE: |
58
+ kafka:
59
+ brokers: ["kafka:9092"]
60
+ ports:
61
+ - "8080:8080"
62
+ depends_on:
63
+ - kafka
64
+ volumes:
65
+ kafka_data:
66
+ cassandra_data:
67
+ lgtm_data:
@@ -175,6 +175,9 @@ pub struct NativeConfiguration {
175
175
  /// Cache size for defer middleware.
176
176
  defer_cache_size: Option<u32>,
177
177
 
178
+ /// Maximum number of deferred store entries kept in the write-through cache per Cassandra defer store.
179
+ defer_store_cache_size: Option<u32>,
180
+
178
181
  /// Timeout for Kafka seek operations (in seconds).
179
182
  defer_seek_timeout: Option<f32>,
180
183
 
@@ -651,6 +654,10 @@ impl<'a> From<&'a NativeConfiguration> for DeferConfigurationBuilder {
651
654
  builder.cache_size(*cache_size as usize);
652
655
  }
653
656
 
657
+ if let Some(store_cache_size) = &config.defer_store_cache_size {
658
+ builder.store_cache_size(*store_cache_size as usize);
659
+ }
660
+
654
661
  if let Some(seek_timeout) = &config.defer_seek_timeout {
655
662
  builder.seek_timeout(Duration::from_secs_f32(*seek_timeout));
656
663
  }
@@ -244,6 +244,9 @@ module Prosody
244
244
  # Cache size for defer middleware.
245
245
  config_param :defer_cache_size, converter: ->(v) { Integer(v) }
246
246
 
247
+ # Maximum deferred store cache entries per Cassandra defer store. Env: PROSODY_DEFER_STORE_CACHE_SIZE
248
+ config_param :defer_store_cache_size, converter: ->(v) { Integer(v) }
249
+
247
250
  # Timeout for Kafka seek operations (in seconds).
248
251
  config_param :defer_seek_timeout, converter: ->(v) { duration_converter(v) }
249
252
 
@@ -6,5 +6,5 @@ module Prosody
6
6
  # This version number follows semantic versioning and is used by the
7
7
  # gem system to identify the library version. It should be updated
8
8
  # according to semver guidelines when making releases.
9
- VERSION = "0.1.1"
9
+ VERSION = "0.1.2"
10
10
  end
@@ -202,6 +202,10 @@ module Prosody
202
202
  def defer_cache_size: () -> Integer?
203
203
  def defer_cache_size=: (Integer | _ToInt) -> Integer
204
204
 
205
+ # Maximum deferred store cache entries. Env: PROSODY_DEFER_STORE_CACHE_SIZE
206
+ def defer_store_cache_size: () -> Integer?
207
+ def defer_store_cache_size=: (Integer | _ToInt) -> Integer
208
+
205
209
  # Defer seek timeout (seconds)
206
210
  def defer_seek_timeout: () -> Float?
207
211
  def defer_seek_timeout=: (Numeric) -> Float
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prosody
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Griffith
@@ -131,6 +131,7 @@ files:
131
131
  - Makefile
132
132
  - README.md
133
133
  - Rakefile
134
+ - docker-compose.yaml
134
135
  - ext/prosody/Cargo.toml
135
136
  - ext/prosody/extconf.rb
136
137
  - ext/prosody/src/admin.rs