[racket-dev] planet package installation broken on windows

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Dec 16 14:37:24 EST 2013

Thanks! I'll make the repair to propagate read-only mode, which is
definitely how it's supposed to work.

(A related regression is that installing a Planet package attempts to
render the search index too many times, and I see why that happens.)

At Mon, 16 Dec 2013 14:28:28 -0500, Ryan Culpepper wrote:
> I still haven't figured how to make sqlite3_open_v2 in 'read-write (or 
> 'create) mode fast, but I can confirm that opening in 'read-only mode 
> when possible (by propagating the write? argument from 
> call-with-database to doc-db-file->connection and using that to choose 
> between 'create and 'read-only) does make doc rebuilds go much faster.
> 
> It looks like doc-db-file->connection might need 'create even for 
> "read-only" operations, if the file doesn't exist or if it doesn't have 
> the tables initialized. Someone who knows the code will have to figure 
> out that part.
> 
> Or another alternative is to create fewer db connections, perhaps by 
> using a virtual-connection.
> 
> Ryan
> 
> 
> On 12/16/2013 02:05 PM, Ryan Culpepper wrote:
> > I just tried it, and it completed after a long time (10 minutes, maybe
> > longer). It looks like it's not deadlocked, but it's calling
> > sqlite3-connect many, many times, and each call to sqlite3_open_v2 takes
> > a relatively long time to complete (over a second on my Windows VM).
> >
> > This looks relevant, but I'm still deciphering it:
> >
> > http://www.mail-archive.com/sqlite-users%40sqlite.org/msg75761.html
> > http://www.mail-archive.com/sqlite-users%40sqlite.org/msg75833.html
> >
> > Ryan
> >
> >
> > On 12/16/2013 01:07 PM, Robby Findler wrote:
> >> Planet packages do not install properly under windows. They seem to be
> >> getting stuck in a deadlock in sqlite or how we call into it or
> >> something like that. Below is an example transcript where I hit
> >> control-c and got a hopefully informative stack trace.
> >>
> >> C:\Users\robby>"\Program Files (x86)\Racket-5.91-pre-release\raco.exe"
> >> planet install planet test-connection.plt 1 0
> >> PLaneT: downloading planet/test-connection:1 from planet.racket-lang.org
> >> <http://planet.racket-lang.org> via HTTP
> >> PLaneT:
> >> PLaneT: ============= Unpacking test-connection.plt =============
> >> PLaneT: Unpacking archive from
> >> 
> C:\Users\robby\AppData\Roaming\Racket\planet\300\packages\planet\test-connectio
> n.plt\1\0\
> >>
> >> test-connection.plt
> >> PLaneT:   unpacking doc.txt in
> >> 
> C:\Users\robby\AppData\Roaming\Racket\planet\300\release-snapshot\cache\planet\
> test-conne
> >>
> >> ction.plt\1\0\.\
> >> PLaneT:   unpacking info.ss in
> >> 
> C:\Users\robby\AppData\Roaming\Racket\planet\300\release-snapshot\cache\planet\
> test-conne
> >>
> >> ction.plt\1\0\.\
> >> PLaneT:   unpacking planet-splash-screen.png in
> >> C:\Users\robby\AppData\Roaming\Racket\planet\300\release-snapshot\cache\
> >> planet\test-connection.plt\1\0\.\
> >> PLaneT:   unpacking test-connection-mred.scm in
> >> C:\Users\robby\AppData\Roaming\Racket\planet\300\release-snapshot\cache\
> >> planet\test-connection.plt\1\0\.\
> >> PLaneT:   unpacking test-connection-mzscheme.scm in
> >> C:\Users\robby\AppData\Roaming\Racket\planet\300\release-snapshot\ca
> >> che\planet\test-connection.plt\1\0\.\
> >> PLaneT:   unpacking test-connection.ss in
> >> 
> C:\Users\robby\AppData\Roaming\Racket\planet\300\release-snapshot\cache\planet
> >>
> >> \test-connection.plt\1\0\.\
> >> PLaneT:
> >> PLaneT: ============= Installing test-connection.plt on Mon, 16 Dec 2013
> >> 12:4:19 =============
> >> PLaneT: raco setup: version: 5.91 [3m]
> >> PLaneT: raco setup: installation name: release-snapshot
> >> PLaneT: raco setup: variants: 3m
> >> PLaneT: raco setup: main collects: C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects
> >> PLaneT: raco setup: collects paths:
> >> PLaneT: raco setup:
> >> C:\Users\robby\AppData\Roaming\Racket\release-snapshot\collects
> >> PLaneT: raco setup:   C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects
> >> PLaneT: raco setup: main pkgs: C:\Program Files
> >> (x86)\Racket-5.91-pre-release\share\pkgs
> >> PLaneT: raco setup: pkgs paths:
> >> PLaneT: raco setup:   C:\Program Files
> >> (x86)\Racket-5.91-pre-release\share\pkgs
> >> PLaneT: raco setup:
> >> C:\Users\robby\AppData\Roaming\Racket\release-snapshot\pkgs
> >> PLaneT: raco setup: links files:
> >> PLaneT: raco setup:   C:\Program Files
> >> (x86)\Racket-5.91-pre-release\share\links.rktd
> >> PLaneT: raco setup:
> >> C:\Users\robby\AppData\Roaming\Racket\release-snapshot\links.rktd
> >> PLaneT: raco setup: main docs: C:\Program Files
> >> (x86)\Racket-5.91-pre-release\doc
> >> PLaneT: raco setup: --- updating info-domain tables ---
> >> PLaneT: raco setup: updating:
> >> C:\Users\robby\AppData\Roaming\Racket\planet\300\release-snapshot\cache.rktd
> >>
> >> PLaneT: raco setup: --- pre-installing collections ---
> >> PLaneT: raco setup: --- installing foreign libraries ---
> >> PLaneT: raco setup: --- installing shared files ---
> >> PLaneT: raco setup: --- compiling collections ---
> >> PLaneT: raco setup: making: <pkgs>/racket-index/scribblings/main
> >> PLaneT: raco setup: making: <pkgs>/racket-index/scribblings/main/private
> >> PLaneT: raco setup: making: <pkgs>/racket-index/scribblings/main/user
> >> PLaneT: raco setup: making: <planet>/planet/test-connection.plt/1/0
> >> (Test connection)
> >> PLaneT: raco setup:  in <planet>/planet/test-connection.plt/1/0
> >> PLaneT: raco setup: --- creating launchers ---
> >> PLaneT: raco setup: --- building documentation ---
> >> ^C
> >> C:\Users\robby>user break
> >>    context...:
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects\db\private\sqlite3\ffi.rkt:44:2
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects\db\private\sqlite3\main.rkt:10:0:
> >> sqlite3-connect11
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects\setup\doc-db.rkt:153:0:
> >> doc-db-get-provides-timestamp
> >>     C:\Program Files
> >> 
> (x86)\Racket-5.91-pre-release\share\pkgs\racket-index\setup\scribble.rkt:946:0
> >>
> >>     loop
> >>     C:\Program Files
> >> 
> (x86)\Racket-5.91-pre-release\share\pkgs\racket-index\setup\scribble.rkt:131:0:
> >>
> >> setup-scribblings
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects\setup\setup-core.rkt:59:0:
> >> setup-core
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects\setup\setup.rkt:56:3
> >> user break
> >>    context...:
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects\planet\private\resolver.rkt:606:8
> >>     C:\Program Files
> >> 
> (x86)\Racket-5.91-pre-release\collects\planet\private\planet-shared.rkt:618:2:
> >>
> >> with-logging
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects\planet\private\resolver.rkt:573:0:
> >> install-pkg
> >>     C:\Program Files
> >> 
> (x86)\Racket-5.91-pre-release\share\pkgs\planet-lib\planet\private\cmdline-tool
> .rkt:153:2:
> >>
> >> download/
> >> install
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\share\pkgs\planet-lib\planet\raco.rkt:
> >> [running body]
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects\raco\raco.rkt: [running body]
> >>     C:\Program Files
> >> (x86)\Racket-5.91-pre-release\collects\raco\main.rkt: [running body]
> >>
> >> C:\Users\robby>
> >>
> >>
> >> Robby
> >>
> >

Posted on the dev mailing list.