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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot resume stream because SMID was previously deleted (no_previous_session_for_smid | XEP-0198) #4280

Open
hpedrorodrigues opened this issue May 17, 2024 · 0 comments

Comments

@hpedrorodrigues
Copy link

hpedrorodrigues commented May 17, 2024

MongooseIM version: 6.2.1
Installed from: image
Erlang/OTP version: 26


Hey 馃憢馃徎

I'm trying to implement stream resumption, and even though it works most of the time, there are cases where I receive this element:

<failed xmlns='urn:xmpp:sm:3'>
  <item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</failed>

This is because MongooseIM cannot find the SMID, but it's not clear the reason.

Example in the logs:

mongooseim-2 mongooseim when=2024-05-17T16:35:44.108910+00:00 level=warning what=resumption_error reason=no_previous_session_for_smid pid=<0.2231.0> at=mod_stream_management:do_handle_resume/5:591 smid=HD/9Rp5MZlPejuwIcw7WFqRd0UGq c2s_state="{c2s_data,<<\"localhost\">>,<<\"localhost\">>,<<\"en\">>,{1715963743730432,<0.2231.0>},<<\"d8a579a8baaf99d3\">>,{jid,<<\"dd316d53-89d7-4657-9630-d9683e755190_guest\">>,<<\"localhost\">>,<<>>},{c2s_socket,mod_websockets,{websocket,<0.2229.0>,{{10,66,8,73},54366},undefined}},{parser,#Ref<0.3472383861.1803419649.72374>,[]},none,#{access => all,port => 5280,hibernate_after => 0,shaper => none,max_stanza_size => 0,ip_tuple => {0,0,0,0},c2s_state_timeout => 15000,backwards_compatible_session => true,proto => tcp,xml_socket => true},#{},#{auth_module => mod_auth_token}}"
mongooseim-1 mongooseim when=2024-05-17T16:37:58.450467+00:00 level=warning what=resumption_error reason=no_previous_session_for_smid pid=<0.2246.0> at=mod_stream_management:do_handle_resume/5:591 smid=nOrlBYZqRRHna2SFTnlBdxmcK3JP c2s_state="{c2s_data,<<\"localhost\">>,<<\"localhost\">>,<<\"en\">>,{1715963877592039,<0.2246.0>},<<\"4aa3e96abff09c09\">>,{jid,<<\"65e71aa6c872d621528016d4\">>,<<\"localhost\">>,<<>>},{c2s_socket,mod_websockets,{websocket,<0.2244.0>,{{10,66,11,16},57094},undefined}},{parser,#Ref<0.2465983669.3682467841.139461>,[]},none,#{access => all,port => 5280,hibernate_after => 0,shaper => none,max_stanza_size => 0,ip_tuple => {0,0,0,0},c2s_state_timeout => 15000,backwards_compatible_session => true,proto => tcp,xml_socket => true},#{},#{auth_module => mod_auth_token}}"

Example in the socket:

Screenshot 2024-05-17 at 15 37 53
mongooseim.toml
# https://esl.github.io/MongooseDocs/latest/configuration/general
[general]
loglevel = "debug"
language = "en"
hosts = ["localhost"]
default_server_domain = "localhost"
registration_timeout = "infinity"
rdbms_server_type = "pgsql"
sm_backend = "redis"
max_fsm_queue = 1000

# https://esl.github.io/MongooseDocs/latest/configuration/listen/
# BOSH (Bidirectional-streams Over Synchronous HTTP | HTTP long-polling) and WebSockets
[[listen.http]]
ip_address = "0.0.0.0"
port = 5280
transport.num_acceptors = 10
transport.max_connections = 1024

[[listen.http.handlers.mod_bosh]]
host = "_"
path = "/http-bind"

[[listen.http.handlers.mod_websockets]]
host = "_"
path = "/ws-xmpp"

# REST client port: https://esl.github.io/MongooseDocs/latest/rest-api/Client-frontend/
[[listen.http]]
ip_address = "0.0.0.0"
port = 8088
transport.num_acceptors = 10
transport.max_connections = 1024
protocol.compress = true

[[listen.http.handlers.mongoose_client_api]]
host = "_"
path = "/api"

[[listen.http.handlers.mongoose_graphql_handler]]
host = "_"
path = "/api/graphql"
schema_endpoint = "user"

# REST admin port: https://esl.github.io/MongooseDocs/latest/rest-api/Administration-backend/
[[listen.http]]
ip_address = "0.0.0.0"
port = 8089
transport.num_acceptors = 10
transport.max_connections = 1024
protocol.compress = true

[[listen.http.handlers.mod_websockets]]
host = "_"
path = "/ws-xmpp"

[[listen.http.handlers.mongoose_admin_api]]
host = "_"
path = "/api"
username = "${MONGOOSEIM_USER}"
password = "${MONGOOSEIM_PASSWORD}"

[[listen.http.handlers.mongoose_graphql_handler]]
host = "_"
path = "/api/graphql"
schema_endpoint = "admin"
username = "${MONGOOSEIM_USER}"
password = "${MONGOOSEIM_PASSWORD}"

# Client-to-server connections
[[listen.c2s]]
port = 5222
access = "c2s"
shaper = "c2s_shaper"
max_stanza_size = 65536

