Skip to content

Commit 0ba3e69

Browse files
committed
Revert "smp server: persist notifications to avoid losing them when ntf server is offline (#1336)"
This reverts commit 0739f7b.
1 parent 2ab0c2a commit 0ba3e69

File tree

15 files changed

+337
-612
lines changed

15 files changed

+337
-612
lines changed

simplexmq.cabal

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@ library
174174
Simplex.Messaging.Server.Main
175175
Simplex.Messaging.Server.MsgStore
176176
Simplex.Messaging.Server.MsgStore.STM
177-
Simplex.Messaging.Server.NtfStore
178177
Simplex.Messaging.Server.QueueStore
179178
Simplex.Messaging.Server.QueueStore.QueueInfo
180179
Simplex.Messaging.Server.QueueStore.STM

src/Simplex/Messaging/Notifications/Server.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,9 @@ ntfSubscriber NtfSubscriber {smpSubscribers, newSubQ, smpAgent = ca@SMPClientAge
220220
NtfPushServer {pushQ} <- asks pushServer
221221
stats <- asks serverStats
222222
liftIO $ updatePeriodStats (activeSubs stats) ntfId
223-
atomically (findNtfSubscriptionToken st smpQueue)
224-
>>= mapM_ (\tkn -> atomically (writeTBQueue pushQ (tkn, PNMessage (PNMessageData {smpQueue, ntfTs, nmsgNonce, encNMsgMeta} :| []))))
223+
atomically $
224+
findNtfSubscriptionToken st smpQueue
225+
>>= mapM_ (\tkn -> writeTBQueue pushQ (tkn, PNMessage (PNMessageData {smpQueue, ntfTs, nmsgNonce, encNMsgMeta} :| [])))
225226
incNtfStat ntfReceived
226227
Right SMP.END ->
227228
whenM (atomically $ activeClientSession' ca sessionId srv) $

src/Simplex/Messaging/Server.hs

Lines changed: 45 additions & 128 deletions
Large diffs are not rendered by default.

src/Simplex/Messaging/Server/Env/STM.hs

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import Simplex.Messaging.Protocol
3838
import Simplex.Messaging.Server.Expiration
3939
import Simplex.Messaging.Server.Information
4040
import Simplex.Messaging.Server.MsgStore.STM
41-
import Simplex.Messaging.Server.NtfStore
4241
import Simplex.Messaging.Server.QueueStore (NtfCreds (..), QueueRec (..))
4342
import Simplex.Messaging.Server.QueueStore.STM
4443
import Simplex.Messaging.Server.Stats
@@ -62,7 +61,6 @@ data ServerConfig = ServerConfig
6261
msgIdBytes :: Int,
6362
storeLogFile :: Maybe FilePath,
6463
storeMsgsFile :: Maybe FilePath,
65-
storeNtfsFile :: Maybe FilePath,
6664
-- | set to False to prohibit creating new queues
6765
allowNewQueues :: Bool,
6866
-- | simple password that the clients need to pass in handshake to be able to create new queues
@@ -72,8 +70,6 @@ data ServerConfig = ServerConfig
7270
controlPortAdminAuth :: Maybe BasicAuth,
7371
-- | time after which the messages can be removed from the queues and check interval, seconds
7472
messageExpiration :: Maybe ExpirationConfig,
75-
-- | notification expiration interval (seconds)
76-
notificationExpiration :: ExpirationConfig,
7773
-- | time after which the socket with inactive client can be disconnected (without any messages or commands, incl. PING),
7874
-- and check interval, seconds
7975
inactiveClientExpiration :: Maybe ExpirationConfig,
@@ -86,8 +82,6 @@ data ServerConfig = ServerConfig
8682
serverStatsLogFile :: FilePath,
8783
-- | file to save and restore stats
8884
serverStatsBackupFile :: Maybe FilePath,
89-
-- | notification delivery interval
90-
ntfDeliveryInterval :: Int,
9185
-- | interval between sending pending END events to unsubscribed clients, seconds
9286
pendingENDInterval :: Int,
9387
smpCredentials :: ServerCredentials,
@@ -116,16 +110,6 @@ defaultMessageExpiration =
116110
checkInterval = 43200 -- seconds, 12 hours
117111
}
118112

119-
defNtfExpirationHours :: Int64
120-
defNtfExpirationHours = 24
121-
122-
defaultNtfExpiration :: ExpirationConfig
123-
defaultNtfExpiration =
124-
ExpirationConfig
125-
{ ttl = defNtfExpirationHours * 3600, -- seconds
126-
checkInterval = 3600 -- seconds, 1 hour
127-
}
128-
129113
defaultInactiveClientExpiration :: ExpirationConfig
130114
defaultInactiveClientExpiration =
131115
ExpirationConfig
@@ -143,7 +127,6 @@ data Env = Env
143127
serverIdentity :: KeyHash,
144128
queueStore :: QueueStore,
145129
msgStore :: STMMsgStore,
146-
ntfStore :: NtfStore,
147130
random :: TVar ChaChaDRG,
148131
storeLog :: Maybe (StoreLog 'WriteMode),
149132
tlsServerCreds :: T.Credential,
@@ -246,7 +229,6 @@ newEnv config@ServerConfig {smpCredentials, httpCredentials, storeLogFile, smpAg
246229
server <- newServer
247230
queueStore <- newQueueStore
248231
msgStore <- newMsgStore
249-
ntfStore <- NtfStore <$> TM.emptyIO
250232
random <- C.newRandom
251233
storeLog <-
252234
forM storeLogFile $ \f -> do
@@ -262,7 +244,7 @@ newEnv config@ServerConfig {smpCredentials, httpCredentials, storeLogFile, smpAg
262244
clientSeq <- newTVarIO 0
263245
clients <- newTVarIO mempty
264246
proxyAgent <- newSMPProxyAgent smpAgentCfg random
265-
pure Env {config, serverInfo, server, serverIdentity, queueStore, msgStore, ntfStore, random, storeLog, tlsServerCreds, httpServerCreds, serverStats, sockets, clientSeq, clients, proxyAgent}
247+
pure Env {config, serverInfo, server, serverIdentity, queueStore, msgStore, random, storeLog, tlsServerCreds, httpServerCreds, serverStats, sockets, clientSeq, clients, proxyAgent}
266248
where
267249
getCredentials protocol creds = do
268250
files <- missingCreds

src/Simplex/Messaging/Server/Main.hs

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import Simplex.Messaging.Parsers (parseAll)
3838
import Simplex.Messaging.Protocol (BasicAuth (..), ProtoServerWithAuth (ProtoServerWithAuth), pattern SMPServer)
3939
import Simplex.Messaging.Server (AttachHTTP, runSMPServer)
4040
import Simplex.Messaging.Server.CLI
41-
import Simplex.Messaging.Server.Env.STM
41+
import Simplex.Messaging.Server.Env.STM (ServerConfig (..), defMsgExpirationDays, defaultInactiveClientExpiration, defaultMessageExpiration, defaultProxyClientConcurrency)
4242
import Simplex.Messaging.Server.Expiration
4343
import Simplex.Messaging.Server.Information
4444
import Simplex.Messaging.Transport (batchCmdsSMPVersion, sendingProxySMPVersion, simplexMQVersion, supportedServerSMPRelayVRange)
@@ -154,8 +154,7 @@ smpServerCLI_ generateSite serveStaticFiles attachStaticFiles cfgPath logPath =
154154
<> "# Undelivered messages are optionally saved and restored when the server restarts,\n\
155155
\# they are preserved in the .bak file until the next restart.\n"
156156
<> ("restore_messages: " <> onOff enableStoreLog <> "\n")
157-
<> ("expire_messages_days: " <> tshow defMsgExpirationDays <> "\n")
158-
<> ("expire_ntfs_hours: " <> tshow defNtfExpirationHours <> "\n\n")
157+
<> ("expire_messages_days: " <> tshow defMsgExpirationDays <> "\n\n")
159158
<> "# Log daily server statistics to CSV file\n"
160159
<> ("log_stats: " <> onOff logStats <> "\n\n")
161160
<> "[AUTH]\n\
@@ -269,11 +268,6 @@ smpServerCLI_ generateSite serveStaticFiles attachStaticFiles cfgPath logPath =
269268
enableStoreLog = settingIsOn "STORE_LOG" "enable" ini
270269
logStats = settingIsOn "STORE_LOG" "log_stats" ini
271270
c = combine cfgPath . ($ defaultX509Config)
272-
restoreMessagesFile path = case iniOnOff "STORE_LOG" "restore_messages" ini of
273-
Just True -> Just path
274-
Just False -> Nothing
275-
-- if the setting is not set, it is enabled when store log is enabled
276-
_ -> enableStoreLog $> path
277271
transports = iniTransports ini
278272
sharedHTTP = any (\(_, _, addHTTP) -> addHTTP) transports
279273
serverConfig =
@@ -292,8 +286,13 @@ smpServerCLI_ generateSite serveStaticFiles attachStaticFiles cfgPath logPath =
292286
},
293287
httpCredentials = (\WebHttpsParams {key, cert} -> ServerCredentials {caCertificateFile = Nothing, privateKeyFile = key, certificateFile = cert}) <$> webHttpsParams',
294288
storeLogFile = enableStoreLog $> storeLogFilePath,
295-
storeMsgsFile = restoreMessagesFile $ combine logPath "smp-server-messages.log",
296-
storeNtfsFile = restoreMessagesFile $ combine logPath "smp-server-ntfs.log",
289+
storeMsgsFile =
290+
let messagesPath = combine logPath "smp-server-messages.log"
291+
in case iniOnOff "STORE_LOG" "restore_messages" ini of
292+
Just True -> Just messagesPath
293+
Just False -> Nothing
294+
-- if the setting is not set, it is enabled when store log is enabled
295+
_ -> enableStoreLog $> messagesPath,
297296
-- allow creating new queues by default
298297
allowNewQueues = fromMaybe True $ iniOnOff "AUTH" "new_queues" ini,
299298
newQueueBasicAuth = either error id <$!> strDecodeIni "AUTH" "create_password" ini,
@@ -304,10 +303,6 @@ smpServerCLI_ generateSite serveStaticFiles attachStaticFiles cfgPath logPath =
304303
defaultMessageExpiration
305304
{ ttl = 86400 * readIniDefault defMsgExpirationDays "STORE_LOG" "expire_messages_days" ini
306305
},
307-
notificationExpiration =
308-
defaultNtfExpiration
309-
{ ttl = 3600 * readIniDefault defNtfExpirationHours "STORE_LOG" "expire_ntfs_hours" ini
310-
},
311306
inactiveClientExpiration =
312307
settingIsOn "INACTIVE_CLIENTS" "disconnect" ini
313308
$> ExpirationConfig
@@ -319,7 +314,6 @@ smpServerCLI_ generateSite serveStaticFiles attachStaticFiles cfgPath logPath =
319314
serverStatsLogFile = combine logPath "smp-server-stats.daily.log",
320315
serverStatsBackupFile = logStats $> combine logPath "smp-server-stats.log",
321316
pendingENDInterval = 15000000, -- 15 seconds
322-
ntfDeliveryInterval = 3000000, -- 3 seconds
323317
smpServerVRange = supportedServerSMPRelayVRange,
324318
transportConfig =
325319
defaultTransportServerConfig

src/Simplex/Messaging/Server/NtfStore.hs

Lines changed: 0 additions & 77 deletions
This file was deleted.

src/Simplex/Messaging/Server/Stats.hs

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,8 @@ data ServerStats = ServerStats
6767
msgRecvNtf :: IORef Int, -- received messages with NTF flag
6868
activeQueuesNtf :: PeriodStats,
6969
msgNtfs :: IORef Int, -- messages notications delivered to NTF server (<= msgSentNtf)
70-
msgNtfsB :: IORef Int, -- messages notication batches delivered to NTF server
7170
msgNtfNoSub :: IORef Int, -- no subscriber to notifications (e.g., NTF server not connected)
7271
msgNtfLost :: IORef Int, -- notification is lost because NTF delivery queue is full
73-
msgNtfExpired :: IORef Int, -- expired
7472
pRelays :: ProxyStats,
7573
pRelaysOwn :: ProxyStats,
7674
pMsgFwds :: ProxyStats,
@@ -119,10 +117,8 @@ data ServerStatsData = ServerStatsData
119117
_msgRecvNtf :: Int,
120118
_activeQueuesNtf :: PeriodStatsData,
121119
_msgNtfs :: Int,
122-
_msgNtfsB :: Int,
123120
_msgNtfNoSub :: Int,
124121
_msgNtfLost :: Int,
125-
_msgNtfExpired :: Int,
126122
_pRelays :: ProxyStatsData,
127123
_pRelaysOwn :: ProxyStatsData,
128124
_pMsgFwds :: ProxyStatsData,
@@ -173,10 +169,8 @@ newServerStats ts = do
173169
msgRecvNtf <- newIORef 0
174170
activeQueuesNtf <- newPeriodStats
175171
msgNtfs <- newIORef 0
176-
msgNtfsB <- newIORef 0
177172
msgNtfNoSub <- newIORef 0
178173
msgNtfLost <- newIORef 0
179-
msgNtfExpired <- newIORef 0
180174
pRelays <- newProxyStats
181175
pRelaysOwn <- newProxyStats
182176
pMsgFwds <- newProxyStats
@@ -224,10 +218,8 @@ newServerStats ts = do
224218
msgRecvNtf,
225219
activeQueuesNtf,
226220
msgNtfs,
227-
msgNtfsB,
228221
msgNtfNoSub,
229222
msgNtfLost,
230-
msgNtfExpired,
231223
pRelays,
232224
pRelaysOwn,
233225
pMsgFwds,
@@ -277,10 +269,8 @@ getServerStatsData s = do
277269
_msgRecvNtf <- readIORef $ msgRecvNtf s
278270
_activeQueuesNtf <- getPeriodStatsData $ activeQueuesNtf s
279271
_msgNtfs <- readIORef $ msgNtfs s
280-
_msgNtfsB <- readIORef $ msgNtfsB s
281272
_msgNtfNoSub <- readIORef $ msgNtfNoSub s
282273
_msgNtfLost <- readIORef $ msgNtfLost s
283-
_msgNtfExpired <- readIORef $ msgNtfExpired s
284274
_pRelays <- getProxyStatsData $ pRelays s
285275
_pRelaysOwn <- getProxyStatsData $ pRelaysOwn s
286276
_pMsgFwds <- getProxyStatsData $ pMsgFwds s
@@ -328,10 +318,8 @@ getServerStatsData s = do
328318
_msgRecvNtf,
329319
_activeQueuesNtf,
330320
_msgNtfs,
331-
_msgNtfsB,
332321
_msgNtfNoSub,
333322
_msgNtfLost,
334-
_msgNtfExpired,
335323
_pRelays,
336324
_pRelaysOwn,
337325
_pMsgFwds,
@@ -382,10 +370,8 @@ setServerStats s d = do
382370
writeIORef (msgRecvNtf s) $! _msgRecvNtf d
383371
setPeriodStats (activeQueuesNtf s) (_activeQueuesNtf d)
384372
writeIORef (msgNtfs s) $! _msgNtfs d
385-
writeIORef (msgNtfsB s) $! _msgNtfsB d
386373
writeIORef (msgNtfNoSub s) $! _msgNtfNoSub d
387374
writeIORef (msgNtfLost s) $! _msgNtfLost d
388-
writeIORef (msgNtfExpired s) $! _msgNtfExpired d
389375
setProxyStats (pRelays s) $! _pRelays d
390376
setProxyStats (pRelaysOwn s) $! _pRelaysOwn d
391377
setProxyStats (pMsgFwds s) $! _pMsgFwds d
@@ -434,10 +420,8 @@ instance StrEncoding ServerStatsData where
434420
"msgSentNtf=" <> strEncode (_msgSentNtf d),
435421
"msgRecvNtf=" <> strEncode (_msgRecvNtf d),
436422
"msgNtfs=" <> strEncode (_msgNtfs d),
437-
"msgNtfsB=" <> strEncode (_msgNtfsB d),
438423
"msgNtfNoSub=" <> strEncode (_msgNtfNoSub d),
439424
"msgNtfLost=" <> strEncode (_msgNtfLost d),
440-
"msgNtfExpired=" <> strEncode (_msgNtfExpired d),
441425
"activeQueues:",
442426
strEncode (_activeQueues d),
443427
"activeQueuesNtf:",
@@ -491,10 +475,8 @@ instance StrEncoding ServerStatsData where
491475
_msgSentNtf <- opt "msgSentNtf="
492476
_msgRecvNtf <- opt "msgRecvNtf="
493477
_msgNtfs <- opt "msgNtfs="
494-
_msgNtfsB <- opt "msgNtfsB="
495478
_msgNtfNoSub <- opt "msgNtfNoSub="
496479
_msgNtfLost <- opt "msgNtfLost="
497-
_msgNtfExpired <- opt "msgNtfExpired="
498480
_activeQueues <-
499481
optional ("activeQueues:" <* A.endOfLine) >>= \case
500482
Just _ -> strP <* optional A.endOfLine
@@ -554,10 +536,8 @@ instance StrEncoding ServerStatsData where
554536
_msgSentNtf,
555537
_msgRecvNtf,
556538
_msgNtfs,
557-
_msgNtfsB,
558539
_msgNtfNoSub,
559540
_msgNtfLost,
560-
_msgNtfExpired,
561541
_activeQueues,
562542
_activeQueuesNtf,
563543
_pRelays,

src/Simplex/Messaging/TMap.hs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ module Simplex.Messaging.TMap
99
member,
1010
memberIO,
1111
insert,
12-
insertM,
1312
delete,
1413
lookupInsert,
1514
lookupDelete,
@@ -63,10 +62,6 @@ insert :: Ord k => k -> a -> TMap k a -> STM ()
6362
insert k v m = modifyTVar' m $ M.insert k v
6463
{-# INLINE insert #-}
6564

66-
insertM :: Ord k => k -> STM a -> TMap k a -> STM ()
67-
insertM k f m = modifyTVar' m . M.insert k =<< f
68-
{-# INLINE insertM #-}
69-
7065
delete :: Ord k => k -> TMap k a -> STM ()
7166
delete k m = modifyTVar' m $ M.delete k
7267
{-# INLINE delete #-}

0 commit comments

Comments
 (0)