forked from mongodb/docs-ruby
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommon-errors.txt
123 lines (88 loc) · 5.28 KB
/
common-errors.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
.. _ruby-common-errors:
=============
Common Errors
=============
.. default-domain:: mongodb
.. contents:: On this page
:local:
:backlinks: none
:depth: 2
:class: singlecol
No Server is Available Matching Preference
------------------------------------------
If you receive the following error:
.. code-block:: ruby
> client[:contacts].insert_one({ vpa: 'cool@cool'})
Mongo::Error::NoServerAvailable: No server is available matching preference: #<Mongo::ServerSelector::Primary:0x14987080 tag_sets=[] max_staleness=nil> using server_selection_timeout=30 and local_threshold=0.015
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/server_selector/selectable.rb:115:in `select_server'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/cluster.rb:246:in `next_primary'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/retryable.rb:150:in `legacy_write_with_retry'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/retryable.rb:103:in `write_with_retry'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/collection.rb:422:in `block in insert_one'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/client.rb:485:in `with_session'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/collection.rb:421:in `insert_one'
from (irb):6
from /rvm/rubies/ruby-2.4.2/bin/irb:11:in `<main>'
This error was produced on Ruby Driver version 2.6.x and earlier. This error is
raised when the driver is unable to connect to the server. In order to solve
this, you can try the following:
- Update the driver to the most recent 2.x release.
- Ensure that the port number is correct in the URI/connection string, or the
host list.
- If you are connecting to Atlas, ensure that the firewall rules are configured
correctly. See the documentation on `Cluster Security <https://www.mongodb.com/docs/atlas/setup-cluster-security/>`_.
See more on this issue here:
`RUBY-1281 <https://jira.mongodb.org/browse/RUBY-1281>`_.
``OperationFailure`` When Reading ``local`` Database With Auth On
-----------------------------------------------------------------
If you are getting the following error when trying to read the ``local`` database:
.. code-block:: ruby
Mongo::Error::OperationFailure: not authorized on local to execute command { find: "oplog.rs", filter: { ts:
{ $gte: Timestamp 1497449043000|0 } }, sort: { $natural: 1 } } (13)
You can fix this by adjusting the roles your user has and ensuring that it has
privileges to the local database. If you specifically want to access the oplog,
you can also create a custom role with read access to the local database's
``oplog.rs`` collection. You can find more information about role management
`here <https://www.mongodb.com/docs/manual/reference/method/js-role-management/>`_.
You can find more information about this issue here:
`MONGOID-4446 <https://jira.mongodb.org/browse/MONGOID-4446>`_.
``SocketTimeoutError`` and name resolution errors on EC2
--------------------------------------------------------
Some users reported getting the following error:
.. code-block:: ruby
Exception
Mongo::Error::SocketTimeoutError
Error
execution expired
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket/ssl.rb:57:in `pack_sockaddr_in'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket/ssl.rb:57:in `block (2 levels) in connect!'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket.rb:199:in `handle_errors'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket/ssl.rb:57:in `block in connect!'
/usr/lib/ruby/2.3.0/timeout.rb:101:in `timeout'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket/ssl.rb:56:in `connect!'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/address.rb:172:in `connect_socket!'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/server/connection.rb:86:in `connect!'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/server/connectable.rb:84:in `ensure_connected'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/server/connection.rb:256:in `write'
This error was last reported on Ruby Driver version 2.5.1, so updating the driver
can potentially solve this issue. A user has reported that they solved this issue
as follows:
.. blockquote::
DNS servers on EC2 are generated in /etc/resolv.conf by default. Following
the `answer <https://askubuntu.com/questions/157154/how-do-i-include-lines-in-resolv-conf-that-wont-get-lost-on-reboot?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa>`_
and setting the nameservers to Google NS I was able to fix this issue.
You can find more information about this issue here:
`MONGOID-4527 <https://jira.mongodb.org/browse/MONGOID-4527>`_.
``Mongo::Auth::Unauthorized`` User is Not Authorized to Access
--------------------------------------------------------------
Some users reported getting the following error:
.. code-block:: ruby
Mongo::Auth::Unauthorized: User ... is not authorized to access ...
After upgrading to Ruby Driver version 2.5+, the driver was changed to use
the scram authorization mechanism by default. This error might happen if the
authorization mechanism your user was created with does not match the
authorization mechanism used by the driver. You can specify the preferred
authorization mechanism using the ``auth_mech`` option in your ``mongoid.yml``
file.
See more on this issue here:
`RUBY-1684 <https://jira.mongodb.org/browse/RUBY-1684>`_.