[email protected] wrote:
Folks,
For a while, our transport system has not really been adequate to
address all of the goals for the pkg project.  The python libraries that
we have been using are capabable for basic functionality, but fall flat
when we try to perform more complicated or performant network
operations.

The following webrev converts our transport from using the
urllib/httplib in python to PyCurl, which is based upon libcurl.

        http://cr.opensolaris.org/~johansen/webrev-xport-1/

Comments welcome.
Hi,
If someone else would like to test those bits, the package SUNWcurl is required to build the gate with the patch from webrev-xport-1.

The progress is moving really nice, but I got a problem installing packages. I was testing on build 111b.

For SUNWgnome-desklets during download stage after 78.43kB downloaded I've got the following exception. Please note that exception occurred and the progress still moved ~1kB. This is happening every time for every package, so I am unable to perform more tests :(

Exception traceback:
Traceback (most recent call last):
File "/usr/lib/python2.4/vendor-packages/pkg/gui/installupdate.py", line 406, in __proceed_with_stages_thread_ex
   self.__proceed_with_stages_thread()
File "/usr/lib/python2.4/vendor-packages/pkg/gui/installupdate.py", line 565, in __proceed_with_stages_thread
   self.api_o.prepare()
File "/usr/lib/python2.4/vendor-packages/pkg/client/api.py", line 441, in prepare
   self.img.imageplan.preexecute()
File "/usr/lib/python2.4/vendor-packages/pkg/client/imageplan.py", line 632, in preexecute
   p.download()
File "/usr/lib/python2.4/vendor-packages/pkg/client/pkgplan.py", line 244, in download
   mfile.wait_files()
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/transport.py", line 801, in wait_files
   self._transport._get_files(self)
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/transport.py", line 393, in _get_files
   errlist = d.get_files(filelist, download_dir, progtrack)
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/repo.py", line 206, in get_files
   self._engine.run()
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/engine.py", line 332, in run
   self.__call_perform()
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/engine.py", line 98, in __call_perform
   ret, active_handles = self.__mhandle.perform()
error: cannot invoke perform() - multi_perform() is currently running


The second time (without restarting GUI, when I was trying to install the same package, similar exception, but with different stack occured:
Exception traceback:
Traceback (most recent call last):
File "/usr/lib/python2.4/vendor-packages/pkg/gui/installupdate.py", line 406, in __proceed_with_stages_thread_ex
   self.__proceed_with_stages_thread()
File "/usr/lib/python2.4/vendor-packages/pkg/gui/installupdate.py", line 554, in __proceed_with_stages_thread
   stuff_todo = self.__plan_stage()
File "/usr/lib/python2.4/vendor-packages/pkg/gui/installupdate.py", line 723, in __plan_stage
   filters = [])
File "/usr/lib/python2.4/vendor-packages/pkg/client/api.py", line 176, in plan_install
   filters=filters, verbose=verbose)
File "/usr/lib/python2.4/vendor-packages/pkg/client/image.py", line 2609, in make_install_plan
   ip.evaluate()
File "/usr/lib/python2.4/vendor-packages/pkg/client/imageplan.py", line 433, in evaluate
   self.evaluate_fmri(f)
File "/usr/lib/python2.4/vendor-packages/pkg/client/imageplan.py", line 283, in evaluate_fmri
   m = self.image.get_manifest(pfmri)
File "/usr/lib/python2.4/vendor-packages/pkg/client/image.py", line 778, in get_manifest
   self.__touch_manifest(fmri)
File "/usr/lib/python2.4/vendor-packages/pkg/client/image.py", line 726, in __touch_manifest
   self.state.get_intent_str(fmri))
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/transport.py", line 248, in touch_manifest
   d.touch_manifest(mfst, header)
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/repo.py", line 256, in touch_manifest
   respdata = resp.read()
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/fileobj.py", line 69, in read
   while self.__fill_buffer():
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/fileobj.py", line 241, in __fill_buffer
   engine.run()
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/engine.py", line 332, in run
   self.__call_perform()
File "/usr/lib/python2.4/vendor-packages/pkg/client/transport/engine.py", line 98, in __call_perform
   ret, active_handles = self.__mhandle.perform()
error: cannot invoke perform() - multi_perform() is currently running


The pstack on the packagemanager process during this exception is showing some thread running:

http://pastebin.com/f3346021a

--
best
Michal Pryc
_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to