OMG! I have no idea you guys even have this!! Do you, by any chance, have the IRC network and room info? I would love to join you guys next time!
________________________________ From: Ikai L (Google) <ika...@google.com> To: google-appengine@googlegroups.com Sent: Thu, August 19, 2010 11:25:25 AM Subject: [google-appengine] Google App Engine IRC Office hours chat transcript August 19, 2010 Hey everyone, Just wanted to post the transcript for our IRC office hours. We're thinking about reducing the chat time to once a month due to the relatively low-level of activity. Would it be more useful if we scheduled IRC office hours for a week after each release? ----- Notable questions: - What is multi-tenancy? Multitenancy is the ability to create namespaces for your data in the datastore, memcache and task queues. Developers will be able to create virtual partitions in their application as needed. This can apply to an application with multiple domains, multiple customers, and so forth. - How do you get the namespace of a model instance in Python? .key().namespace() - Can you use namespaces to separate models by account owners? (replace "where account = :1") Yes - Can you globally change a namespace name? No - Will App Engine allow users to manage/purchase more memory in the future? Possibly, we are exploring ways in which we can do this. [08:59am] ikai_google: All right everybody, let's kick off today's office hours session [08:59am] ikai_google: there are a few Googlers in hiding here [08:59am] nickjohnson: Evening all [08:59am] ikai_google: you all know me, I lurk here much of the time [09:00am] moraes: i knew it!!!11 [09:00am] ikai_google: there's also nickjohnson [09:00am] ikai_google: there are a few whom I suspect are googlers based on their handles [09:00am] ikai_google: but I'm not going to call them out =) [09:01am] • moraes summons the hidding spirits [09:01am] morais78 joined the chat room. [09:02am] ikai_google: okay, so ... everyone has seen the 1.3.6 release, right? [09:02am] ikai_google: http://googleappengine.blogspot.com/2010/08/multi-tenancy-support-high-performance_17.html [09:02am] nickjohnson: Yaay! [09:02am] ikai_google: there's LOTS of good stuff here [09:02am] moraes: you know, i didn't even know what "Multi-tenancy" meant but i know that i was doing it hardcoded [09:02am] perlmonkey2: anything in the gae pipeline thats going to make a splash? [09:02am] nickjohnson: moraes: Are you intending to switch? [09:02am] moraes: nickjohnson, yes, now [09:02am] ikai_google: perlmonkey2: lots [09:03am] ikai_google: perlmonkey2: 1.3.6 is a pretty big release as it is [09:03am] slynch_google joined the chat room. [09:03am] moraes: nickjohnson, i created run_in_namespace(), the cousing of run_in_transaction(): http://paste.pocoo.org/show/251604/ [09:03am] moraes: hehe [09:04am] moraes: *cousin [09:04am] psykidellic: So what would be the best option to stream mp3 (stored in GAE) over RTMP? [09:04am] perlmonkey2: ikai_google just saw your post. new releases are always exciting [09:04am] johnlockwood joined the chat room. [09:04am] nickjohnson: moraes: Oh, nice. [09:05am] ikai_google: psykidellic: I'm not an expert on RTMP but #2 looks like the way to go http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol [09:05am] morais78: "Custom Error Pages": thank you appengine team :) [09:06am] psykidellic: So I guess I have to run an external RTMP server and configure it to use the GAE datastore? [09:06am] ikai_google: psykidellic: Again, not an expert. Try it out and let us know, I don't know how this works or even if it *will* work [09:06am] mbw: psykidellic: if you are interested in RTMP in python, talk to Nick Joyce. He is the author of PyAMF and RTMPy ... he is njoyce on this chan [09:06am] psykidellic: Okay. [09:06am] ikai_google: hey mike! [09:06am] nickjohnson: psykidellic: That's probably the best option. RTMP over HTTP _might_ work, but you'd have to implement your own RTMP stack in App Engine [09:06am] mbw: hi ikai [09:06am] moraes: nickjohnson, can you get from an entity its namespace? [09:06am] ikai_google: in case anyone is wondering, mbw is from WebFilings: http://googleappengine.blogspot.com/2010/08/webfilings-streamlines-sec-reporting.html [09:07am] psykidellic: Yeah, I have seen: http://rtmpy.org/ - it uses Twisted so wont run on GAE. [09:07am] ikai_google: moraes: You might be able to set the namespace, then just do a "get all entities" [09:07am] ikai_google: moraes: I'm not sure what you're asking? [09:07am] mbw: psykidellic: Nick actually works with Webfilings now, but he is still actively working on PyAMF and RTMPy. WF hasn't used rtmp at all, but we have made large contributions to the GAE adapter for PyAMF [09:07am] nickjohnson: moraes: Yes, it's part of the key [09:08am] nickjohnson: .key().namespace(), I suspect [09:08am] psykidellic: mbw: Aha, nice. I will look around for him up here. [09:08am] moraes: nickjohnson, oh ok, was looking for this. ikai_google, that ^ [09:08am] psykidellic: mbw: From all the option, it seems the easiest (considering I am not much RTMP expert) would be run Wowza on EC2 and configure it to use GAE (though I am not sure if thats even possible) [09:08am] moraes: key().namespace() indeed, i missed that [09:09am] carlosm left the chat room. (Remote host closed the connection) [09:10am] mbw: psykidellic: an external setup would probably work. Nick would know a lot more. he is in Australia so his timezone is wacky. Ill ping him and let him know you were curious about it. [09:11am] psykidellic: mbw: Oh, that would be nice :) Thanks. [09:11am] chevelle_ joined the chat room. [09:11am] Wesley_Google joined the chat room. [09:11am] psykidellic: I wonder how hard it will be to implement the stack on GAE? [09:12am] ph43thon: only one way to find out [09:12am] ph43thon: :) [09:12am] psykidellic: Heh [09:12am] mbw: ikai_google: what did you think of the blog post? Some of it sounded a bit funny to me (i didnt write it), but overall a good thing for both webfilings and gae I think. [09:12am] nickjohnson: I suspect you'll be able to reuse some of the message parsing infrastructure, but you'll have to write your own connectors. [09:12am] ikai_google: ikai_google: I wish we had 10x more like you guys. seriously. hahaha [09:13am] ikai_google: DOH [09:13am] ikai_google: replied to myself [09:13am] ikai_google: that was meant to go to mbw [09:13am] ikai_google: LOL LOL what a bad one to address to myself [09:13am] Wesley_Google: lolz [09:13am] slynch_google: hahahahaha [09:13am] moraes: moraes: haha [09:13am] ph43thon: seems like a Freudian slip [09:13am] ph43thon: :) [09:13am] Wesley_Google: means it's too early in the morning for ikai [09:13am] ikai_google: well, I'mm sending out the recap so that'll be conveniently missing [09:13am] jwbnyc joined the chat room. [09:14am] ksachdeva: In my gae models I have been putting the name/ref of domain name so as to be able to find the entities belonging to a particular gapps domain name. Is the namespace support eliminate such a need now ? [09:14am] derferman joined the chat room. [09:14am] nickjohnson: ksachdeva: Yes. [09:14am] mbw: We will be able to get rid of "where account=:1" everywhere! [09:15am] nickjohnson: If you want to convert your old entities, you'll need to get them, clone them into new entities, and store them again. The Mapper API would be a good match for that. [09:15am] nickjohnson: mbw: You mean you didn't have an RPC hook to do that for you? :) [09:15am] mbw: nickjohnson: that migration is going to be scary and tricky for us [09:15am] nickjohnson: mbw: Yes, I can imagine you'd want to take particular care. [09:15am] nickjohnson: You could do something like this: [09:15am] nickjohnson: 1) Make new code write to both old and new schemes [09:16am] derferman left the chat room. (Read error: Connection reset by peer) [09:16am] nickjohnson: 2) Run the mapreduce to copy everything to the new scheme, leaving the 'account' property in [09:16am] mbw: 1) wont perform very well [09:16am] derferman joined the chat room. [09:16am] nickjohnson: 3) Add the namespace hook [09:16am] nickjohnson: 4) Remove 'account=' from old code [09:16am] ph43thon: Can you create namespaces inside namespaces? [09:16am] mbw: we will mapreduce and write new ones in a migration, we will most likely do it late at night on a weekend when no customers are using it.. shutdown the app during [09:16am] nickjohnson: No, it won't, but it wouldn't have to be for long [09:17am] nickjohnson: ph43thon: No, but you can set any namespace you want, so you could build a namespace string like "foo:bar" [09:17am] mbw: but the migration wont be easy, not everything has account set on it, the model is not that simple :D [09:17am] nickjohnson: mbw: That's a more straightforward option, if you can do it. [09:17am] ph43thon: hmm.. can you globally change a namespace name? [09:17am] ph43thon: like "foo:bar" --> "bar" [09:17am] ikai_google: ph43thon: Namespaces are keys, I believe, so no [09:17am] ikai_google: keys cannot change [09:17am] jwbnyc: A question on deployment - I'd like to run a continuous integration with automated deployment in the cloud. Anyone know of a tool that can be run from GAE Cron that will pull from repository and deploy a GAE app? [09:17am] nickjohnson: ph43thon: No, only by get/clone/set across all the entities that use it. [09:17am] ikai_google: it's a different entity altogether [09:17am] nickjohnson: mbw: You'll also need to make sure you handle any reference properties. [09:18am] ph43thon: okay thanks. [09:18am] nickjohnson: For that matter, you may choose to continue as you are, if you consider the disadvantages of your current approach worth it [09:18am] ikai_google: jwbnyc: I don't know of one, but other folks have used local tools to pull from a repo and do deploys using the --passin flag for password [09:18am] moraes: the "Multi-tenancy" name is not fair. i first looked at "Multi-tenancy" and thought, hmm, let's see the next one, and later realized this is a huge one :P [09:19am] nickjohnson: moraes: Perhaps we should've listed it as "OMG, Awesome multitenancy!!!111" [09:19am] ph43thon: are there any writeups on the innerworkings of namespaces? or is it pretty much that it's just a prepended value to the front of the full gae keyname? [09:19am] moraes: "namespaced data!!!1!" [09:19am] ikai_google: ph43thon: No writeups yet, it's just released [09:19am] ikai_google: ph43thon: Give us a bit, I'm sure Nick is already working on something =P [09:20am] nickjohnson: ph43thon: They become part of the key, as you say, and the datastore has safeguards to make sure you can only get/query/put the current namespace. [09:20am] nickjohnson: In principle it's fairly simple. [09:20am] psykidellic: Yeah, I have never used such things before so I am in a bind, what problem exactly gets solved by namespace :) [09:20am] ikai_google: ph43thon: The big win here is queries, whereas before it would have been harder, especially if you implemented it yourself [09:20am] mbw: exactly... which will reduce indexes [09:21am] moraes: psykidellic, user1.foo.appspot.com and user2.foo.appspot.com ---> set namespaces for user1 and user2 and have separate data without api hooks or extra filters in queries [09:21am] mbw: also, we will setup certain kinds to be in the default namespace while most others will use current namespace as set by a middleware related to session management/security... will be much more simple and harder for us to make a mistake and leak data across accounts [09:22am] ph43thon: ikai: welll, i can also see a lot of really great uses.. i mean.. you could create something to do snapshots of all your data in your app (with namespace="snapshotdate") .. its a good way to allow you to keep Model definititions simple and breaking them up into different sets (with namepsaces becoming things beyond just clients..) etc [09:23am] pranny left the chat room. (Quit: Leaving.) [09:23am] mbw: it will make backup simpler too I assume, we will be able to take an entire customers data and pull it out, into another instance or whatever [09:24am] ikai_google: ph43thon: I think the problem with snapshots is that you need to set a namespace to use the data, so that data is not available unless you are in that namespace. To use namespaces like that you're essentially doing a doublewrite [09:24am] chevelle_ left the chat room. (Ping timeout: 240 seconds) [09:25am] ph43thon: ikai: hmm, yeah, haven't thought out the snapshot thing.. it think its ridculawesome mainly for making it easier to partition out data without needing to add an extra property to a model (and it makes life a lot easier if you craft your own key_names for entities) [09:26am] ikai_google: ph43thon: yep yep yep! [09:28am] nickjohnson: And as others have pointed out, it eliminates many places where you'd otherwise need an index because of the namespace property [09:29am] moraes: the was a long discussion in mailing list of a guy that had to the multi-tenancy himself [09:30am] moraes: if he's still around he must be happy :P [09:30am] rafanunes: I was hoping that channel api would come in that sdk version [09:31am] ikai_google: rafanunes: so were we. stay tuned [09:31am] mbw: We have enough to do to catch up and use all the new awesomeness that the GAE team has released... channel will be another one [09:31am] ikai_google: rafafunes: in a perfect world, we can release every single feature everyone wants with every release and there are no scalability/security concerns [09:31am] ph43thon: hehe.. i noticed the comments on the blog post: ("multi-tenancy what?.. hey where's Channel Api?") [09:32am] ikai_google: yeah, it makes me wonder if we should go back to not announcing anything [09:32am] moraes: multi-tenancy is not a sexy name [09:32am] ikai_google: but I think the lesser of the two evils is teasing everyone [09:33am] ikai_google: moraes: how about ... data sharding [09:33am] mbw: I like that you guys put out things to play with before release. Gives us a chance to kick the tires and do some planning [09:33am] moraes: but i am personally very excited about multi-tenancy [09:33am] nickjohnson: ikai_google: That implies other things. [09:33am] ikai_google: moraes: maybe there's a very buzzword-y name. nosql cloud scalable sharding [09:33am] ph43thon: Do any of you know of any academic institutions or research places using GAE in place of other grid computing infrastructures? i.e. is anyone using it for anything big that has to do with back end processing or solving big NP-hard stuff? [09:33am] julian__ left the chat room. (Ping timeout: 276 seconds) [09:34am] nickjohnson: ph43thon: It's possible, but big backend grunt work jobs aren't really App Engine's forte [09:36am] ph43thon: nickj: well, it seems like the parallelization part is very easy to do.. what would be the main reason not to do a big search optimization problem on GAE? (versus setting up a big cluster of EC2 instances) [09:37am] ikai_google: ph43thon: Seems pretty theoretical right now ... build it and let us know! [09:37am] ph43thon: ikai: :) working on it [09:37am] ph43thon: (though, i frequently do pretty dumb things so.. trying to figure out just how dumb I may be being.) [09:39am] derferman left the chat room. (Quit: derferman) [09:39am] ph43thon: oh.. and by "search optimization", i mean searching through a problem space randomly.. trying to seek out an optimal answer to ones question.. (not search engine optimization) [09:40am] slynch_google left the chat room. (Quit: slynch_google) [09:41am] morais78 left the chat room. (Quit: Page closed) [09:42am] nickjohnson: .set_request_namespace('tumbleweed') [09:44am] ph43thon: yeah, people really seem to clam up when the topic isn't twittering links back and forth to pictures of Kim Kardashian's bottom.. [09:44am] nickjohnson: You could write an App Engine app for that [09:44am] nickjohnson: Is kimkardashiansbottom.appspot.com taken? [09:44am] ph43thon: nickj: working on it too! [09:44am] nickjohnson: heh. [09:44am] Wesley_Google: who? [09:45am] sako joined the chat room. [09:45am] ph43thon: i'm creating a pso algorithm to randomly analyze all web pics of kim kardashians bottom and find the ultimate one [09:45am] mbw: Is anyone working on addressing memory profiling concerns that some GAE users are having? [09:45am] ph43thon: but.. there are so many.. and i'm looking at all possible sets of 5.. this is NP-hard [09:45am] ph43thon: (so to speak) [09:46am] Wesley_Google: the issue is that's subjective, and algorithms aren't as such... [09:46am] mbw: I am also wondering if/when the amount of memory available will be discussed, changed, or made purchasable [09:46am] johnlockwood: how do you add to the domain name of an app: user1.myapp.appspot.com, user2.myapp.appspot.com [09:46am] ikai_google: mbw: that's something we're looking into, but before we can do that we need to figure out how to bill for it, how to make it fair, etc [09:46am] Wesley_Google: mbw> specifically what kinds of memory profiling issues have you been encountering? [09:46am] moraes: johnlockwood, you don't need. you just use it [09:47am] nickjohnson: johnlockwood: That feature is enabled automatically. [09:47am] Wesley_Google: i think you just check the HOST env var to get the hostname? (or something similar) [09:47am] mbw: Wesley_Google: We see soft memory limit errors more frequently when we stress some particular features we have. We need to figure out what is leaking. [09:48am] jeffr joined the chat room. [09:48am] johnlockwood: son-of-a-gun [09:48am] mbw: Wesley_Google: for a majority of our app's services, we don't see them at all. It is more related to some task queue tasks, etc [09:49am] Wesley_Google: mbw> pls cut-n-paste those full stack traces to us... it'll really help route it to the right team mbrs [09:50am] mbw: Wesley_Google: We are not seeing an actual "MemoryError" exception. Just the soft memory limit warning messages in the logs. The requests/tasks seem to complete normally most of the time. [09:51am] Wesley_Google: mbw> ah.... send those anyway so we can at least figure out where they're happening... [09:51am] mbw: Another question. On some deferred tasks we see Error code 203... what is that? [09:51am] johnlockwood: it doesn't seem to work automatically for custom domains, like user1.www.mydomain.com [09:52am] mbw: we only ever see "Error code 203" on our deferred queue tasks [09:52am] xjrn left the chat room. (Ping timeout: 255 seconds) [09:53am] mbw: some have throttle_code=1 [09:53am] xjrn joined the chat room. [09:54am] moraes: johnlockwood, those you need to map in dns [09:54am] Wesley_Google: mbw> is that an HTTP 203 or more like an app engine error code? [09:55am] moraes: johnlockwood, *.www.domain.com CNAME ghs.google.com or something [09:55am] johnlockwood: moraes: thanks [09:55am] mbw: Wesley_Google: HTTP 500, log level warning, "A serious problem was encountered with the process that handled this request, causing it to exit. This is likely to cause a new process to be used for the next request to your application. If you see this message frequently, you should contact the App Engine team. (Error code 203)" [09:56am] Bimmel joined the chat room. [09:56am] mbw: the calls seem to last various times, some 10s, up to about 20s [09:58am] mbw: also, I see the same error message only with "(Error code 201)" and before that it mentions the soft memory limit was exceeded [10:00am] mbw: Wesley_Google: should I just send off a report of this stuff to Fred or someone else? [10:00am] ksuFreeflier joined the chat room. [10:00am] Wesley_Google: i just pinged the team, but you can send it to me to fwd to them. fred may not be the only one that works in this area... it's better to spread the love :-) [10:01am] mbw: you guys can poke around our logs right? [10:01am] ikai_google: alright guys, I'm going to go ahead and wrap up these office hours [10:01am] nickjohnson: mbw: Only if we have a good reason. [10:01am] ikai_google: thanks for coming out [10:01am] ikai_google: we'll see you in the groups. I've got to jump off, but a few folks will probably stick around a bit longer -- Ikai Lan Developer Programs Engineer, Google App Engine Blog: http://googleappengine.blogspot.com Twitter: http://twitter.com/app_engine Reddit: http://www.reddit.com/r/appengine -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.