[auth]
methods = ["rdbms"]
sasl_external = ["standard"]

[auth.rdbms]
users_number_estimate = true

[outgoing_pools.redis.default]
scope = "global"

[outgoing_pools.redis.default.connection]
host = "${REDIS_HOST}"
port = 6379
database = 0

[outgoing_pools.rdbms.default]
scope = "global"

[outgoing_pools.rdbms.default.connection]
driver = "pgsql"
host = "${POSTGRES_HOST}"
port = ${POSTGRES_PORT}
database = "${POSTGRES_DB_NAME}"
username = "${POSTGRES_USER}"
password = "${POSTGRES_PASSWORD}"

[modules.mod_adhoc]

[modules.mod_disco]
users_can_see_hidden_services = false

[modules.mod_cache_users]

[modules.mod_ping]

[modules.mod_muc]
host = "conference.@HOST@"
access = "muc"
access_create = "muc_create"
backend = "rdbms"
default_room.allow_multiple_sessions = true
default_room.persistent = true

[modules.mod_presence]

[modules.mod_mam]
muc.backend = "rdbms"
backend = "rdbms"
no_stanzaid_element = true
pm.user_prefs_store = "rdbms"
archive_chat_markers = true
max_result_limit = 1000
pm.archive_groupchats = true

[modules.mod_inbox]
backend = "rdbms_async"
reset_markers = ["displayed"]
groupchat = ["muc"]

[modules.mod_muc_log]

[modules.mod_muc_light]
backend = "rdbms"

[modules.mod_stream_management]

[modules.mod_last]
backend = "rdbms"

[modules.mod_roster]
backend = "rdbms"

[modules.mod_private]
backend = "rdbms"

[modules.mod_caps]
cache_size = 2000
cache_life_time = 10_000

[modules.mod_event_pusher.rabbit]
presence_exchange.name = "presence"
presence_exchange.type = "topic"
chat_msg_exchange.name = "chat_msg"
chat_msg_exchange.sent_topic = "mongooseim_chat_msg_sent"
chat_msg_exchange.recv_topic = "mongooseim_chat_msg_recv"
groupchat_msg_exchange.name = "groupchat_msg"
groupchat_msg_exchange.sent_topic = "mongooseim_groupchat_msg_sent"
groupchat_msg_exchange.recv_topic = "mongooseim_groupchat_msg_recv"

[outgoing_pools.rabbit.event_pusher.connection]
host = "${RABBITMQ_HOST}"
port = 5672
username = "${RABBITMQ_DEFAULT_USER}"
password = "${RABBITMQ_DEFAULT_PASSWORD}"
confirms_enabled = false
max_worker_queue_len = 1000

[modules.mod_offline_stub]

[modules.mod_sic]

[modules.mod_vcard]
host = "vjud.@HOST@"
backend = "rdbms"

[modules.mod_auth_token]
backend = "rdbms"
iqdisc.type = "queues"
iqdisc.workers = 20
validity_period.access = {value = 1, unit = "hours"}
validity_period.refresh = {value = 25, unit = "days"}

[modules.mod_keystore]
keys = [{name = "token_secret", type = "ram"}]

[shaper.normal]
max_rate = 1000

[shaper.fast]
max_rate = 50_000

[shaper.mam_shaper]
max_rate = 1

[shaper.mam_global_shaper]
max_rate = 1000

[acl]
local = [{}]

[access]
max_user_sessions = [
  {acl = "all", value = 10}
]

max_user_offline_messages = [
  {acl = "admin", value = 5000},
  {acl = "all", value = 100}
]

local = [
  {acl = "local", value = "allow"}
]

c2s = [
  {acl = "blocked", value = "deny"},
  {acl = "all", value = "allow"}
]

c2s_shaper = [
  {acl = "admin", value = "none"},
  {acl = "all", value = "normal"}
]

muc_admin = [
  {acl = "admin", value = "allow"}
]

muc_create = [
  {acl = "local", value = "allow"}
]

muc = [
  {acl = "all", value = "allow"}
]

mam_set_prefs = [
  {acl = "all", value = "default"}
]

mam_get_prefs = [
  {acl = "all", value = "default"}
]

mam_lookup_messages = [
  {acl = "all", value = "default"}
]

mam_set_prefs_shaper = [
  {acl = "all", value = "mam_shaper"}
]

mam_get_prefs_shaper = [
  {acl = "all", value = "mam_shaper"}
]

mam_lookup_messages_shaper = [
  {acl = "all", value = "mam_shaper"}
]

mam_set_prefs_global_shaper = [
  {acl = "all", value = "mam_global_shaper"}
]

mam_get_prefs_global_shaper = [
  {acl = "all", value = "mam_global_shaper"}
]

mam_lookup_messages_global_shaper = [
  {acl = "all", value = "mam_global_shaper"}
]

[[host_config]]
host = "anonymous.localhost"

[host_config.auth.anonymous]
allow_multiple_connections = true
protocol = "both"

Sharing these files in case they can help:


Not sure if I'm missing something here. Any help will be appreciated! Thanks. 馃檹馃徎

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

No branches or pull requests

1 participant