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’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The post request returning error when indexer is empty #8

Open
MirMustafaAli opened this issue Dec 11, 2020 · 0 comments
Open

The post request returning error when indexer is empty #8

MirMustafaAli opened this issue Dec 11, 2020 · 0 comments

Comments

@MirMustafaAli
Copy link
Contributor

My kafka topic has no message which leads to indexers being empty. while in this state is expected the API response for a post request to be empty but i am getting the error below

`

<title>AttributeError: 'NoneType' object has no attribute 'search' // Werkzeug Debugger</title> <script src="?__debugger__=yes&cmd=resource&f=jquery.js"></script> <script src="?__debugger__=yes&cmd=resource&f=debugger.js"></script> <script type="text/javascript"> var TRACEBACK = 140203188669968, CONSOLE_MODE = false, EVALEX = true, EVALEX_TRUSTED = false, SECRET = "7bS2IT5ce5W23A3ZiIv7"; </script>

AttributeError

AttributeError: 'NoneType' object has no attribute 'search'

Traceback (most recent call last)

		<ul>
			<li>
				<div class="frame" id="frame-140203188670352">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py"</cite>,
						line <em class="line">2464</em>,
						in <code class="function">__call__</code></h4>
					<div class="source library">
						<pre class="line before"><span class="ws"></span> </pre>
						<pre
							class="line before"><span class="ws">    </span>def __call__(self, environ, start_response):</pre>
						<pre
							class="line before"><span class="ws">        </span>&quot;&quot;&quot;The WSGI server calls the Flask application object as the</pre>
						<pre
							class="line before"><span class="ws">        </span>WSGI application. This calls :meth:`wsgi_app` which can be</pre>
						<pre
							class="line before"><span class="ws">        </span>wrapped to applying middleware.&quot;&quot;&quot;</pre>
						<pre
							class="line current"><span class="ws">        </span>return self.wsgi_app(environ, start_response)</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre class="line after"><span class="ws">    </span>def __repr__(self):</pre>
						<pre
							class="line after"><span class="ws">        </span>return &quot;&lt;%s %r&gt;&quot; % (self.__class__.__name__, self.name)</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188670416">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py"</cite>,
						line <em class="line">2450</em>,
						in <code class="function">wsgi_app</code></h4>
					<div class="source library">
						<pre class="line before"><span class="ws">            </span>try:</pre>
						<pre class="line before"><span class="ws">                </span>ctx.push()</pre>
						<pre
							class="line before"><span class="ws">                </span>response = self.full_dispatch_request()</pre>
						<pre class="line before"><span class="ws">            </span>except Exception as e:</pre>
						<pre class="line before"><span class="ws">                </span>error = e</pre>
						<pre
							class="line current"><span class="ws">                </span>response = self.handle_exception(e)</pre>
						<pre class="line after"><span class="ws">            </span>except:  # noqa: B001</pre>
						<pre
							class="line after"><span class="ws">                </span>error = sys.exc_info()[1]</pre>
						<pre class="line after"><span class="ws">                </span>raise</pre>
						<pre
							class="line after"><span class="ws">            </span>return response(environ, start_response)</pre>
						<pre class="line after"><span class="ws">        </span>finally:</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188736592">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py"</cite>,
						line <em class="line">1867</em>,
						in <code class="function">handle_exception</code></h4>
					<div class="source library">
						<pre
							class="line before"><span class="ws">            </span># if we want to repropagate the exception, we can attempt to</pre>
						<pre
							class="line before"><span class="ws">            </span># raise it with the whole traceback in case we can do that</pre>
						<pre
							class="line before"><span class="ws">            </span># (the function was actually called from the except part)</pre>
						<pre
							class="line before"><span class="ws">            </span># otherwise, we just raise the error again</pre>
						<pre class="line before"><span class="ws">            </span>if exc_value is e:</pre>
						<pre
							class="line current"><span class="ws">                </span>reraise(exc_type, exc_value, tb)</pre>
						<pre class="line after"><span class="ws">            </span>else:</pre>
						<pre class="line after"><span class="ws">                </span>raise e</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre
							class="line after"><span class="ws">        </span>self.log_exception((exc_type, exc_value, tb))</pre>
						<pre
							class="line after"><span class="ws">        </span>server_error = InternalServerError()</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188736656">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/_compat.py"</cite>,
						line <em class="line">39</em>,
						in <code class="function">reraise</code></h4>
					<div class="source library">
						<pre
							class="line before"><span class="ws">    </span>import collections.abc as collections_abc</pre>
						<pre class="line before"><span class="ws"></span> </pre>
						<pre class="line before"><span class="ws">    </span>def reraise(tp, value, tb=None):</pre>
						<pre
							class="line before"><span class="ws">        </span>if value.__traceback__ is not tb:</pre>
						<pre
							class="line before"><span class="ws">            </span>raise value.with_traceback(tb)</pre>
						<pre class="line current"><span class="ws">        </span>raise value</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre class="line after"><span class="ws">    </span>implements_to_string = _identity</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre class="line after"><span class="ws"></span>else:</pre>
						<pre class="line after"><span class="ws">    </span>iterkeys = lambda d: d.iterkeys()</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188736720">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py"</cite>,
						line <em class="line">2447</em>,
						in <code class="function">wsgi_app</code></h4>
					<div class="source library">
						<pre
							class="line before"><span class="ws">        </span>ctx = self.request_context(environ)</pre>
						<pre class="line before"><span class="ws">        </span>error = None</pre>
						<pre class="line before"><span class="ws">        </span>try:</pre>
						<pre class="line before"><span class="ws">            </span>try:</pre>
						<pre class="line before"><span class="ws">                </span>ctx.push()</pre>
						<pre
							class="line current"><span class="ws">                </span>response = self.full_dispatch_request()</pre>
						<pre class="line after"><span class="ws">            </span>except Exception as e:</pre>
						<pre class="line after"><span class="ws">                </span>error = e</pre>
						<pre
							class="line after"><span class="ws">                </span>response = self.handle_exception(e)</pre>
						<pre class="line after"><span class="ws">            </span>except:  # noqa: B001</pre>
						<pre
							class="line after"><span class="ws">                </span>error = sys.exc_info()[1]</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188736528">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py"</cite>,
						line <em class="line">1952</em>,
						in <code class="function">full_dispatch_request</code></h4>
					<div class="source library">
						<pre
							class="line before"><span class="ws">            </span>request_started.send(self)</pre>
						<pre
							class="line before"><span class="ws">            </span>rv = self.preprocess_request()</pre>
						<pre class="line before"><span class="ws">            </span>if rv is None:</pre>
						<pre
							class="line before"><span class="ws">                </span>rv = self.dispatch_request()</pre>
						<pre class="line before"><span class="ws">        </span>except Exception as e:</pre>
						<pre
							class="line current"><span class="ws">            </span>rv = self.handle_user_exception(e)</pre>
						<pre
							class="line after"><span class="ws">        </span>return self.finalize_request(rv)</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre
							class="line after"><span class="ws">    </span>def finalize_request(self, rv, from_error_handler=False):</pre>
						<pre
							class="line after"><span class="ws">        </span>&quot;&quot;&quot;Given the return value from a view function this finalizes</pre>
						<pre
							class="line after"><span class="ws">        </span>the request by converting it into a response and invoking the</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188736912">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py"</cite>,
						line <em class="line">1821</em>,
						in <code class="function">handle_user_exception</code></h4>
					<div class="source library">
						<pre
							class="line before"><span class="ws">            </span>return self.handle_http_exception(e)</pre>
						<pre class="line before"><span class="ws"></span> </pre>
						<pre
							class="line before"><span class="ws">        </span>handler = self._find_error_handler(e)</pre>
						<pre class="line before"><span class="ws"></span> </pre>
						<pre class="line before"><span class="ws">        </span>if handler is None:</pre>
						<pre
							class="line current"><span class="ws">            </span>reraise(exc_type, exc_value, tb)</pre>
						<pre class="line after"><span class="ws">        </span>return handler(e)</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre class="line after"><span class="ws">    </span>def handle_exception(self, e):</pre>
						<pre
							class="line after"><span class="ws">        </span>&quot;&quot;&quot;Handle an exception that did not have an error handler</pre>
						<pre
							class="line after"><span class="ws">        </span>associated with it, or that was raised from an error handler.</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188736976">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/_compat.py"</cite>,
						line <em class="line">39</em>,
						in <code class="function">reraise</code></h4>
					<div class="source library">
						<pre
							class="line before"><span class="ws">    </span>import collections.abc as collections_abc</pre>
						<pre class="line before"><span class="ws"></span> </pre>
						<pre class="line before"><span class="ws">    </span>def reraise(tp, value, tb=None):</pre>
						<pre
							class="line before"><span class="ws">        </span>if value.__traceback__ is not tb:</pre>
						<pre
							class="line before"><span class="ws">            </span>raise value.with_traceback(tb)</pre>
						<pre class="line current"><span class="ws">        </span>raise value</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre class="line after"><span class="ws">    </span>implements_to_string = _identity</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre class="line after"><span class="ws"></span>else:</pre>
						<pre class="line after"><span class="ws">    </span>iterkeys = lambda d: d.iterkeys()</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188737040">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py"</cite>,
						line <em class="line">1950</em>,
						in <code class="function">full_dispatch_request</code></h4>
					<div class="source library">
						<pre
							class="line before"><span class="ws">        </span>self.try_trigger_before_first_request_functions()</pre>
						<pre class="line before"><span class="ws">        </span>try:</pre>
						<pre
							class="line before"><span class="ws">            </span>request_started.send(self)</pre>
						<pre
							class="line before"><span class="ws">            </span>rv = self.preprocess_request()</pre>
						<pre class="line before"><span class="ws">            </span>if rv is None:</pre>
						<pre
							class="line current"><span class="ws">                </span>rv = self.dispatch_request()</pre>
						<pre class="line after"><span class="ws">        </span>except Exception as e:</pre>
						<pre
							class="line after"><span class="ws">            </span>rv = self.handle_user_exception(e)</pre>
						<pre
							class="line after"><span class="ws">        </span>return self.finalize_request(rv)</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre
							class="line after"><span class="ws">    </span>def finalize_request(self, rv, from_error_handler=False):</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188736784">
					<h4>File
						<cite class="filename">"/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py"</cite>,
						line <em class="line">1936</em>,
						in <code class="function">dispatch_request</code></h4>
					<div class="source library">
						<pre
							class="line before"><span class="ws">            </span>getattr(rule, &quot;provide_automatic_options&quot;, False)</pre>
						<pre
							class="line before"><span class="ws">            </span>and req.method == &quot;OPTIONS&quot;</pre>
						<pre class="line before"><span class="ws">        </span>):</pre>
						<pre
							class="line before"><span class="ws">            </span>return self.make_default_options_response()</pre>
						<pre
							class="line before"><span class="ws">        </span># otherwise dispatch to the handler for that endpoint</pre>
						<pre
							class="line current"><span class="ws">        </span>return self.view_functions[rule.endpoint](**req.view_args)</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre class="line after"><span class="ws">    </span>def full_dispatch_request(self):</pre>
						<pre
							class="line after"><span class="ws">        </span>&quot;&quot;&quot;Dispatches the request and on top of that performs request</pre>
						<pre
							class="line after"><span class="ws">        </span>pre and postprocessing as well as HTTP exception catching and</pre>
						<pre class="line after"><span class="ws">        </span>error handling.</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188736848">
					<h4>File <cite class="filename">"/Users/ali/Ali/github/SimDB/app.py"</cite>,
						line <em class="line">52</em>,
						in <code class="function">query</code></h4>
					<div class="source ">
						<pre
							class="line before"><span class="ws">    </span>nn_article_count = rq[&quot;n&quot;]</pre>
						<pre class="line before"><span class="ws">  </span>else:</pre>
						<pre
							class="line before"><span class="ws">    </span>nn_article_count = config.default_nn()</pre>
						<pre class="line before"><span class="ws"></span> </pre>
						<pre class="line before"><span class="ws">  </span>if rq.get(&quot;vector&quot;):</pre>
						<pre
							class="line current"><span class="ws">    </span>result = indexer.find_NN_by_vector(rq.get(&quot;vector&quot;), nn_article_count)</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre class="line after"><span class="ws">  </span>elif rq.get(&quot;id&quot;):</pre>
						<pre
							class="line after"><span class="ws">    </span>result = indexer.find_NN_by_id(rq.get(&quot;id&quot;), nn_article_count)</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre class="line after"><span class="ws">  </span>else:</pre>
					</div>
				</div>

			<li>
				<div class="frame" id="frame-140203188736208">
					<h4>File <cite class="filename">"/Users/ali/Ali/github/SimDB/indexers/FaissIndexer.py"</cite>,
						line <em class="line">79</em>,
						in <code class="function">find_NN_by_vector</code></h4>
					<div class="source ">
						<pre class="line before"><span class="ws"></span> </pre>
						<pre class="line before"><span class="ws">    </span>return formatted_result</pre>
						<pre class="line before"><span class="ws"></span> </pre>
						<pre
							class="line before"><span class="ws">  </span>def find_NN_by_vector(self, query_vector=[], n=10):</pre>
						<pre
							class="line before"><span class="ws">    </span>vector = self._extract_vector(query_vector)</pre>
						<pre
							class="line current"><span class="ws">    </span>return self.index.search(vector, n)[1][0]</pre>
						<pre class="line after"><span class="ws"></span> </pre>
						<pre
							class="line after"><span class="ws">  </span>def find_NN_by_vectors(self, query_vectors=[], n=10):</pre>
						<pre
							class="line after"><span class="ws">    </span>vectors = [self._extract_vector(vector) for vector in query_vectors]</pre>
						<pre
							class="line after"><span class="ws">    </span>return self.index.search(vectors, n)[1]</pre>
						<pre class="line after"><span class="ws"></span> </pre>
					</div>
				</div>
		</ul>
		<blockquote>AttributeError: 'NoneType' object has no attribute 'search'</blockquote>
	</div>

	<div class="plain">
		<form action="/?__debugger__=yes&amp;cmd=paste" method="post">
			<p>
				<input type="hidden" name="language" value="pytb">
  This is the Copy/Paste friendly version of the traceback. <span
  class="pastemessage">You can also paste this traceback into
  a <a href="https://gist.github.com/">gist</a>:
  <input type="submit" value="create paste"></span>
			</p>
			<textarea cols="50" rows="10" name="code" readonly>Traceback (most recent call last):

File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py", line 2464, in call
return self.wsgi_app(environ, start_response)
File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/ali/anaconda3/envs/sims_engine_indexer/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functionsrule.endpoint
File "/Users/ali/Ali/github/SimDB/app.py", line 52, in query
result = indexer.find_NN_by_vector(rq.get("vector"), nn_article_count)
File "/Users/ali/Ali/github/SimDB/indexers/FaissIndexer.py", line 79, in find_NN_by_vector
return self.index.search(vector, n)[1][0]
AttributeError: 'NoneType' object has no attribute 'search'</textarea>



The debugger caught an exception in your WSGI application. You can now
look at the traceback which led to the error.
If you enable JavaScript you can also use additional features such as code
execution (if the evalex feature is enabled), automatic pasting of the
exceptions and much more.



Brought to you by DON'T PANIC, your
friendly Werkzeug powered traceback interpreter.

<div class="pin-prompt">
	<div class="inner">
		<h3>Console Locked</h3>
		<p>
			The console is locked and needs to be unlocked by entering the PIN.
			You can find the PIN printed out on the standard output of your
			shell that runs the server.
			<form>
				<p>PIN:
					<input type=text name=pin size=14>
					<input type=submit name=btn value="Confirm Pin">
    </form>
	</div>
</div>
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