Arnaud Spiwack
bd25f8bee3
Unmask the forked thread in newPipeline
...
The `newPipeline` function, used as part of `connect`, forks a
listener thread. Before this commit, the thread is forked with
`forkFinally`, where the thread action is run in the same mask as the
parent thread. The thread is then killed by a `killThread` when
closing a connection.
This is typically not a problem if the mask is “masked” (or,
obviously, “unmasked”), because the listener is generally blocked on a
channel at some time or other, and therefore will accept the
asynchronous exception thrown by `killThread`, and terminate.
However, if the mask is “masked uninterruptible”, then the listener
definitely doesn't receive asynchronous exceptions, and the
`killThread` calls hangs, and never returns.
One should probably never call `connect` in a “masked uninterruptible”
action. However, it sounds better to protect the mongoDB library
against the user accidentally doing so than to add a big warning
saying that calling `connect` in “masked uninterruptible” will cause
the program to hang down the line.
Therefore, this commit uses `forkIOWithUnmask`, in order to run the
thread action always in an “unmasked” state. In which case we can be
sure that we can always kill the listener thread regardless of the
client code.
2019-10-29 09:49:44 +01:00
Victor Denisov
9e0781dff5
Use stm channels
2018-04-28 16:12:11 -07:00
Victor Denisov
746e670bf0
Drain remaining var in response queue
2016-10-30 00:08:40 -07:00
Victor Denisov
04e5dd3248
Return error if listening thread is closed
2016-10-30 00:08:40 -07:00
Victor Denisov
7fc095725f
Make psend's argument message strict ( #55 )
...
If the message argument can't be evaluated successfully
strict modifier will keep those errors outside of
psend invocation. Psend will catch only actual IO exceptions.
2016-06-02 07:46:24 -07:00
Victor Denisov
a632e8ff55
Collect size restrictions from the server
2016-05-26 23:03:55 -07:00
Victor Denisov
2ba71ca277
Retrieve server data on connection
2016-05-21 13:32:04 -07:00
Victor Denisov
89ee88e67c
Rename Internal.Connection module to Transport
2016-05-02 21:30:00 -07:00
Victor Denisov
a4e5726e1e
Clean up redundant warnings
2016-05-01 19:11:02 -07:00
Victor Denisov
655f4b90bc
Rename readExactly to read
2016-05-01 19:05:51 -07:00
Victor Denisov
73dfdb0b7f
Remove IOStream from Internal.Protocol
2016-05-01 18:17:22 -07:00
Victor Denisov
c011b1a23c
Move content of System.IO.Pipeline to Internal.Protocol
2016-05-01 17:34:06 -07:00
Victor Denisov
19e631c9f4
Implement readExactly using hGet
2016-04-30 14:08:19 -07:00
Victor Denisov
e45d9329e9
Address performance issues with insert
...
Compile notices and request into one strict string for performance
boost.
2015-08-29 22:37:05 -07:00
Mikkel Christiansen
f69440d7fa
Remove applicative import warnings in GHC 7.10.1.
2015-05-15 15:26:34 +02:00
Greg Weber
98bcc2dfe8
abstract connection interface
...
rebase #13 to master
2015-03-05 11:21:58 -08:00
Michael Snoyman
caab81a54e
Get rid of usage of ErrorT
2013-12-26 17:23:02 +02:00
Michael Snoyman
756c9181cb
Replace hard tabs with spaces
2013-12-26 16:57:33 +02:00
Fedor Gogolev
dd6a3010f6
Cleaned up imports
2012-06-10 23:47:14 +04:00
Fedor Gogolev
17f528e835
Use text instead of compact-string-fix
2012-05-08 19:13:25 +04:00
Tony Hannan
d506011cd1
fix some warnings. bump version for previous 7.2.1 compatibility fix
2011-11-10 10:23:07 -05:00
Tony Hannan
c99cb54251
Partial results option
2011-07-22 10:38:50 -04:00
Tony Hannan
17ceb53234
tailable cursor
2011-07-22 10:31:24 -04:00
Tony Hannan
5e4a8aee3f
insertAll (KeepGoing)
2011-07-21 16:39:19 -04:00
Tony Hannan
acb0d62aa2
Intro to Haskell article (first draft)
2011-07-14 18:47:14 -04:00
Tony Hannan
8025ac4ec4
Small edits to some comments. fix secondaryOk to return master only when no secondaries available
2011-07-13 15:34:52 -04:00
Tony Hannan
91c88c0a14
combined read & write mode into a single access mode. newtyped Action monad. liftDB for monads stacked on top of Action. fetch op
2011-07-08 22:13:47 -04:00
Tony Hannan
9f48c26384
Simplify! Removed Context and Throw monad classes. Removed embedded pool from replica-set. Not backwards-compatible, starts new major version 1.x
2011-07-05 10:37:01 -04:00
Tony Hannan
db58a9c4ca
use md5 from cryptohash package instead of nano-md5 to remove dependency on OpenSSL
2011-03-11 11:11:14 -05:00
Tony Hannan
73012bb430
Single param Network instance. NetworkIO instance of IO that yields Internet so user does not have to supply it
2010-12-27 00:23:02 -05:00
Tony Hannan
111d9a2f72
Abstract network communication so we can capture and replay messages if desired. Also, remove dependence on deprecated ImpredicativeTypes.
2010-12-19 21:08:53 -05:00
Tony Hannan
36cc86fd70
Rename Connection to ConnPool. Edit tutorial and some comments
2010-10-31 20:38:38 -04:00
Tony Hannan
583f8330c7
Fix compile warnings
2010-10-27 16:46:11 -04:00
Tony Hannan
de32b22b4f
Connection pooling and some refactoring
2010-10-27 16:13:23 -04:00
Tony Hannan
3a7f235246
Slight API refactoring. Fix spinning pipeline when other end disconnects. Handle response flags correctly
2010-07-27 17:18:53 -04:00
Tony Hannan
6435bc3cd9
Handle response flags correctly, plus some comment changes
2010-07-03 13:15:30 -04:00
Tony Hannan
c9dc87ad33
Slight redesign: pipelining with writeMode instead of exclusive access with getLastError
2010-06-21 11:06:20 -04:00
Tony Hannan
d0ddc814a9
Change comments to reflect new knowledge that a cursor persists across connections, and map/reduce temp output is accessible from all connections as long as original remains alive
2010-06-15 16:15:37 -04:00
Tony Hannan
3e4065cd97
See V0.5.0-Redesign.md for description of changes in this commit
2010-06-14 23:14:40 -04:00