Login  Register

[Pharo-dev] Zinc problem with PUT requests

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
18 messages Options Options
Embed post
Permalink
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

[Pharo-dev] Zinc problem with PUT requests

Damien Cassou
1829 posts
It looks like Zinc has a problem handling PUT requests (at least
ZnZincServerAdaptor). If I replace ZnZincServerAdaptor by WAKom, then
things work fine. To reproduce:

Setting up the Server
1- Download a SmalltalkHub image
(https://ci.inria.fr/pharo-contribution/job/SmalltalkHub/)
2- Install mongodb on your computer (for Debian: apt-get install mongodb)
3- Launch the SmalltalkHub image
4- Evaluate: ZnZincServerAdaptor startOn: 8080
5- Visit http://localhost:8080/tools/hub, create an account and a project

Setting up the Client
6- In a different image, start monticello
7- add the repository of your new project to Monticello (something
like http://localhost:8080/mc/YourUser/YourProject/main), don't forget
the username and password
8- copy an existing package of your cache to the new repository

You will get an error in the client: a ZnStringEntity(text/plain 512B
file is too short)

If you install Seaside-Adaptors-Kommanche and use WAKom, things will
work just fine.

You can configure Seaside to open a server-side error: just setup the
WAExceptionFilter to WADebugErrorHandler in
http://localhost:8080/config/mc

--
Damien Cassou
http://damiencassou.seasidehosting.st

"Success is the ability to go from one failure to another without
losing enthusiasm."
Winston Churchill

Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sven Van Caekenberghe-2
5697 posts
Hi Damien,

On 21 May 2013, at 10:20, Damien Cassou <[hidden email]> wrote:

> It looks like Zinc has a problem handling PUT requests (at least
> ZnZincServerAdaptor). If I replace ZnZincServerAdaptor by WAKom, then
> things work fine. To reproduce:
>
> Setting up the Server
> 1- Download a SmalltalkHub image
> (https://ci.inria.fr/pharo-contribution/job/SmalltalkHub/)
> 2- Install mongodb on your computer (for Debian: apt-get install mongodb)
> 3- Launch the SmalltalkHub image
> 4- Evaluate: ZnZincServerAdaptor startOn: 8080
> 5- Visit http://localhost:8080/tools/hub, create an account and a project
>
> Setting up the Client
> 6- In a different image, start monticello
> 7- add the repository of your new project to Monticello (something
> like http://localhost:8080/mc/YourUser/YourProject/main), don't forget
> the username and password
> 8- copy an existing package of your cache to the new repository
>
> You will get an error in the client: a ZnStringEntity(text/plain 512B
> file is too short)
>
> If you install Seaside-Adaptors-Kommanche and use WAKom, things will
> work just fine.
>
> You can configure Seaside to open a server-side error: just setup the
> WAExceptionFilter to WADebugErrorHandler in
> http://localhost:8080/config/mc
>
> --
> Damien Cassou
> http://damiencassou.seasidehosting.st
>
> "Success is the ability to go from one failure to another without
> losing enthusiasm."
> Winston Churchill

Thanks for the detailed instructions, now I have StHub & mongo running on my machine ;-)

The problem you reported can easily be fixed by loading the latest version of Zinc-Seaaside (the one in the StHub image is very old). Now, it still does not fully work, but I don't understand all the Sh and MA stuff, I am afraid.

But if you go up the stack until you find Seaside's aRequestContext and find the request body in it (the data which was PUT), you can do

(ZipArchive new readFrom: self asByteArray readStream) members

on it, so for me that means the data arrives OK.

If you have another problem with the Zinc/Adaptor part, please let me know.

HTH,

Sven

PS:


Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Nicolas Petton
2054 posts
Thanks sven, I'll try it later today.

Nico


On May 21, 2013, at 1:01 PM, Sven Van Caekenberghe <[hidden email]> wrote:

> Hi Damien,
>
> On 21 May 2013, at 10:20, Damien Cassou <[hidden email]> wrote:
>
>> It looks like Zinc has a problem handling PUT requests (at least
>> ZnZincServerAdaptor). If I replace ZnZincServerAdaptor by WAKom, then
>> things work fine. To reproduce:
>>
>> Setting up the Server
>> 1- Download a SmalltalkHub image
>> (https://ci.inria.fr/pharo-contribution/job/SmalltalkHub/)
>> 2- Install mongodb on your computer (for Debian: apt-get install mongodb)
>> 3- Launch the SmalltalkHub image
>> 4- Evaluate: ZnZincServerAdaptor startOn: 8080
>> 5- Visit http://localhost:8080/tools/hub, create an account and a project
>>
>> Setting up the Client
>> 6- In a different image, start monticello
>> 7- add the repository of your new project to Monticello (something
>> like http://localhost:8080/mc/YourUser/YourProject/main), don't forget
>> the username and password
>> 8- copy an existing package of your cache to the new repository
>>
>> You will get an error in the client: a ZnStringEntity(text/plain 512B
>> file is too short)
>>
>> If you install Seaside-Adaptors-Kommanche and use WAKom, things will
>> work just fine.
>>
>> You can configure Seaside to open a server-side error: just setup the
>> WAExceptionFilter to WADebugErrorHandler in
>> http://localhost:8080/config/mc
>>
>> --
>> Damien Cassou
>> http://damiencassou.seasidehosting.st
>>
>> "Success is the ability to go from one failure to another without
>> losing enthusiasm."
>> Winston Churchill
>
> Thanks for the detailed instructions, now I have StHub & mongo running on my machine ;-)
>
> The problem you reported can easily be fixed by loading the latest version of Zinc-Seaaside (the one in the StHub image is very old). Now, it still does not fully work, but I don't understand all the Sh and MA stuff, I am afraid.
>
> But if you go up the stack until you find Seaside's aRequestContext and find the request body in it (the data which was PUT), you can do
>
> (ZipArchive new readFrom: self asByteArray readStream) members
>
> on it, so for me that means the data arrives OK.
>
> If you have another problem with the Zinc/Adaptor part, please let me know.
>
> HTH,
>
> Sven
>
> PS:
>
>

--
Nicolas Petton
http://www.nicolas-petton.fr


Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sean P. DeNigris
Administrator
5777 posts
Nicolas Petton wrote
Thanks sven, I'll try it later today.

On May 21, 2013, at 1:01 PM, Sven Van Caekenberghe <[hidden email]> wrote:
> The problem you reported can easily be fixed by loading the latest version of Zinc-Seaaside (the one in the StHub image is very old). Now, it still does not fully work, but I don't understand all the Sh and MA stuff, I am afraid.
Bump. What's the status? The instructions on Jenkins [1] still say:
  WAKom startOn: 8080.
  "you could use Zinc, but there seems to be a bug with PUT requests (ZnZincServerAdaptor startOn: 8080)"

However WAKom is not included in the build artifact.

[1] https://ci.inria.fr/pharo-contribution/job/SmalltalkHub
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sean P. DeNigris
Administrator
5777 posts
Sean P. DeNigris wrote
  WAKom startOn: 8080.
Update: after installing Seaside-Adaptors-Comanche-lr.70, I get an undefined HttpService...

If I go back to Zinc, after creating a user, when I try to log in I get "Error: Not enough space for external objects, set a larger size at startup!"
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sean P. DeNigris
Administrator
5777 posts
Sean P. DeNigris wrote
when I try to log in I get "Error: Not enough space for external objects, set a larger size at startup!"
Update2: I bumped my RAM to 4GB with the same error.

System details:
* Debian 6.0.7
* Parallels 8
* get.pharo.org/vm from today
* Last successful image artifact from sthub Jenkins job
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sven Van Caekenberghe-2
5697 posts
In reply to this post by Sean P. DeNigris
Sean,

On 14 Jun 2013, at 05:32, "Sean P. DeNigris" <[hidden email]> wrote:

> Nicolas Petton wrote
>> Thanks sven, I'll try it later today.
>>
>> On May 21, 2013, at 1:01 PM, Sven Van Caekenberghe &lt;
>
>> sven@
>
>> &gt; wrote:
>>> The problem you reported can easily be fixed by loading the latest
>>> version of Zinc-Seaaside (the one in the StHub image is very old). Now,
>>> it still does not fully work, but I don't understand all the Sh and MA
>>> stuff, I am afraid.
>
> Bump. What's the status? The instructions on Jenkins [1] still say:
>  WAKom startOn: 8080.
>  "you could use Zinc, but there seems to be a bug with PUT requests
> (ZnZincServerAdaptor startOn: 8080)"
>
> However WAKom is not included in the build artifact.
>
> [1] https://ci.inria.fr/pharo-contribution/job/SmalltalkHub

I don't maintain the build, but all these problems where fixed some time ago.

Zinc is being using in the production StHub site since then !

Sven


--
Sven Van Caekenberghe
http://stfx.eu
Smalltalk is the Red Pill


Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Damien Cassou
1829 posts
In reply to this post by Sean P. DeNigris
On Fri, Jun 14, 2013 at 5:32 AM, Sean P. DeNigris <[hidden email]> wrote:
> Bump. What's the status? The instructions on Jenkins [1] still say:
>   WAKom startOn: 8080.
>   "you could use Zinc, but there seems to be a bug with PUT requests
> (ZnZincServerAdaptor startOn: 8080)"


Zinc should work just fine. I've just updated the instructions.

--
Damien Cassou
http://damiencassou.seasidehosting.st

"Success is the ability to go from one failure to another without
losing enthusiasm."
Winston Churchill

Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Damien Cassou
1829 posts
In reply to this post by Sean P. DeNigris
On Fri, Jun 14, 2013 at 6:01 AM, Sean P. DeNigris <[hidden email]> wrote:
> Update2: I bumped my RAM to 4GB with the same error.


do you use the image built by Jenkins or your own?

--
Damien Cassou
http://damiencassou.seasidehosting.st

"Success is the ability to go from one failure to another without
losing enthusiasm."
Winston Churchill

Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sean P. DeNigris
Administrator
5777 posts
Damien Cassou wrote
do you use the image built by Jenkins or your own?
Jenkins, of course... I let the butler do it because I'm too lazy to build ;)
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

NorbertHartl
3479 posts
In reply to this post by Sean P. DeNigris

Am 14.06.2013 um 05:46 schrieb Sean P. DeNigris <[hidden email]>:

> Sean P. DeNigris wrote
>>  WAKom startOn: 8080.
>
> Update: after installing Seaside-Adaptors-Comanche-lr.70, I get an undefined
> HttpService...
>
> If I go back to Zinc, after creating a user, when I try to log in I get
> "Error: Not enough space for external objects, set a larger size at
> startup!"
>

I created a bug entry for this

https://pharo.fogbugz.com/f/cases/10839

I probably means the usual that some code is not ensuring the destroy of a socket and therefor releasing its resources. I had such a problem last week with an edge case in zinc, too

Norbert
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sean P. DeNigris
Administrator
5777 posts
In reply to this post by Sven Van Caekenberghe-2
Sven Van Caekenberghe-2 wrote
>>> The problem you reported can easily be fixed by loading the latest
>>> version of Zinc-Seaaside (the one in the StHub image is very old)
...
I don't maintain the build, but all these problems where fixed some time ago.
The image I downloaded from Jenkins has loaded baseline 0.9.1 of sthub, which seems to be the latest defined in ConfigurationOfSmalltalkHub from http://smalltalkhub.com/mc/NicolasPetton/SmalltalkHub/main . I checked http://www.squeaksource.com/ZincHTTPComponents, which is the repo mentioned at http://zn.stfx.eu/zn/index.html, and the only packages available for update are Zinc-Character-Encoding-Core-SvenVanCaekenberghe.21, Zinc-HTTP-SvenVanCaekenberghe.371, and  Zinc-Resource-Meta-Core-SvenVanCaekenberghe.53. Updating the first two didn't help, and the last one broke the MCWorkingCopyBrowser with MessageNotUnderstood: ZnUrl>>enforceKnownScheme

Help!!!! This is too high a bar for user contributions. If I can't figure this out, what is the chance that someone outside our core community can?!
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sven Van Caekenberghe-2
5697 posts
Sean,
Damien,

On 17 Jun 2013, at 04:11, Sean P. DeNigris <[hidden email]> wrote:

Sven Van Caekenberghe-2 wrote
The problem you reported can easily be fixed by loading the latest
version of Zinc-Seaaside (the one in the StHub image is very old)
...
I don't maintain the build, but all these problems where fixed some time
ago.

The image I downloaded from Jenkins has loaded baseline 0.9.1 of sthub,
which seems to be the latest defined in ConfigurationOfSmalltalkHub from
http://smalltalkhub.com/mc/NicolasPetton/SmalltalkHub/main . I checked
http://www.squeaksource.com/ZincHTTPComponents, which is the repo mentioned
at http://zn.stfx.eu/zn/index.html, and the only packages available for
update are Zinc-Character-Encoding-Core-SvenVanCaekenberghe.21,
Zinc-HTTP-SvenVanCaekenberghe.371, and
Zinc-Resource-Meta-Core-SvenVanCaekenberghe.53. Updating the first two
didn't help, and the last one broke the MCWorkingCopyBrowser with
MessageNotUnderstood: ZnUrl>>enforceKnownScheme

Help!!!! This is too high a bar for user contributions. If I can't figure
this out, what is the chance that someone outside our core community can?!


This is Pharo 2.0 #20606

ConfigurationOfSmalltalkHub does _not_ specify a dependency on Zinc, nor does it specify any versions ;-)

I am assuming the Zinc code is/was updated manually (it is newer than in 2.0, but not totally #bleedingEdge).

I ran all Zinc/Zodiac tests and they were green - all 354 of them.

When I do 

ZnZincServerAdaptor startOn: 8080

StHub works as advertised (mongo has to be running first of course):

Including me being located at 'Champs-Élysées' which was the proof of fixing an encoding problem.

When I do

ConfigurationOfZincHTTPComponents project bleedingEdge load.

All Zinc/Zodiac tests are still green - all 357 of them.

And StHub keeps on running (I did not do extensive tests though).


StHub is an important project, but I guess their focus is on providing an excellent UX for all of us in production. That is a hell of a job and they are doing it well. If StHub would fail they would receive a _lot_ of complaints. I am proud that Zinc is a part of that and I plan to support them as well as I can.

However, I am assuming the UX of others downloading their build/image and helping them like any good open source project should do is secondary to the first goal, and so it should be.


So what _is_ the problem ?  As far as I can see, it just works ;-)


Sven


BTW: there is even code in StHub, namely Hub-CamilloBruni.119, that was not merged properly AFAICT.


--
Sven Van Caekenberghe
Proudly supporting Pharo
http://pharo.org
http://association.pharo.org
http://consortium.pharo.org




Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sean P. DeNigris
Administrator
5777 posts
Sven Van Caekenberghe-2 wrote
Thanks for investigating!

Sven Van Caekenberghe-2 wrote
StHub works as advertised (mongo has to be running first of course):
...
So what _is_ the problem ?  As far as I can see, it just works ;-)
When I download the same version and evaluate "ZnZincServerAdaptor startOn: 8080", sthub responds at 8080. However, if I join with user sean, email sean@me.com, pwd 123 (please don't tell anyone. I'll have to change all my accounts ;)), when I submit the login form with proper credentials, I get a "loading" message that eventually ends with the "Not enough space" error I described.

In the Terminal, I saw the following. Maybe related?
KeyNotFound(Exception)>>resignalAs:
VOMongoSessionPool>>withDatabase: in Block: [:e | ...
...
ShUsersHandler(ShHandler)>>renderJson:
ShUsersHandler>>count
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sean P. DeNigris
Administrator
5777 posts
Sean P. DeNigris wrote
when I submit the login form with proper credentials, I get a "loading" message that eventually ends with the "Not enough space" error I described.
Update:

The user is in the mongo db:
db.shEntity.find()
{ "#instanceOf" : "ShUser", "#version" : { "floatApprox" : 3438160724 }, "_id" : ObjectId("5f77b0960000000000000000"), "admin" : null, "created" : { "t" : 319000, "i" : 1409359576 }, "email" : "sean@me.com", "fullName" : null, "isNew" : null, "lastModification" : { "t" : 319000, "i" : 1409359576 }, "location" : null, "mcUsername" : null, "password" : "369590257452814774925548805240102185537183137519", "sid" : "cf01e708-f2f8-46cb-afc9-7439258e7507", "timeline" : { "#instanceOf" : "ShTimeline", "events" : null }, "username" : "Sean", "watching" : [ ], "website" : null }

A bunch of Mongo test failures/errors:
49 run, 13 passes, 0 skipped, 0 expected failures, 22 failures, 14 errors, 0 unexpected passes
Failures:
MongoTest>>#testSelectWithLimitAndNumberToSkip
MQQueryTest>>#testNor
MQQueryTest>>#testAnd
MQQueryTest>>#testSelect
MongoWholeDatabaseTest>>#testBasics
MongoTest>>#testInsertAndQueryWithFields
MongoTest>>#testCollections
MQQueryTest>>#testNestedQueries
BSONTest>>#testDate
MongoTest>>#testOccurrencesOf
MQQueryTest>>#testAndNot
MongoTest>>#testDelete
MQQueryTest>>#testOr
BSONTest>>#testDateAndTime
MongoTest>>#testInsertAndQuery
MQQueryTest>>#testWhere
MongoTest>>#testSelect
MongoTest>>#testCollectionValidation
MQQueryTest>>#testNot
MQQueryTest>>#testType
MQQueryTest>>#testComparison
MQQueryTest>>#testSize

Errors:
MongoTest>>#testAdd
MongoTest>>#testAddAll
MongoTest>>#testAddArray
MongoTest>>#testCursor
MongoTest>>#testDatabases
MongoTest>>#testDo
MongoTest>>#testInjectInto
MongoTest>>#testInsertTwoAndQuery
MongoTest>>#testIsEmpty
MongoTest>>#testOrderBy
MongoTest>>#testRemove
MongoTest>>#testRemoveAll
MongoTest>>#testRemoveBoth
MongoTest>>#testRemoveMissingElementSucceeds

The errors that I checked all have replies like:
a Dictionary('bad cmd'->a Dictionary('$query'->a Dictionary('count'->'testCollection' 'fields'->a Dictionary() 'query'->a Dictionary('key'->'value' ) ) ) 'errmsg'->'no such cmd' 'ok'->0.0 )

I'm going to try reinstalling mongodb. I don't remember if I installed via apt-get install mongodb (I think that's what I did), or the 10gen version recommended in the mongodb install guide
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sean P. DeNigris
Administrator
5777 posts
Sean P. DeNigris wrote
I'm going to try reinstalling mongodb. I don't remember if I installed via apt-get install mongodb (I think that's what I did), or the 10gen version recommended in the mongodb install guide
Yay! After reinstalling mongo per the installation guide [1], and ditching the epiphany web browser in favor of iceweasel, I was able to successfully log in to my local sthub :) Thanks for all the support. I updated the Jenkins job's mongodb installation instructions to refer to [1]

Most of the MongoTalk tests are passing now. The only failures are #testDate and #testDateAndTime

[1] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian/
To install mongodb in debian:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/10gen.list
sudo apt-get update
sudo apt-get install mongodb-10gen
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Sven Van Caekenberghe-2
5697 posts

On 18 Jun 2013, at 04:41, "Sean P. DeNigris" <[hidden email]> wrote:

> Yay! After reinstalling mongo per the installation guide [1], and ditching
> the epiphany web browser in favor of iceweasel, I was able to successfully
> log in to my local sthub :) Thanks for all the support. I updated the
> Jenkins job's mongodb installation instructions to refer to [1]

Great !

Thanks for the write up.

Applications with an important persistency component are always a tad harder to deploy.

Sven


--
Sven Van Caekenberghe
Proudly supporting Pharo
http://pharo.org
http://association.pharo.org
http://consortium.pharo.org





Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: [Pharo-dev] Zinc problem with PUT requests

Nicolas Petton
2054 posts
In reply to this post by Sven Van Caekenberghe-2
Hi Sven,

This is not merged on purpose, as Camillo's patch needs some review and thinking :)

Nico

On Jun 17, 2013, at 3:29 PM, Sven Van Caekenberghe <[hidden email]> wrote:

BTW: there is even code in StHub, namely Hub-CamilloBruni.119, that was not merged properly AFAICT.