diff --git a/producer/api/python/asapo_producer.pyx.in b/producer/api/python/asapo_producer.pyx.in index 1a02131818ade7a0ff13908c9cc3a6dbbdbcbb5f..059a4c812fb26f684284f916dcab7e7c6df83be0 100644 --- a/producer/api/python/asapo_producer.pyx.in +++ b/producer/api/python/asapo_producer.pyx.in @@ -153,9 +153,6 @@ cdef class PyProducer: if err: throw_exception(err) if data is not None: - if data.base is not None: - Py_XINCREF(<PyObject*>data.base) - else: Py_XINCREF(<PyObject*>data) if callback != None: Py_XINCREF(<PyObject*>callback) @@ -456,9 +453,6 @@ cdef class PyProducer: cdef void c_callback_ndarr(self,py_callback,nd_array,RequestCallbackPayload payload, Error err) with gil: self.c_callback_python(py_callback,nd_array,payload,err) if nd_array is not None: - if nd_array.base is not None: - Py_XDECREF(<PyObject*>nd_array.base) - else: Py_XDECREF(<PyObject*>nd_array) cdef void c_callback_bytesaddr(self,py_callback,bytes_array,RequestCallbackPayload payload, Error err) with gil: diff --git a/tests/automatic/bug_fixes/python_segfault_dataview/check_linux.sh b/tests/automatic/bug_fixes/python_segfault_dataview/check_linux.sh index 414b73f8e86ef8f9712c147e5f8fc6a5461cac35..409d69f55e9fcabf2928e4506a68d7a3bb80a02d 100644 --- a/tests/automatic/bug_fixes/python_segfault_dataview/check_linux.sh +++ b/tests/automatic/bug_fixes/python_segfault_dataview/check_linux.sh @@ -1,9 +1,29 @@ #!/usr/bin/env bash set -e +trap Cleanup EXIT + +Cleanup() { + echo cleanup + rm -rf ${receiver_root_folder} + echo "db.dropDatabase()" | mongo ${beamtime_id}_detector +} + + + export PYTHONPATH=$2:${PYTHONPATH} export Python3_EXECUTABLE=$3 -$Python3_EXECUTABLE $1 $endpoint $beamtime_id $token +beamline=test +receiver_root_folder=/tmp/asapo/receiver/files +facility=test_facility +year=2019 +beamtime_id=asapo_test +receiver_folder=${receiver_root_folder}/${facility}/gpfs/${beamline}/${year}/data/${beamtime_id} +endpoint=127.0.0.1:8400 + +mkdir -p ${receiver_folder} +echo ${receiver_folder} +$Python3_EXECUTABLE $1 $endpoint $beamtime_id diff --git a/tests/automatic/bug_fixes/python_segfault_dataview/producer_segfault.py b/tests/automatic/bug_fixes/python_segfault_dataview/producer_segfault.py index 0a67ae5b2057b3c6e67da9978befade5402fbaf3..61ca56fae15873edc4fdd1e9748a3f4a4e502da2 100644 --- a/tests/automatic/bug_fixes/python_segfault_dataview/producer_segfault.py +++ b/tests/automatic/bug_fixes/python_segfault_dataview/producer_segfault.py @@ -3,6 +3,9 @@ from __future__ import print_function import asapo_producer import time import numpy as np +import sys + +endpoint, beamtime = sys.argv[1:] def callback(payload, err): if isinstance(err, asapo_producer.AsapoServerWarning): @@ -12,8 +15,8 @@ def callback(payload, err): else: print("successfuly sent: ", payload) -producer = asapo_producer.create_producer("google.com:8700",'processed', "beamtime", 'auto', "data_source", "token", 4, 5000) +producer = asapo_producer.create_producer(endpoint,'processed', beamtime, 'auto', "data_source", '', 4, 5000) data = np.random.random((100, 100)) producer.send(1, exposed_path="processed/foo.dat", stream="foo", data=data.view(np.int8), callback=callback) - +producer.wait_requests_finished(5000)