Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3 - Mailing list pgsql-general

From Marcos Ortiz
Subject Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3
Date
Msg-id 55610458.2090103@uci.cu
Whole thread Raw
In response to Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3  (Adrian Klaver <adrian.klaver@aklaver.com>)
List pgsql-general


On 23/05/15 18:40, Adrian Klaver wrote:
On 05/23/2015 03:27 PM, Marcos Ortiz wrote:
Regards to all the list.
First all the info about the system:

O.S: CentOS 7 64 bits
PostgreSQL version:

SELECT version();
version
--------------------------------------------------------------------------------------------------------------

  PostgreSQL 9.2.7 on x86_64-redhat-linux-gnu, compiled by gcc (GCC)
4.8.2 20140120 (Red Hat 4.8.2-16), 64-bit
(1 row)

Neo4j version: 2.1.M
Py2neo version: 2.0.8
Python version:
python
Python 2.7.5 (default, Jun 17 2014, 18:11:42)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2

Now the problem:

We are working here to integrate PostgreSQL with Neo4j through PL/Python
using the py2neo module for it, and when we want to send sentences to
Neo4j using port 7474, the executed code raises a SocketError [Errno 13]
Permission denied.

Well first in the code below, if I am following correctly, the socket is 37474.
Yes, Adrian. Sorry for that, the correct port is 7474. I just was testing with higher ports to
see if the error persisted.



I tested the same code in a normal python script outside of PostgreSQL,
and it works well, but the problem is when I use the code inside
PostgreSQL with PL/Python.

Second the plpythonu code is running as the postgres user, so does that user have permissions on the socket.
Did you mean the socket created by Neo4j's server right?
For that reason, I created a group in the system for this named supervisor, where neo4j/postgres users are members.
So, if I find the socket file for Neo4j-server, changing permissions could solve the problem. Right?
Neo4j is a Java-based platform.

This is the code of a simple function to search a node in the Neo4j graph:

CREATE OR REPLACE FUNCTION search_professor_node(nombre_prof text)
   RETURNS text AS
$BODY$
from py2neo import Graph
from py2neo.cypher import CypherTransaction

graph = Graph("http://neo4j:neo4j@10.8.45.136:37474/db/data")
tx = graph.cypher.begin()
statement = "MATCH (pf:Professor) WHERE pf.nombre = {name} RETURN pf;" ,
tx.append(statement, parameters={'name': nombre_prof})
professor= tx.commit()
$BODY$
   LANGUAGE plpythonu VOLATILE
   COST 100;

and it can be used:
SELECT search_professor_node('Max');

The completed error is:

********** Error **********

ERROR: py2neo.packages.httpstream.http.SocketError: Permission denied
SQL state: XX000
Context: Traceback (most recent call last):
   PL/Python function "search_professor_node", line 6, in <module>
     tx = graph.cypher.begin()
   PL/Python function "search_professor_node", line 666, in cypher
   PL/Python function "search_professor_node", line 212, in metadata
   PL/Python function "search_professor_node", line 257, in get
   PL/Python function "search_professor_node", line 965, in get
   PL/Python function "search_professor_node", line 942, in __get_or_head
   PL/Python function "search_professor_node", line 432, in submit
   PL/Python function "search_professor_node", line 361, in submit
PL/Python function "search_professor_node"

Thanks a lot for your time, and I hope to find a suitable solution for it.





--
Marcos Ortiz, Sr. Product Manager (Data Infrastructure) at UCI
@marcosluis2186


pgsql-general by date:

Previous
From: Marcos Ortiz
Date:
Subject: Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3
Next
From: Adrian Klaver
Date:
Subject: Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3