Re: [appengine-java] ANN: BatchFB 2.1, a Java Facebook library with automatic batching

2011-07-12 Thread Gal Dolber
Nice job, thanks for sharing!

On Tue, Jul 12, 2011 at 2:55 AM, Jeff Schnitzer j...@infohazard.org wrote:

 This is the first time I've announced this opensource project in this forum
 because until now there wasn't anything GAE-specific about it.  You can
 still use BatchFB outside of GAE, but now BatchFB will use asynchronous
 fetching on App Engine to issue multiple batches to Facebook in parallel.
  This is *the* fastest way to pull down significant quantities of data from
 Facebook.

 http://batchfb.googlecode.com/

 Here is a quick snippet of code:

 ---

 Batcher batcher = new FacebookBatcher(accessToken);


 LaterUser me = batcher.graph(me, User.class);

 LaterUser mark = batcher.graph(markzuckerberg, User.class);

 LaterListUser myFriends = batcher.query(


 SELECT uid, first_name, pic_square FROM user WHERE uid IN +


 (SELECT uid2 FROM friend WHERE uid1 =  + myId + ), User.class);

 LaterUser bob = batcher.queryFirst(SELECT timezone FROM user WHERE uid =  
 + bobsId, User.class);

 PagedLaterPost feed = batcher.paged(me/feed, Post.class);


 // No calls to Facebook have been made yet.  The following get() will execute 
 the
 // whole batch as a single Facebook call.

 String timezone = bob.get().timezone;

 ---

 You can stack up hundreds of Graph and FQL requests using the
 Future?-like interface; BatchFB will group them into batches and execute
 the batches in parallel on App Engine.

 Enjoy,
 Jeff

  --
 You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
 To post to this group, send email to
 google-appengine-java@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=en.




-- 
Guit: Elegant, beautiful, modular and *production ready* gwt applications.

http://code.google.com/p/guit/

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Multi-threaded datastore test in JUnit

2011-07-12 Thread Gabriel Charette
I was looking to do this with the datastore actually.

I just found a nice way of doing it (this will probably also work for
memcache...?)

At the beginning of you test case (in the main thread) put:
final Environment testEnvironment = ApiProxy.getCurrentEnvironment();

And then inside your other thread(s) put:
ApiProxy.setEnvironmentForCurrentThread(testEnvironment);

No Need to build a fake test environment from scratch :).

Cheers,
Gabriel

On Jul 11, 9:46 am, Frank Leon Rose frankleonr...@gmail.com wrote:
 Gabriel,

 All the code is in my two prior posts. What happens when you run the test
 code above?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Retreive Domain Name of Google Apps Api

2011-07-12 Thread Neha Chandra
Hi,

I am trying to retreive Domain name but the code i have written it returning 
gmail.com.


package com;

import java.io.IOException;
import com.google.appengine.api.
users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.appengine.api.oauth.OAuthRequestException;
import com.google.appengine.api.oauth.OAuthService;
import com.google.appengine.api.oauth.OAuthServiceFactory;
import com.google.appengine.api.users.User;
import com.google.gwt.core.client.GWT;


@SuppressWarnings(serial)
public class GetDomainServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType(text/plain);
resp.getWriter().println(Hello, world);
resp.getWriter().println(Hllo);


 UserService userService = UserServiceFactory.getUserService();

String thisURL = req.getRequestURI();


if (req.getUserPrincipal() != null) {
resp.getWriter().println(In if);
resp.getWriter().println(pHello,  +
req.getAuthType());
} else {
resp.getWriter().println(In else);
resp.getWriter().println(pPlease a href=\ +
 userService.createLoginURL(thisURL) 
+
 \sign in/a./p);
resp.getWriter().println(pHello,  +
req.getQueryString());
}

OAuthService oauth = OAuthServiceFactory.getOAuthService();
try {
User user = oauth.getCurrentUser();
resp.getWriter().println(br/Get Current Domain :  + 
user.getAuthDomain());
} catch (OAuthRequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



}
}

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/iAkRdP6pspUJ.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: How to ensure two entities are updated WITHOUT using transactions?

2011-07-12 Thread Nichole
Here's an implementation.  You might want to add checks for read
staleness, and think about using a task
structure for the operations to make retry easier.

The unit test structure is from from 
http://code.google.com/appengine/docs/java/howto/unittesting.html

package com.climbwithyourfeet.events.dao;

import java.util.ArrayList;
import javax.jdo.Transaction;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import java.util.logging.Logger;
import com.google.appengine.tools.development.LocalDatastoreTestCase;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class TwoOperationPseudoTransactionTest extends
LocalDatastoreTestCase {

private Logger log = Logger.getLogger(this.getClass().getName());

private UserGameCredits userGameCredits = new UserGameCredits();

private UserAccount userAccount = new UserAccount();

public TwoOperationPseudoTransactionTest() {
super();
}

@Before
public void setUp() throws Exception {
super.setUp();
}

@After
public void tearDown() throws Exception {
super.tearDown();
}

public class UserGameCredits {
public boolean add(int credits) {
return true;
}
}

public class UserAccount {
public double getBalance() {
return 123456789.00;
}
public boolean add(int credits) {
return true;
}
public boolean subtractAmount(double balance, double amount,
long timestamp) {
return true;
}
}

private void handleRetry(UserGameCredits userGameCredits,
UserAccount userAccount) {
}

@Test
public void testCredits() throws Exception {

/*
 * Goal:
 * Update 2 entities which reside in 2 different entity
groups.
 * The updates must both pass or both fail.
 *
 * Example:
 * The updates are 2 operations wrapped in a try/catch/
finally block.
 * The entities are UserGameCredits and UserAccount and
are in diff entity groups.
 * One transaction, the current transaction, is available
for the application,
 *so only one transaction-wrapped-operation can be
rolled back in the
 *finally clause if needed.
 *
 * GameCredits update has higher priority as the user may
need to see
 *it immediately. The payment processing may take
longer - so UserAccount consistency
 *can have slightly less priority.
 */

PersistenceManagerFactory pmfInstance =
JDOHelper.getPersistenceManagerFactory(transactions-optional);

PersistenceManager pm = null;
Transaction tx = null;

final ListBoolean completedOp1 = new ArrayListBoolean();
final ListBoolean completedOp2 = new ArrayListBoolean();

int credits = 10;
final double cost = 1;
final double accountBalance = userAccount.getBalance();
final long timestamp = System.currentTimeMillis();

try {

// change to simulate pass or fail
boolean testShouldPass = false;

pm = pmfInstance.getPersistenceManager();

tx = pm.currentTransaction();
tx.setIsolationLevel(read-committed);
tx.begin();

tx.setSynchronization(new
javax.transaction.Synchronization() {
public void beforeCompletion() {
// before commit or rollback
log.info(before transaction);
}
public void afterCompletion(int status) {
if (status ==
javax.transaction.Status.STATUS_ROLLEDBACK) {
// rollback
log.severe(rollback transaction:
userGameCredits failed to update.  submitting retry);
handleRetry(userGameCredits, userAccount);
} else if (status ==
javax.transaction.Status.STATUS_COMMITTED) {
// commit
log.info(commit: userGameCredits are
updated);
completedOp1.add(Boolean.TRUE);
// TODO: possibly replace this w/ start in a
task
// The update task should have logic to assert
state before applying operation
boolean done =
userAccount.subtractAmount(accountBalance, cost, timestamp);
completedOp2.add(done);
}
}

});

log.info(updating user game credits);
//pm.refresh(userAccount);
userGameCredits.add(10);

pm.flush();

if (testShouldPass) {
log.info(committing);
tx.commit();
} else {
log.info(rollback);
tx.rollback();
}


 

[appengine-java] Re: 1.5.2 SDK Prerelease

2011-07-12 Thread Max
Great job!

May I know more about *t**he datastore now never requires an exploding index
*?

Does that mean we don't need to build exploding index or simply can't build 
exploding index?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/KyL9f70-VtkJ.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: [google-appengine] Re: 1.5.2 SDK Prerelease

2011-07-12 Thread Pascal Voitot Dev
exactly the same question ;)

On Tue, Jul 12, 2011 at 11:21 AM, Max thebb...@gmail.com wrote:

 Great job!

 May I know more about *t**he datastore now never requires an exploding
 index*?

 Does that mean we don't need to build exploding index or simply can't build
 exploding index?

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/KyL9f70-VtkJ.

 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 for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: How to ensure two entities are updated WITHOUT using transactions?

2011-07-12 Thread mscwd01
That's awesome, many thanks for taking the time to explain that.

On Jul 12, 9:37 am, Nichole nichole.k...@gmail.com wrote:
 Here's an implementation.  You might want to add checks for read
 staleness, and think about using a task
 structure for the operations to make retry easier.

 The unit test structure is from 
 fromhttp://code.google.com/appengine/docs/java/howto/unittesting.html

 package com.climbwithyourfeet.events.dao;

 import java.util.ArrayList;
 import javax.jdo.Transaction;
 import javax.jdo.PersistenceManagerFactory;
 import javax.jdo.JDOHelper;
 import javax.jdo.PersistenceManager;
 import java.util.logging.Logger;
 import com.google.appengine.tools.development.LocalDatastoreTestCase;
 import java.util.List;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;

 public class TwoOperationPseudoTransactionTest extends
 LocalDatastoreTestCase {

     private Logger log = Logger.getLogger(this.getClass().getName());

     private UserGameCredits userGameCredits = new UserGameCredits();

     private UserAccount userAccount = new UserAccount();

     public TwoOperationPseudoTransactionTest() {
         super();
     }

     @Before
     public void setUp() throws Exception {
         super.setUp();
     }

     @After
     public void tearDown() throws Exception {
         super.tearDown();
     }

     public class UserGameCredits {
         public boolean add(int credits) {
             return true;
         }
     }

     public class UserAccount {
         public double getBalance() {
             return 123456789.00;
         }
         public boolean add(int credits) {
             return true;
         }
         public boolean subtractAmount(double balance, double amount,
 long timestamp) {
             return true;
         }
     }

     private void handleRetry(UserGameCredits userGameCredits,
 UserAccount userAccount) {
     }

     @Test
     public void testCredits() throws Exception {

         /*
          * Goal:
          *     Update 2 entities which reside in 2 different entity
 groups.
          *     The updates must both pass or both fail.
          *
          * Example:
          *     The updates are 2 operations wrapped in a try/catch/
 finally block.
          *     The entities are UserGameCredits and UserAccount and
 are in diff entity groups.
          *     One transaction, the current transaction, is available
 for the application,
          *        so only one transaction-wrapped-operation can be
 rolled back in the
          *        finally clause if needed.
          *
          *     GameCredits update has higher priority as the user may
 need to see
          *        it immediately. The payment processing may take
 longer - so UserAccount consistency
          *        can have slightly less priority.
          */

         PersistenceManagerFactory pmfInstance =
 JDOHelper.getPersistenceManagerFactory(transactions-optional);

         PersistenceManager pm = null;
         Transaction tx = null;

         final ListBoolean completedOp1 = new ArrayListBoolean();
         final ListBoolean completedOp2 = new ArrayListBoolean();

         int credits = 10;
         final double cost = 1;
         final double accountBalance = userAccount.getBalance();
         final long timestamp = System.currentTimeMillis();

         try {

             // change to simulate pass or fail
             boolean testShouldPass = false;

             pm = pmfInstance.getPersistenceManager();

             tx = pm.currentTransaction();
             tx.setIsolationLevel(read-committed);
             tx.begin();

             tx.setSynchronization(new
 javax.transaction.Synchronization() {
                 public void beforeCompletion() {
                     // before commit or rollback
                     log.info(before transaction);
                 }
                 public void afterCompletion(int status) {
                     if (status ==
 javax.transaction.Status.STATUS_ROLLEDBACK) {
                         // rollback
                         log.severe(rollback transaction:
 userGameCredits failed to update.  submitting retry);
                         handleRetry(userGameCredits, userAccount);
                     } else if (status ==
 javax.transaction.Status.STATUS_COMMITTED) {
                         // commit
                         log.info(commit: userGameCredits are
 updated);
                         completedOp1.add(Boolean.TRUE);
                         // TODO: possibly replace this w/ start in a
 task
                         // The update task should have logic to assert
 state before applying operation
                         boolean done =
 userAccount.subtractAmount(accountBalance, cost, timestamp);
                         completedOp2.add(done);
                     }
                 }

             });

             log.info(updating user game credits);
             //pm.refresh(userAccount);
             

[appengine-java] Re: Multi-threaded datastore test in JUnit

2011-07-12 Thread Frank Leon Rose
Yeah, that's much cleaner. Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Best way to work with a CellTable and many-to-one relationship with objectify?

2011-07-12 Thread Drew Spencer
Thanks for the great reply as always Jeff.

In contrast to you, my app is going to be used only by employees of my 
company, so preferably I would like to have all data sent over the wire 
encrypted. We're talking about employees of my company accessing data about 
our clients - so it is very sensitive data and I would think therefore that 
whether I need to use a DTO or not, everything should be private. Is this 
correct, or is it ok to use public properties without getters and setters as 
long as I'm encrypting the data?

Cheers,

Drew

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/YQX1oC92g6AJ.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Gmail's Report a bug like feature in gwt gae application

2011-07-12 Thread MANISH DHIMAN
Hello,
We have a GWT application running on Google app engine. Is it possible
to achieve this feature on Google App Engine. I have found some java
programs which convert html files to png. But these programs are using
java classes which are not included in white list by Google App
Engine. Is it possible to achieve this feature on app engine?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Best way to work with a CellTable and many-to-one relationship with objectify?

2011-07-12 Thread Jeff Schnitzer
The public/private/protected/package status of java fields is 100%
irrelevant from a security perspective.  It's just there to help keep your
code clean.  The data is still being passed across the wire in a simple,
easily-decoded protocol that any sniffer can translate.

If you're passing sensitive data across the internet, you *certainly* need
to use SSL at the very least.  Having getters/setters vs public fields is
purely a stylistic concern in this context.

Jeff

On Tue, Jul 12, 2011 at 4:52 AM, Drew Spencer slugmand...@gmail.com wrote:

 Thanks for the great reply as always Jeff.

 In contrast to you, my app is going to be used only by employees of my
 company, so preferably I would like to have all data sent over the wire
 encrypted. We're talking about employees of my company accessing data about
 our clients - so it is very sensitive data and I would think therefore that
 whether I need to use a DTO or not, everything should be private. Is this
 correct, or is it ok to use public properties without getters and setters as
 long as I'm encrypting the data?

 Cheers,

 Drew

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine-java/-/YQX1oC92g6AJ.

 To post to this group, send email to
 google-appengine-java@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=en.


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Call to channel.open() fails silently

2011-07-12 Thread Sébastien Tromp
Hello,

I am currently building a GWT + GAE app that uses Channels, thanks to the
http://code.google.com/p/gwt-gae-channel/ library.
Everything goes well locally (both hosted and web mode), but when the
deployed app fails silently.

I have several pages, and would like to use a Channel in several of them.
From what I read from the GAE doc, you can have only one Channel open at any
given time on one page.
I thus decided to reuse my Channel across the different pages (for now
storing it as a static on the client side).

*First page*
*
*
On my landing page, I call ChannelFactory.createChannel(final String
clientId, final ChannelCreatedCallback callback), which basically does:

return new $wnd.goog.appengine.Channel(clientId);
...
callback.onChannelCreated(channel)

and in the callback, I do channel.open(SocketListener)

channel.open() is basically:
var socket = this.open();
socket.onopen =
socket.onclose = ...


*Second page*
On the next page, I simply get the reference to the channel, and again call
channel.open(SocketListener)
At that point, nothing happens, and no log is produced.


Looking at the quota detail in the appengine dashboard, I can confirm that
only 1 channel is opened, so it should not be an issue with this.

Would you have any idea as to what is going on?
-- 
seb

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Call to channel.open() fails silently

2011-07-12 Thread Sébastien Tromp
The only thing I can find that seems strange is this request (captured using
Chrome Developer tools):


   1. Request URL:
   http://test.latest.thefiveorbs2.appspot.com/_ah/channel/jsapi
   2. Request Method:
   GET
   3. Status Code:
   302 Found


By the way, the test URL is http://test.latest.thefiveorbs2.appspot.com/

Thanks for any help,
-- 
seb


2011/7/12 Sébastien Tromp sebastien.tr...@gmail.com

 Hello,

 I am currently building a GWT + GAE app that uses Channels, thanks to the
 http://code.google.com/p/gwt-gae-channel/ library.
 Everything goes well locally (both hosted and web mode), but when the
 deployed app fails silently.

 I have several pages, and would like to use a Channel in several of them.
 From what I read from the GAE doc, you can have only one Channel open at any
 given time on one page.
 I thus decided to reuse my Channel across the different pages (for now
 storing it as a static on the client side).

 *First page*
 *
 *
 On my landing page, I call ChannelFactory.createChannel(final String
 clientId, final ChannelCreatedCallback callback), which basically does:

 return new $wnd.goog.appengine.Channel(clientId);
 ...
 callback.onChannelCreated(channel)

 and in the callback, I do channel.open(SocketListener)

 channel.open() is basically:
 var socket = this.open();
 socket.onopen =
 socket.onclose = ...


 *Second page*
 On the next page, I simply get the reference to the channel, and again call
 channel.open(SocketListener)
 At that point, nothing happens, and no log is produced.


 Looking at the quota detail in the appengine dashboard, I can confirm that
 only 1 channel is opened, so it should not be an issue with this.

 Would you have any idea as to what is going on?
 --
 seb


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Re: [google-appengine] Re: 1.5.2 SDK Prerelease

2011-07-12 Thread Alfred Fuller
Hi,

It means that there are alternatives to using exploding indexes (i.e. they
are no longer required to execute a given query). You can still have them
(there are cases where they are useful, namely to optimize query speed over
write cost) and the SDK will still suggest them in many cases (as it is hard
to detect them by looking at the query). However, the SDK will no long
suggest indexes with the same property repeated multiple times (as these are
obviously an exploding index).

One example where this is very important is
SearchableModelhttp://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/search/__init__.py,
which previously was crippled by exploding indexes if you tried to sort
results (and now works as expected).

We are working on an article that goes through how to decided when to remove
or keep them, but for now the Google IO talk from 2010, Next Gen
Querieshttp://www.google.com/events/io/2010/sessions/next-gen-queries-appengine.html
(The
Zigzag Merge Join += Sort part), is a good resource if you want a really
deep dive on how this works.

 - Alfred

On Tue, Jul 12, 2011 at 2:24 AM, Pascal Voitot Dev 
pascal.voitot@gmail.com wrote:

 exactly the same question ;)

 On Tue, Jul 12, 2011 at 11:21 AM, Max thebb...@gmail.com wrote:

 Great job!

 May I know more about *t**he datastore now never requires an exploding
 index*?

 Does that mean we don't need to build exploding index or simply can't
 build exploding index?

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/KyL9f70-VtkJ.

 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 for Java group.
 To post to this group, send email to
 google-appengine-java@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=en.


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Apache Shiro on Google App Engine

2011-07-12 Thread objectuser
If anyone is interested, I've posted a short guide to using Apache Shiro on 
Google App Engine:

http://objectuser.wordpress.com/2011/06/30/apache-shiro-on-google-app-engine/

It focuses on my current stack, which includes Google Guice.  I also use 
GWT, but that should mostly be irrelevant.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/Y2s1I4sg07AJ.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Unauthorized Sender Error when trying to send an email (User logged in with Google Account)

2011-07-12 Thread kghate
I are seeing an exception when trying to send an email via the app engine. 
The email is being sent via the current user account who is signed in to the 
app with their Google account (not a gmail account, but an email account 
that is a verified google account and the corresponding account verification 
url within the email from Google has been clicked.)

Why could this be happening? The administrator account can also send out 
emails successfully, but why are current logged in users getting this error? 
Please help!

JAVAX.MAIL.SENDFAILEDEXCEPTION: SEND FAILURE (JAVAX.MAIL.MESSAGINGEXCEPTION: 
ILLEGAL ARGUMENTS (JAVA.LANG.ILLEGALARGUMENTEXCEPTION: UNAUTHORIZED SENDER: 
UNAUTHORIZED SENDER))
AT JAVAX.MAIL.TRANSPORT.SEND(TRANSPORT.JAVA:163)
AT JAVAX.MAIL.TRANSPORT.SEND(TRANSPORT.JAVA:48)
 
COM.GOOGLE.APPHOSTING.UTILS.SERVLET.TRANSACTIONCLEANUPFILTER.DOFILTER(TRANSACTIONCLEANUPFILTER.JAVA:43)
AT 
ORG.MORTBAY.JETTY.SERVLET.SERVLETHANDLER$CACHEDCHAIN.DOFILTER(SERVLETHANDLER.JAVA:1157)
AT 
ORG.MORTBAY.JETTY.SERVLET.SERVLETHANDLER.HANDLE(SERVLETHANDLER.JAVA:388)
AT 
ORG.MORTBAY.JETTY.SECURITY.SECURITYHANDLER.HANDLE(SECURITYHANDLER.JAVA:216)
AT 
ORG.MORTBAY.JETTY.SERVLET.SESSIONHANDLER.HANDLE(SESSIONHANDLER.JAVA:182)
AT 
ORG.MORTBAY.JETTY.HANDLER.CONTEXTHANDLER.HANDLE(CONTEXTHANDLER.JAVA:765)
AT ORG.MORTBAY.JETTY.WEBAPP.WEBAPPCONTEXT.HANDLE(WEBAPPCONTEXT.JAVA:418)
AT 
COM.GOOGLE.APPHOSTING.RUNTIME.JETTY.APPVERSIONHANDLERMAP.HANDLE(APPVERSIONHANDLERMAP.JAVA:249)
AT 
ORG.MORTBAY.JETTY.HANDLER.HANDLERWRAPPER.HANDLE(HANDLERWRAPPER.JAVA:152)
AT ORG.MORTBAY.JETTY.SERVER.HANDLE(SERVER.JAVA:326)
AT 
ORG.MORTBAY.JETTY.HTTPCONNECTION.HANDLEREQUEST(HTTPCONNECTION.JAVA:542)
AT 
ORG.MORTBAY.JETTY.HTTPCONNECTION$REQUESTHANDLER.HEADERCOMPLETE(HTTPCONNECTION.JAVA:923)
AT 
COM.GOOGLE.APPHOSTING.RUNTIME.JETTY.RPCREQUESTPARSER.PARSEAVAILABLE(RPCREQUESTPARSER.JAVA:76)
AT ORG.MORTBAY.JETTY.HTTPCONNECTION.HANDLE(HTTPCONNECTION.JAVA:404)
AT 
COM.GOOGLE.APPHOSTING.RUNTIME.JETTY.JETTYSERVLETENGINEADAPTER.SERVICEREQUEST(JETTYSERVLETENGINEADAPTER.JAVA:135)
AT 
COM.GOOGLE.APPHOSTING.RUNTIME.JAVARUNTIME.HANDLEREQUEST(JAVARUNTIME.JAVA:260)
AT 
COM.GOOGLE.APPHOSTING.BASE.RUNTIMEPB$EVALUATIONRUNTIME$2.HANDLEREQUEST(RUNTIMEPB.JAVA:9673)
AT COM.GOOGLE.NET.RPC.IMPL.RPCUTIL.RUNRPCINAPPLICATION(RPCUTIL.JAVA:422)
AT COM.GOOGLE.NET.RPC.IMPL.SERVER$RPCTASK.RUNINCONTEXT(SERVER.JAVA:573)
AT 
COM.GOOGLE.TRACING.TRACECONTEXT$TRACECONTEXTRUNNABLE$1.RUN(TRACECONTEXT.JAVA:448)
AT COM.GOOGLE.TRACING.TRACECONTEXT.RUNINCONTEXT(TRACECONTEXT.JAVA:688)
AT 
COM.GOOGLE.TRACING.TRACECONTEXT$ABSTRACTTRACECONTEXTCALLBACK.RUNININHERITEDCONTEXTNOUNREF(TRACECONTEXT.JAVA:326)
AT 
COM.GOOGLE.TRACING.TRACECONTEXT$ABSTRACTTRACECONTEXTCALLBACK.RUNININHERITEDCONTEXT(TRACECONTEXT.JAVA:318)
AT 
COM.GOOGLE.TRACING.TRACECONTEXT$TRACECONTEXTRUNNABLE.RUN(TRACECONTEXT.JAVA:446)
AT 
JAVA.UTIL.CONCURRENT.THREADPOOLEXECUTOR.RUNWORKER(THREADPOOLEXECUTOR.JAVA:1110)
AT 
JAVA.UTIL.CONCURRENT.THREADPOOLEXECUTOR$WORKER.RUN(THREADPOOLEXECUTOR.JAVA:603)
AT JAVA.LANG.THREAD.RUN(THREAD.JAVA:636)
CAUSED BY: JAVAX.MAIL.MESSAGINGEXCEPTION: ILLEGAL ARGUMENTS 
(JAVA.LANG.ILLEGALARGUMENTEXCEPTION: UNAUTHORIZED SENDER: UNAUTHORIZED SENDER)
AT 
COM.GOOGLE.APPENGINE.API.MAIL.STDIMPL.GMTRANSPORT.SENDMESSAGE(GMTRANSPORT.JAVA:255)
AT JAVAX.MAIL.TRANSPORT.SEND(TRANSPORT.JAVA:95)
... 39 MORE
CAUSED BY: JAVA.LANG.ILLEGALARGUMENTEXCEPTION: UNAUTHORIZED SENDER: 
UNAUTHORIZED SENDER
AT 
COM.GOOGLE.APPENGINE.API.MAIL.MAILSERVICEIMPL.DOSEND(MAILSERVICEIMPL.JAVA:104)
AT 
COM.GOOGLE.APPENGINE.API.MAIL.MAILSERVICEIMPL.SEND(MAILSERVICEIMPL.JAVA:32)
AT 
COM.GOOGLE.APPENGINE.API.MAIL.STDIMPL.GMTRANSPORT.SENDMESSAGE(GMTRANSPORT.JAVA:247)
... 40 MORE

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/w250_e6JpfQJ.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: How to ensure two entities are updated WITHOUT using transactions?

2011-07-12 Thread Nichole
Yes, you'll need to add structure to the entity update method or
surrounding it to persist the state of the entity (and use real
entities!
The test structure is purely to provide runnable code to demonstrate
one way to approach the problem).

  For the 2nd update, if you recently fetched or refreshed the entity
and the persistenceManager is still open, then the entity is still
attached and all you need to use is persistenceManager.flush() before
you close it.  It doesn't do harm, however, to use
makePersistent(entity)
if the entity isn't a detached transient instance and you certainly
do
want to use makePersistent(entity) if it is.

   And yes, the return value of makePersistent(entity) is a good check
for the last operation being successful:  the return value is
the parameter instance for parameters in the transient or persistent
state,
or the corresponding persistent instance for detached parameter
instances
:)

http://download.oracle.com/docs/cd/E13222_01/wls/docs103/kodo/jdo-javadoc/index.html?javax/jdo/JDOUserCallbackException.html


On Jul 12, 7:20 am, mscwd01 mscw...@gmail.com wrote:
 One final question. In the afterCompletion method when the userAccount
 has the amount subtracted, would you call pm.makePersistent() on the
 userAccount object? If you don't it wouldn't persist the change made
 to the userAccount surely? If this is the case would you just look to
 see that the object returned by makePersistent is not null to ensure
 the update to userAccount was saved successfully?

 Thanks

 On Jul 12, 9:37 am, Nichole nichole.k...@gmail.com wrote:







  Here's an implementation.  You might want to add checks for read
  staleness, and think about using a task
  structure for the operations to make retry easier.

  The unit test structure is from 
  fromhttp://code.google.com/appengine/docs/java/howto/unittesting.html

  package com.climbwithyourfeet.events.dao;

  import java.util.ArrayList;
  import javax.jdo.Transaction;
  import javax.jdo.PersistenceManagerFactory;
  import javax.jdo.JDOHelper;
  import javax.jdo.PersistenceManager;
  import java.util.logging.Logger;
  import com.google.appengine.tools.development.LocalDatastoreTestCase;
  import java.util.List;
  import org.junit.After;
  import org.junit.Before;
  import org.junit.Test;

  public class TwoOperationPseudoTransactionTest extends
  LocalDatastoreTestCase {

      private Logger log = Logger.getLogger(this.getClass().getName());

      private UserGameCredits userGameCredits = new UserGameCredits();

      private UserAccount userAccount = new UserAccount();

      public TwoOperationPseudoTransactionTest() {
          super();
      }

      @Before
      public void setUp() throws Exception {
          super.setUp();
      }

      @After
      public void tearDown() throws Exception {
          super.tearDown();
      }

      public class UserGameCredits {
          public boolean add(int credits) {
              return true;
          }
      }

      public class UserAccount {
          public double getBalance() {
              return 123456789.00;
          }
          public boolean add(int credits) {
              return true;
          }
          public boolean subtractAmount(double balance, double amount,
  long timestamp) {
              return true;
          }
      }

      private void handleRetry(UserGameCredits userGameCredits,
  UserAccount userAccount) {
      }

      @Test
      public void testCredits() throws Exception {

          /*
           * Goal:
           *     Update 2 entities which reside in 2 different entity
  groups.
           *     The updates must both pass or both fail.
           *
           * Example:
           *     The updates are 2 operations wrapped in a try/catch/
  finally block.
           *     The entities are UserGameCredits and UserAccount and
  are in diff entity groups.
           *     One transaction, the current transaction, is available
  for the application,
           *        so only one transaction-wrapped-operation can be
  rolled back in the
           *        finally clause if needed.
           *
           *     GameCredits update has higher priority as the user may
  need to see
           *        it immediately. The payment processing may take
  longer - so UserAccount consistency
           *        can have slightly less priority.
           */

          PersistenceManagerFactory pmfInstance =
  JDOHelper.getPersistenceManagerFactory(transactions-optional);

          PersistenceManager pm = null;
          Transaction tx = null;

          final ListBoolean completedOp1 = new ArrayListBoolean();
          final ListBoolean completedOp2 = new ArrayListBoolean();

          int credits = 10;
          final double cost = 1;
          final double accountBalance = userAccount.getBalance();
          final long timestamp = System.currentTimeMillis();

          try {

              // change to simulate pass or fail
              boolean 

Re: [appengine-java] Unauthorized Sender Error when trying to send an email (User logged in with Google Account)

2011-07-12 Thread Bruno Fuster
Hi,

Did you add the sender account to your permissions list?



On Tue, Jul 12, 2011 at 10:22 PM, kghate kgh...@gmail.com wrote:

 I are seeing an exception when trying to send an email via the app engine.
 The email is being sent via the current user account who is signed in to the
 app with their Google account (not a gmail account, but an email account
 that is a verified google account and the corresponding account verification
 url within the email from Google has been clicked.)

 Why could this be happening? The administrator account can also send out
 emails successfully, but why are current logged in users getting this error?
 Please help!

 JAVAX.MAIL.SENDFAILEDEXCEPTION: SEND FAILURE (JAVAX.MAIL.MESSAGINGEXCEPTION: 
 ILLEGAL ARGUMENTS (JAVA.LANG.ILLEGALARGUMENTEXCEPTION: UNAUTHORIZED SENDER: 
 UNAUTHORIZED SENDER))
   AT JAVAX.MAIL.TRANSPORT.SEND(TRANSPORT.JAVA:163)
   AT JAVAX.MAIL.TRANSPORT.SEND(TRANSPORT.JAVA:48)

 COM.GOOGLE.APPHOSTING.UTILS.SERVLET.TRANSACTIONCLEANUPFILTER.DOFILTER(TRANSACTIONCLEANUPFILTER.JAVA:43)
   AT 
 ORG.MORTBAY.JETTY.SERVLET.SERVLETHANDLER$CACHEDCHAIN.DOFILTER(SERVLETHANDLER.JAVA:1157)
   AT 
 ORG.MORTBAY.JETTY.SERVLET.SERVLETHANDLER.HANDLE(SERVLETHANDLER.JAVA:388)
   AT 
 ORG.MORTBAY.JETTY.SECURITY.SECURITYHANDLER.HANDLE(SECURITYHANDLER.JAVA:216)
   AT 
 ORG.MORTBAY.JETTY.SERVLET.SESSIONHANDLER.HANDLE(SESSIONHANDLER.JAVA:182)
   AT 
 ORG.MORTBAY.JETTY.HANDLER.CONTEXTHANDLER.HANDLE(CONTEXTHANDLER.JAVA:765)
   AT ORG.MORTBAY.JETTY.WEBAPP.WEBAPPCONTEXT.HANDLE(WEBAPPCONTEXT.JAVA:418)
   AT 
 COM.GOOGLE.APPHOSTING.RUNTIME.JETTY.APPVERSIONHANDLERMAP.HANDLE(APPVERSIONHANDLERMAP.JAVA:249)
   AT 
 ORG.MORTBAY.JETTY.HANDLER.HANDLERWRAPPER.HANDLE(HANDLERWRAPPER.JAVA:152)
   AT ORG.MORTBAY.JETTY.SERVER.HANDLE(SERVER.JAVA:326)
   AT 
 ORG.MORTBAY.JETTY.HTTPCONNECTION.HANDLEREQUEST(HTTPCONNECTION.JAVA:542)
   AT 
 ORG.MORTBAY.JETTY.HTTPCONNECTION$REQUESTHANDLER.HEADERCOMPLETE(HTTPCONNECTION.JAVA:923)
   AT 
 COM.GOOGLE.APPHOSTING.RUNTIME.JETTY.RPCREQUESTPARSER.PARSEAVAILABLE(RPCREQUESTPARSER.JAVA:76)
   AT ORG.MORTBAY.JETTY.HTTPCONNECTION.HANDLE(HTTPCONNECTION.JAVA:404)
   AT 
 COM.GOOGLE.APPHOSTING.RUNTIME.JETTY.JETTYSERVLETENGINEADAPTER.SERVICEREQUEST(JETTYSERVLETENGINEADAPTER.JAVA:135)
   AT 
 COM.GOOGLE.APPHOSTING.RUNTIME.JAVARUNTIME.HANDLEREQUEST(JAVARUNTIME.JAVA:260)
   AT 
 COM.GOOGLE.APPHOSTING.BASE.RUNTIMEPB$EVALUATIONRUNTIME$2.HANDLEREQUEST(RUNTIMEPB.JAVA:9673)
   AT COM.GOOGLE.NET.RPC.IMPL.RPCUTIL.RUNRPCINAPPLICATION(RPCUTIL.JAVA:422)
   AT COM.GOOGLE.NET.RPC.IMPL.SERVER$RPCTASK.RUNINCONTEXT(SERVER.JAVA:573)
   AT 
 COM.GOOGLE.TRACING.TRACECONTEXT$TRACECONTEXTRUNNABLE$1.RUN(TRACECONTEXT.JAVA:448)
   AT COM.GOOGLE.TRACING.TRACECONTEXT.RUNINCONTEXT(TRACECONTEXT.JAVA:688)
   AT 
 COM.GOOGLE.TRACING.TRACECONTEXT$ABSTRACTTRACECONTEXTCALLBACK.RUNININHERITEDCONTEXTNOUNREF(TRACECONTEXT.JAVA:326)
   AT 
 COM.GOOGLE.TRACING.TRACECONTEXT$ABSTRACTTRACECONTEXTCALLBACK.RUNININHERITEDCONTEXT(TRACECONTEXT.JAVA:318)
   AT 
 COM.GOOGLE.TRACING.TRACECONTEXT$TRACECONTEXTRUNNABLE.RUN(TRACECONTEXT.JAVA:446)
   AT 
 JAVA.UTIL.CONCURRENT.THREADPOOLEXECUTOR.RUNWORKER(THREADPOOLEXECUTOR.JAVA:1110)
   AT 
 JAVA.UTIL.CONCURRENT.THREADPOOLEXECUTOR$WORKER.RUN(THREADPOOLEXECUTOR.JAVA:603)
   AT JAVA.LANG.THREAD.RUN(THREAD.JAVA:636)
 CAUSED BY: JAVAX.MAIL.MESSAGINGEXCEPTION: ILLEGAL ARGUMENTS 
 (JAVA.LANG.ILLEGALARGUMENTEXCEPTION: UNAUTHORIZED SENDER: UNAUTHORIZED SENDER)
   AT 
 COM.GOOGLE.APPENGINE.API.MAIL.STDIMPL.GMTRANSPORT.SENDMESSAGE(GMTRANSPORT.JAVA:255)
   AT JAVAX.MAIL.TRANSPORT.SEND(TRANSPORT.JAVA:95)
   ... 39 MORE
 CAUSED BY: JAVA.LANG.ILLEGALARGUMENTEXCEPTION: UNAUTHORIZED SENDER: 
 UNAUTHORIZED SENDER
   AT 
 COM.GOOGLE.APPENGINE.API.MAIL.MAILSERVICEIMPL.DOSEND(MAILSERVICEIMPL.JAVA:104)
   AT 
 COM.GOOGLE.APPENGINE.API.MAIL.MAILSERVICEIMPL.SEND(MAILSERVICEIMPL.JAVA:32)
   AT 
 COM.GOOGLE.APPENGINE.API.MAIL.STDIMPL.GMTRANSPORT.SENDMESSAGE(GMTRANSPORT.JAVA:247)
   ... 40 MORE

  --
 You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine-java/-/w250_e6JpfQJ.
 To post to this group, send email to
 google-appengine-java@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=en.




-- 
Bruno Fuster

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 

Re: [google-appengine] Re: Weekend project: keep your app warm

2011-07-12 Thread Max
Agree with your point on tragedy of the commons. The thing is this is not a 
new concept. It's already a common practice among many appengine developers. 
 Without my application, one can still write a dummy cron in 5 mins. Given 
that they (unfortunately including me at the moment) will do it anyway, my 
app is saving 5 min dev time and 1 cron job execution per minute for each 
single url. 

Of course, this is definitely a suboptimal solution. But it should be Google 
rather than us to do something on this. I don't think Google has to build 
some intelligence to detect this behavior, but at least they should give use 
some guideline in forum or GAE document. For example, multiple deployment of 
same app is explicitly documented 
herehttp://code.google.com/appengine/terms.html(point 
4.4), but I can't find any term applicable to my case. Instead I saw this 
same topic been discussed here for many times but no Googler ever give a 
negative comment. I will disable my app if I get guideline officially or 
un-officially.

From other side, I don't think it's fair for a site gain a better 
performance just because more users are using it. From my point of view, 
such regenerative feedback is even worse than your tragedy of the commons.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/xFonPhtvbLEJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Scalability of inequality filters for multiple fields via Hilbert curve

2011-07-12 Thread Max
Thanks Nick, 

So is there a plan to implement multi-dimensional index in GAE? I 
have checked road map and can't find it 
http://code.google.com/appengine/docs/roadmap.html

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/45FLhoC_hJIJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Java Remote API - getting 302 error

2011-07-12 Thread Muneer Malik
Exception in thread main java.io.IOException: can't get appId from remote
api; status code = 302
at
com.google.appengine.tools.remoteapi.RemoteApiInstaller.getAppIdFromServer(RemoteApiInstaller.java:217)
at
com.google.appengine.tools.remoteapi.RemoteApiInstaller.loginImpl(RemoteApiInstaller.java:199)
at
com.google.appengine.tools.remoteapi.RemoteApiInstaller.login(RemoteApiInstaller.java:165)
at
com.google.appengine.tools.remoteapi.RemoteApiInstaller.install(RemoteApiInstaller.java:86)
at RemoteExample.main(RemoteExample.java:29)

Any clues?

Best,
Muneer


-- 
Confidentiality Notice
---


THIS INFORMATION IS INTENDED ONLY FOR THE USE OF THE ADDRESSEE AND MAY
CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM
DISCLOSURE UNDER APPLICABLE LAW.  IF YOU ARE NOT THE INTENDED RECIPIENT, OR
THE EMPLOYEE OR AGENT RESPONSIBLE FOR DELIVERING THIS MESSAGE TO THE
INTENDED RECIPIENT, YOU ARE HEREBY NOTIFIED THAT ANY DISSEMINATION,
DISTRIBUTION OR COPYING OF THE COMMUNICATION IS STRICTLY PROHIBITED.  IF YOU
HAVE RECEIVED THIS COMMUNICATION IN ERROR, PLEASE NOTIFY IMMEDIATELY AT
tutti...@gmail.com OR BY TELEPHONE AT 817-458-1764.


THANK YOU.

-- 
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-appengine@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.



[google-appengine] index stuck in building state

2011-07-12 Thread Nick Bender
Hi,

The following index has been building since last week. There is
currently no data to index so this is very odd.

Please delete the index DataPoint2 in the web app hiqu-log.

Thanks,
-N

-- 
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-appengine@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.



[google-appengine] Re: Java Remote API - getting 302 error

2011-07-12 Thread Muneer Malik
Did anyone try this yet?

any ideas here?

Thanks

On Mon, Jul 11, 2011 at 10:51 AM, Muneer Malik tutti...@gmail.com wrote:


 Exception in thread main java.io.IOException: can't get appId from remote
 api; status code = 302
 at
 com.google.appengine.tools.remoteapi.RemoteApiInstaller.getAppIdFromServer(RemoteApiInstaller.java:217)
  at
 com.google.appengine.tools.remoteapi.RemoteApiInstaller.loginImpl(RemoteApiInstaller.java:199)
 at
 com.google.appengine.tools.remoteapi.RemoteApiInstaller.login(RemoteApiInstaller.java:165)
  at
 com.google.appengine.tools.remoteapi.RemoteApiInstaller.install(RemoteApiInstaller.java:86)
 at RemoteExample.main(RemoteExample.java:29)

 Any clues?

 Best,
 Muneer


 --
 Confidentiality Notice
 ---


 THIS INFORMATION IS INTENDED ONLY FOR THE USE OF THE ADDRESSEE AND MAY
 CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM
 DISCLOSURE UNDER APPLICABLE LAW.  IF YOU ARE NOT THE INTENDED RECIPIENT, OR
 THE EMPLOYEE OR AGENT RESPONSIBLE FOR DELIVERING THIS MESSAGE TO THE
 INTENDED RECIPIENT, YOU ARE HEREBY NOTIFIED THAT ANY DISSEMINATION,
 DISTRIBUTION OR COPYING OF THE COMMUNICATION IS STRICTLY PROHIBITED.  IF YOU
 HAVE RECEIVED THIS COMMUNICATION IN ERROR, PLEASE NOTIFY IMMEDIATELY AT
 tutti...@gmail.com OR BY TELEPHONE AT 817-458-1764.


 THANK YOU.




-- 
Confidentiality Notice
---


THIS INFORMATION IS INTENDED ONLY FOR THE USE OF THE ADDRESSEE AND MAY
CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM
DISCLOSURE UNDER APPLICABLE LAW.  IF YOU ARE NOT THE INTENDED RECIPIENT, OR
THE EMPLOYEE OR AGENT RESPONSIBLE FOR DELIVERING THIS MESSAGE TO THE
INTENDED RECIPIENT, YOU ARE HEREBY NOTIFIED THAT ANY DISSEMINATION,
DISTRIBUTION OR COPYING OF THE COMMUNICATION IS STRICTLY PROHIBITED.  IF YOU
HAVE RECEIVED THIS COMMUNICATION IN ERROR, PLEASE NOTIFY IMMEDIATELY AT
tutti...@gmail.com OR BY TELEPHONE AT 817-458-1764.


THANK YOU.

-- 
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-appengine@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.



[google-appengine] Where to post production issues? (2 months with no response)

2011-07-12 Thread Robby Walker
As far as I can tell, the correct place to post production issues is
the AppEngine code site - is that true?  I posted a very serious issue
over 2 months ago and have heard nothing?

http://code.google.com/p/googleappengine/issues/detail?id=4972

-- 
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-appengine@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.



[google-appengine] Django import errors

2011-07-12 Thread Tkm
Hello guys,

I'm having problems with django imports inside GAE. Though I am
google.appengine.dist.use_library inside my appengine_config
module, from time to time (I haven't being able to reproduce the error
enviroment so far) I get errors like 'Parent module 'django.template'
not loaded'. This also happens with django.forms, sometimes from
within django.forms itself as in [1]

Does anybody have suggestions about what may be causing this ?

[1] http://pastebin.com/kvTtmXhU

Cheers,

Tkm

-- 
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-appengine@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.



[google-appengine] My master/slave to high replication datastore migration experience

2011-07-12 Thread kuanyong
Hey guys,

I had a pretty good experience migrating a fairly complex python app from 
the master/slave datastore to the high replication datastore. I wrote a blog 
post to document a few things I learned along the way. I hope some of you 
will find it useful.

http://blog.shnap.com/migrating-to-the-google-app-engine-high-repli

Enjoy,
Kuan

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/cutzl4HHDO4J.
To post to this group, send email to google-appengine@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.



[google-appengine] com.google.cloud.sql.jdbc.internal.Exceptions.driverUrlNotInCorrectFormat ?

2011-07-12 Thread A G
I am perplexed by this error. According to GAEJ Will it play nice, an in 
memory database might work. So I tried H2 and blobdb, set up the driver as 
the following -

bean id=dataSource class=
org.springframework.jdbc.datasource.DriverManagerDataSource

  property name=driverClassName value=
org.vnetcon.blobdb.driver.jdbc.BlobDBDriver /

  property name=url value=
blobdb|http://localhost:/blobdb/ws|username=username|password=password
 /

  property name=username value=sa /

  property name=password value= /

/bean


And the partial error -

WARNING: Could not obtain connection to query metadata

java.sql.SQLException: URL is not in the correct format: 
blobdb|http://localhost:/blobdb/ws|username=username|password=password

at 
com.google.cloud.sql.jdbc.internal.Exceptions.driverUrlNotInCorrectFormat(
Exceptions.java:103)

at com.google.cloud.sql.jdbc.Driver.connect(Driver.java:47)

at com.google.cloud.sql.jdbc.Driver.connect(Driver.java:24)

at java.sql.DriverManager.getConnection(DriverManager.java:582)

at java.sql.DriverManager.getConnection(DriverManager.java:154)

at 
org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(
DriverManagerDataSource.java:173)


Is there anyway to turn this jdbc verification off? Is this the latest 
changes made in GAE/J SDK 1.5.1? Any reason for checking this?


Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/wNxaRtRgSigJ.
To post to this group, send email to google-appengine@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.



[google-appengine] com.google.cloud.sql.jdbc.internal.Exceptions.driverUrlNotInCorrectFormat

2011-07-12 Thread A G
I am not sure if the previosu posted was successful, so I am reposting -

In Spring's applicationContext.xml, I have -

**bean id=dataSource class=
org.springframework.jdbc.datasource.DriverManagerDataSource**
  **property name=driverClassName value=
org.vnetcon.blobdb.driver.jdbc.BlobDBDriver */*
  **property name=url value=
blobdb|http://localhost:/blobdb/ws|username=username|password=password
 */*
  **property name=username value=sa */*
  **property name=password value= */*
*/*bean**
*
*
*When I launched GAEJ web app, I got the following (truncated for the sake 
of simplicity) error -*

WARNING: Could not obtain connection to query metadata
*java.sql.SQLException*: URL is not in the correct format: 
blobdb|http://localhost:/blobdb/ws|username=username|password=password
at 
com.google.cloud.sql.jdbc.internal.Exceptions.driverUrlNotInCorrectFormat(*
Exceptions.java:103*)
at com.google.cloud.sql.jdbc.Driver.connect(*Driver.java:47*)
at com.google.cloud.sql.jdbc.Driver.connect(*Driver.java:24*)
at java.sql.DriverManager.getConnection(*DriverManager.java:582*)
at java.sql.DriverManager.getConnection(*DriverManager.java:154*)
at 
org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(
*DriverManagerDataSource.java:173*)

Any idea how to avoid this error?

Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/nC5z-95QbtkJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Cost of many operations in one transaction

2011-07-12 Thread Max
by my understanding, batch write on same entity group actually writes only 
once to datastore.

For your second case, if you do it via async queries, then API call is the 
same but you will be charged way less CPU time than do it sequentially. 

PS: datastore API call is unlimited, so the only thing need to concern is 
CPU hour.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/bNMcWSG19EsJ.
To post to this group, send email to google-appengine@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.



[google-appengine] custom app url

2011-07-12 Thread rb.90
I am trying to add a custom URL to my App Engine Application. I've
done this succesfully before with, but with this one I am seemingly
missing something. My app name is flyanmeldelser-cdn (flyanmeldelser-
cdn.appspot.com), which works just fine. I added a URL to the google
apps system (content.flyanmeldelser.com). But that URL gives me a 404
not found error. However, in my domain settings panel for
content.flyanmeldelser.com there is under settings a menu-item
flyanmeldelser-cdn (App Engine) and when I click that, it tells me
that it should be acessible via content.flyanmeldelser.com...What is
it I am missing?

Gr
RB

-- 
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-appengine@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.



[google-appengine] Re: GAE cold start time still too long

2011-07-12 Thread Max
Hi JH, 

Yes it's actually running on GAE

Do you have some link on *Google has stated they do not approve of this 
method several times*

Would like to take a look.

Thanks,

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/ff8tNjA9xdcJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Re: Weekend project: keep your app warm

2011-07-12 Thread Phil Young
Isn't the end of point 4.4 applicable here...

or otherwise access the Service in a manner intended to avoid incurring
fees

...as you are avoiding paying the $9/month for an always running instance?

Phil

On 12 July 2011 08:10, Max thebb...@gmail.com wrote:

 Agree with your point on tragedy of the commons. The thing is this is not a
 new concept. It's already a common practice among many appengine developers.
  Without my application, one can still write a dummy cron in 5 mins. Given
 that they (unfortunately including me at the moment) will do it anyway, my
 app is saving 5 min dev time and 1 cron job execution per minute for each
 single url.

 Of course, this is definitely a suboptimal solution. But it should be
 Google rather than us to do something on this. I don't think Google has to
 build some intelligence to detect this behavior, but at least they should
 give use some guideline in forum or GAE document. For example, multiple
 deployment of same app is explicitly documented 
 herehttp://code.google.com/appengine/terms.html(point
 4.4), but I can't find any term applicable to my case. Instead I saw this
 same topic been discussed here for many times but no Googler ever give a
 negative comment. I will disable my app if I get guideline officially or
 un-officially.

 From other side, I don't think it's fair for a site gain a better
 performance just because more users are using it. From my point of view,
 such regenerative feedback is even worse than your tragedy of the commons.
 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/xFonPhtvbLEJ.

 To post to this group, send email to google-appengine@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-appengine@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.



Re: [google-appengine] Re: Cost of many operations in one transaction

2011-07-12 Thread Timofey Koolin
See new pricing model
http://www.google.com/enterprise/appengine/appengine_pricing.html

2011/7/12 Max thebb...@gmail.com

 by my understanding, batch write on same entity group actually writes only
 once to datastore.

 For your second case, if you do it via async queries, then API call is the
 same but you will be charged way less CPU time than do it sequentially.

 PS: datastore API call is unlimited, so the only thing need to concern is
 CPU hour.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/bNMcWSG19EsJ.

 To post to this group, send email to google-appengine@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.




-- 
С уважением,
Кулин Тимофей.

Телефон: +7 (4852) 974793
ICQ: 114902104
email: timo...@koolin.ru
Blog: http://timofey.koolin.ru

-- 
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-appengine@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.



Re: [google-appengine] Re: Weekend project: keep your app warm

2011-07-12 Thread Max
my understanding is, you can't hack a service for free if it's supposed to 
be paid. By using my application, you still use / pay for your normal 
instance rather than always on instance. so this term is not applicable to 
this case.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/JaGmQlWQKj8J.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: ConcurrentModificationExceptions thrown by SUCCESSFUL transactions

2011-07-12 Thread Ice13ill
This is kinda awkward... I mean, don't we use these exceptions to
rollback and try again BECAUSE some operations are needed to be
executed correctly and ONCE ?. For example, to increment a simple
counter, to obtain unique successive values based on that counter.
I don't think redesigning the whole server-side architecture
(operations) is an option for bigger apps...


On Jul 10, 11:50 pm, Lyn Headley lahea...@gmail.com wrote:
 Hello,

 I recently discovered the following, and to me troubling, disclaimer
 on the transaction docs:

 Note: If your app receives an exception when submitting a transaction,
 it does not always mean that the transaction failed. You can receive
 DatastoreTimeoutException, ConcurrentModificationException, or
 DatastoreFailureException exceptions in cases where transactions have
 been committed and eventually will be applied successfully. Whenever
 possible, make your datastore transactions idempotent so that if you
 repeat a transaction, the end result will be the same.

 Oops, I have designed an app which is not always idempotent, but
 instead depends on the assumption that certain tasks use datastore
 transactions that are applied exactly once (and are retried until they
 throw no exceptions).  Do I need to go back to the drawing board and
 redesign my app for idempotence?  How common are concurrency/datastore
 exceptions thrown from eventually successful transactions?

-- 
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-appengine@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.



[google-appengine] Re: Where to post production issues? (2 months with no response)

2011-07-12 Thread Max
I believe you are doing the right way now :)

Googlers in the group will help you sort out. Just private ping them with 
your app id

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/aoRHj343M60J.
To post to this group, send email to google-appengine@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.



[google-appengine] 1.5.2 SDK Prerelease

2011-07-12 Thread Johan Euphrosine
Hi everyone,

Prerelease SDK for 1.5.2 is ready for testing, feel free to download
and give it a try for local verification:
http://code.google.com/p/googleappengine/downloads/list

See release notes below.

Happy testing!

App Engine Python SDK - Release Notes

Version 1.5.2
=
- You can now specify the minimum pending latency for instances and the maximum
  number of idle instances for your application in the Admin Console.
- The datastore now never requires an exploding index.

http://code.google.com/appengine/docs/python/datastore/queries.html#Big_Entities_and_Exploding_Indexes
- The SDK will now never suggest indexes with the same property repeated, as
  such indexes are likely to be exploding indexes.
- The SDK now supports multiple concurrent transactions.
- Datastore stats are now available on a per-namespace basis.
- The queue details page in the Admin Console now contains request header
  details, previous run information, and a task payload viewer.
- You can modify the lease on a task leased from a pull queue using the
  modify_task_lease() method.
- Pull Task maximum size has been increased to 1MB.
- You can now update the number of available backend instances without needing
  to first stop the backend using the backend configure appcfg.py directive.
- You can now set the References and In-Reply-To headers with the Mail API.
http://code.google.com/p/googleappengine/issues/detail?id=2802
- The SDK application environment variable will now be prefixed with dev~.
  The new preferred way of retrieving your app id is to use
  appidentity.get_application_id(). The --default partition flag can be used
  for applications whose code relied on a specific environment variable.
- In the Deferred API, defer() now accepts the _target parameter.
- Added a to_dict() function to db.py which converts a model to a dictionary.
- Added a get_original_metadata() method to the Images API to extract EXIF
  information from images.
http://code.google.com/p/googleappengine/issues/detail?id=4133
- Added an @transactional decorator to db.py for functions that should
  always be run in a transaction.
- Fixed an issue in the SDK where the Deferred API did not work when using
  the --backends flag.
http://code.google.com/p/googleappengine/issues/detail?id=5072

App Engine Java SDK - Release Notes

Version 1.5.2
=
- You can now specify the minimum pending latency for instances and the maximum
  number of idle instances for your application in the Admin Console.
- The datastore now never requires an exploding index.
- The SDK will now never suggest indexes with the same property repeated, as
  such indexes are likely to be exploding indexes.
- Datastore stats are now available on a per-namespace basis.
- The queue details page in the Admin Console now contains request header
  details, previous run information, and a task payload viewer.
- You can modify the lease on a task leased from a pull queue using the
  modifyTaskLease() method.
- Pull Task maximum size has been increased to 1MB.
- You can now update the number of available backend instances without needing
  to first stop the backend using the backend configure appcfg directive.
- You can now set the References and In-Reply-To headers with the Mail API.
http://code.google.com/p/googleappengine/issues/detail?id=2802
- The whitelist has been updated to include support for JSR 105.
- When the SDK throws a DatastoreNeedIndexException for a missing index
  definition, the exception can now be caught.
-- 
Johan Euphrosine (proppy)
Developer Programs Engineer
Google Developer Relations

-- 
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-appengine@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.



Re: [google-appengine] index stuck in building state

2011-07-12 Thread Johan Euphrosine
Done.

The index has been move into Error state.

On Mon, Jul 11, 2011 at 7:00 PM, Nick Bender n...@hiqu.biz wrote:
 Hi,

 The following index has been building since last week. There is
 currently no data to index so this is very odd.

 Please delete the index DataPoint2 in the web app hiqu-log.

 Thanks,
 -N

 --
 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-appengine@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.





-- 
Johan Euphrosine (proppy)
Developer Programs Engineer
Google Developer Relations

-- 
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-appengine@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.



Re: [google-appengine] Re: Weekend project: keep your app warm

2011-07-12 Thread Jeff Schnitzer
I can't believe I'm still writing about this...  at the very least
you're hacking around the $9/mo fee for an always-on instance.

The free tier of appengine works because all those zillions of
little test apps and experiments that people create don't actually
occupy resources beyond a small amount of disk space.  If you create a
magic button that keeps even the unused apps resident, the cluster
will fill up with terabytes of idle ram.  If you want to skeeve the
system to keep your own app resident, keep quiet about it and hope
there aren't enough other people doing this to force Google to close
the loophole.

BTW, I don't see why this calculus would change at all with the new
pricing scheme.  You could still have a lot of zombie apps eating up
their free 24 instance-hours.

Jeff

On Tue, Jul 12, 2011 at 1:20 AM, Max thebb...@gmail.com wrote:
 my understanding is, you can't hack a service for free if it's supposed to
 be paid. By using my application, you still use / pay for your normal
 instance rather than always on instance. so this term is not applicable to
 this case.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/JaGmQlWQKj8J.
 To post to this group, send email to google-appengine@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-appengine@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.



[google-appengine] Re: 1.5.2 SDK Prerelease

2011-07-12 Thread Max
Great job!

May I know more about *t**he datastore now never requires an exploding index
*?

Does that mean we don't need to build exploding index or simply can't build 
exploding index?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/KyL9f70-VtkJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Re: 1.5.2 SDK Prerelease

2011-07-12 Thread Pascal Voitot Dev
exactly the same question ;)

On Tue, Jul 12, 2011 at 11:21 AM, Max thebb...@gmail.com wrote:

 Great job!

 May I know more about *t**he datastore now never requires an exploding
 index*?

 Does that mean we don't need to build exploding index or simply can't build
 exploding index?

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/KyL9f70-VtkJ.

 To post to this group, send email to google-appengine@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-appengine@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.



Re: [google-appengine] Re: Weekend project: keep your app warm

2011-07-12 Thread Barry Hunter
On Tue, Jul 12, 2011 at 1:26 AM, jeffrey_t_b jbor...@gmail.com wrote:
 It must not be too bad from Google's perspective, as they include an
 example of a recache job in the GAE java cron documentation:

If you are recaching something every 2 minutes, there is a certain
expectation that you going to be needing it uptodate all the time. So
if your app gets traffic all day long, thats a good practice.

But if your app is not that popular its just bad design.

... in short its just an example of what you can do. Its not shown as
a 'best practice' in every possible situation. Just because you can,
doesn't mean you should.


 http://code.google.com/appengine/docs/java/config/cron.html

 That said, I'm not sure why anyone would necessarily want to do this,
 given the new pricing.

Not sure how the New Pricing comes into this.

Keeping an app 'warm' just means keeping an instance always loaded.
And you get 24 hours of instance time free. So all its doing is making
sure you using all your free quota, not costing you anything as such.




 On Jul 11, 3:08 pm, Jeff Schnitzer j...@infohazard.org wrote:
 Using cron to keep your app warm is not sanctioned either.  If Google wanted
 to give you a way to keep your app running, they'd offer it as a feature and
 charge for it.

 If these hacks become commonplace, GAE engineers will be retasked to
 fighting them and this will further delay new features that I care about
 like next-generation queries.  Furthermore, the collateral damage of closing
 these loopholes might impact all our apps (such as, hypothetically, a
 surcharge for crons more frequent than 30 mins).

 Furthermore, if you hope to build a real business on top of appengine,
 you're getting off on the wrong foot by alienating the folks at Google.
  Don't expect to get your questions answered in this forum, and don't be
 surprised if your app gets blocked in some way.

 Read this:  http://en.wikipedia.org/wiki/Tragedy_of_the_commons

Exactly. Google could be spending their time lowering the instance
startup time. Rather than dealing with the resource consumption of
lots of people keeping their app 'warm' just in case.

Keeping an app warm is a 'workaround'. And workarounds nearly always
distract the developers from fixing the actual issue.


 Jeff







 On Sun, Jul 10, 2011 at 10:44 PM, Max thebb...@gmail.com wrote:
  hi Jeff,

  AFAIK, lots of GAE developers are using cron job to *warm up*, including
  me. You can search in this group, many ppl are doing this.

  Also, if we want something more than a periodic ping, like those use cases
  you mentioned, then we probably don't want all these logic stay with in our
  business logic. This is the real benefit of this project and now is just 
  the
  first step. But since such monitoring tools will enable warm up feature 
  as
  a side effect, I will need to know this groups' idea before going further.

  Again, I don't intend to go against *always on instance* solution. I am
  just sharing my work so that other developers don't have to setup cron jobs
  every time.

  --
  You received this message because you are subscribed to the Google Groups
  Google App Engine group.
  To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/ht3qDc6Z984J.

  To post to this group, send email to google-appengine@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-appengine@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-appengine@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.



Re: [google-appengine] My master/slave to high replication datastore migration experience

2011-07-12 Thread Joshua Smith
You call that a pretty good experience?  I call that a nightmare.

Googlers would be wise to read that post and realize that many of the things he 
had to do are insanely complicated. About half of this stuff would not be 
necessary if google figured out a way to keep the same app ID when porting to 
HR. I imagine that the crux of the problem is that there is only one big table, 
and so there would be name collisions between the HR and M/S versions, right? 
So how about cleaving the world into two big tables? Is that possible? Or how 
about adding a hidden boolean (_is_hr) attribute to all models, and rigorously 
mixing that boolean into all gets, puts, queries, etc, deep in the 
infrastructure.

The other half of the complexity is coming from his need to start using entity 
groups.  I have about 15 apps running on GAE (comprising about 10K lines of 
python code) and I have never, ever, parented an entity. When I read the docs a 
hundred years ago, it became clear to me that parenting entities must be 
something that is required for some kind of application that I'm not writing. 
Frankly, I've never completely groked what an entity group maps to in my (30+ 
years of) programming experience. It's certainly not a parent/child 
relationship in the usual sense.

One thing that this post made clear to me is that I need to spend some 
significant time figuring out what the hell an entity group really is, and why 
they suddenly matter in HR.  Because right now, I don't get it. And Kuan 
certainly wouldn't have gone to all that trouble if he hadn't needed to.

-Joshua

p.s.: cool site, Kuan

On Jul 11, 2011, at 5:14 PM, kuanyong wrote:

 Hey guys,
 
 I had a pretty good experience migrating a fairly complex python app from the 
 master/slave datastore to the high replication datastore. I wrote a blog post 
 to document a few things I learned along the way. I hope some of you will 
 find it useful.
 
 http://blog.shnap.com/migrating-to-the-google-app-engine-high-repli
 
 Enjoy,
 Kuan
 
 -- 
 You received this message because you are subscribed to the Google Groups 
 Google App Engine group.
 To view this discussion on the web visit 
 https://groups.google.com/d/msg/google-appengine/-/cutzl4HHDO4J.
 To post to this group, send email to google-appengine@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-appengine@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.



[google-appengine] Timeout issues

2011-07-12 Thread John Wheeler
Hey,

Is there any good reason for my URL fetch requests to be timing out right 
now? Your app engine just cost me two customers. You think you can hurry up 
and get this squared away so I don't lose any more business? Thanks?!? And, 
I've seen enough of the DeadlineExceededExceptions, why don't you hurry up 
and fix that too. Ridiculous.

Geez,
John

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/dR934iJswg4J.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Scheduled maintenance read-only downtime

2011-07-12 Thread Ryan Goldstein
Will this downtime affect apps that don't use the datastore (i.e. only use 
the Google Spreadsheets API to read/write data)?

Thanks,
-Ryan

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/rSIdFiG7568J.
To post to this group, send email to google-appengine@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.



[google-appengine] Thursday 7/14 Downtime

2011-07-12 Thread Ryan Goldstein
Regarding 
https://groups.google.com/d/msg/google-appengine-downtime-notify/C7d8rXE-7sA/CUdvP1Z8vwAJ
...

1. I assume the subject stating July 15 is incorrect, and the real date is 
Thursday, July 14, as in the body.

2. Will this downtime affect apps that don't use the datastore (i.e. only 
use the Google Spreadsheets API to read/write data)?

Thanks,
-Ryan

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/Sdy_q1wx20cJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Re: SMSLib With Google App Engine

2011-07-12 Thread Rohit Bhat
Thanks for the replies.

I would want a free application preferably. That's the reason I chose 
SMSLib. Now although I can send and receive SMSes and perform other 
functions from my own laptop, the only hindrance is how to integrate it with 
GAE.

So from what I gather, the suggestion by Gubbi seems to be the best. I'll 
look at the channel API and XMPP.

Is there any other way?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/FnamLngwOL4J.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Timeout issues

2011-07-12 Thread Barry Hunter
Whooa! Detail overload.

On the other hand, with all that detail, I am sure the engineers have
diagnosed the exact issue, and are rushing to fix the issue right now.

/sarc

Its not that unsympathetic, but realistically if you want actual help,
rather than just having a moan, then you could help people to help
you. You do also realize you addressing a community, not Google
themselves with this group?


On Tue, Jul 12, 2011 at 3:05 PM, John Wheeler j...@highvolumeseller.com wrote:
 Hey,
 Is there any good reason for my URL fetch requests to be timing out right
 now? Your app engine just cost me two customers. You think you can hurry up
 and get this squared away so I don't lose any more business? Thanks?!? And,
 I've seen enough of the DeadlineExceededExceptions, why don't you hurry up
 and fix that too. Ridiculous.
 Geez,
 John

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/dR934iJswg4J.
 To post to this group, send email to google-appengine@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-appengine@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.



Re: [google-appengine] Re: SMSLib With Google App Engine

2011-07-12 Thread Rob Coops
You do realize that this means your site will only work as long as your
laptop is switched on and in reach of a cell tower so it can sent the SMS?

Anyway, I remember several years ago working with a SMS module connected to
a linux machine, what we did (as the http server ran on a different machine)
was simply send an email to a specific mail address, on the machine with the
SMS module a little script would poll the mailbox every few minutes and once
an email was found the body was read. The body contained something like
this:

Sender user ID
###
Telephone number
Telephone number
...
###
Message
...
###

Each telephone number on the list would all telephone numbers that would get
the message the Sender user ID was simply for internal tracking just in case
someone would send something that was less appreciated by the receiver(s)

Using the chanel or XMPP communication is an option but as you are going to
be using a laptop to do the sending you have to make the assumption that the
laptop will not be always on. By using the mailbox and the polling script
your mail server will cache the messages till your laptop is available
again and the polling script can be bothered to pick up the emails.
(of course the mail solution will introduce a bit more delay between the
user hitting the button and the SMS being send but with the sending system
being a laptop I have the feeling that this might not be such a big
drawback)

Personally I don't see why this stuff should be done by a laptop but its
your system and I am sure you have a good reason to use the setup as you are
planning to do.

Regards,

Rob

On Tue, Jul 12, 2011 at 4:37 PM, Rohit Bhat smashingro...@gmail.com wrote:

 Thanks for the replies.

 I would want a free application preferably. That's the reason I chose
 SMSLib. Now although I can send and receive SMSes and perform other
 functions from my own laptop, the only hindrance is how to integrate it with
 GAE.

 So from what I gather, the suggestion by Gubbi seems to be the best. I'll
 look at the channel API and XMPP.

 Is there any other way?

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/FnamLngwOL4J.

 To post to this group, send email to google-appengine@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-appengine@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.



[google-appengine] Re: Java Remote API - getting 302 error

2011-07-12 Thread Muneer Malik
any clues /  suggestion here ?

not sure if my query was successfully posted !

thanks

On Monday, July 11, 2011, Muneer Malik tutti...@gmail.com wrote:
 Did anyone try this yet?
 any ideas here?
 Thanks

 On Mon, Jul 11, 2011 at 10:51 AM, Muneer Malik tutti...@gmail.com wrote:
 Exception in thread main java.io.IOException: can't get appId from remote 
 api; status code = 302
   at 
 com.google.appengine.tools.remoteapi.RemoteApiInstaller.getAppIdFromServer(RemoteApiInstaller.java:217)
   at 
 com.google.appengine.tools.remoteapi.RemoteApiInstaller.loginImpl(RemoteApiInstaller.java:199)
at 
 com.google.appengine.tools.remoteapi.RemoteApiInstaller.login(RemoteApiInstaller.java:165)

   at 
 com.google.appengine.tools.remoteapi.RemoteApiInstaller.install(RemoteApiInstaller.java:86)
   at RemoteExample.main(RemoteExample.java:29)


 Any clues?
 Best,Muneer

 --
 Confidentiality Notice
 ---


 THIS INFORMATION IS INTENDED ONLY FOR THE USE OF THE ADDRESSEE AND MAY 
 CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM 
 DISCLOSURE UNDER APPLICABLE LAW.  IF YOU ARE NOT THE INTENDED RECIPIENT, OR 
 THE EMPLOYEE OR AGENT RESPONSIBLE FOR DELIVERING THIS MESSAGE TO THE INTENDED 
 RECIPIENT, YOU ARE HEREBY NOTIFIED THAT ANY DISSEMINATION, DISTRIBUTION OR 
 COPYING OF THE COMMUNICATION IS STRICTLY PROHIBITED.  IF YOU HAVE RECEIVED 
 THIS COMMUNICATION IN ERROR, PLEASE NOTIFY IMMEDIATELY AT tutti...@gmail.com 
 OR BY TELEPHONE AT 817-458-1764.


 THANK YOU.


 --
 Confidentiality Notice
 ---


 THIS INFORMATION IS INTENDED ONLY FOR THE USE OF THE ADDRESSEE AND MAY 
 CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM 
 DISCLOSURE UNDER APPLICABLE LAW.  IF YOU ARE NOT THE INTENDED RECIPIENT, OR 
 THE EMPLOYEE OR AGENT RESPONSIBLE FOR DELIVERING THIS MESSAGE TO THE INTENDED 
 RECIPIENT, YOU ARE HEREBY NOTIFIED THAT ANY DISSEMINATION, DISTRIBUTION OR 
 COPYING OF THE COMMUNICATION IS STRICTLY PROHIBITED.  IF YOU HAVE RECEIVED 
 THIS COMMUNICATION IN ERROR, PLEASE NOTIFY IMMEDIATELY AT tutti...@gmail.com 
 OR BY TELEPHONE AT 817-458-1764.


 THANK YOU.



-- 
Confidentiality Notice
---


THIS INFORMATION IS INTENDED ONLY FOR THE USE OF THE ADDRESSEE AND MAY
CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM
DISCLOSURE UNDER APPLICABLE LAW.  IF YOU ARE NOT THE INTENDED RECIPIENT, OR
THE EMPLOYEE OR AGENT RESPONSIBLE FOR DELIVERING THIS MESSAGE TO THE
INTENDED RECIPIENT, YOU ARE HEREBY NOTIFIED THAT ANY DISSEMINATION,
DISTRIBUTION OR COPYING OF THE COMMUNICATION IS STRICTLY PROHIBITED.  IF YOU
HAVE RECEIVED THIS COMMUNICATION IN ERROR, PLEASE NOTIFY IMMEDIATELY AT
tutti...@gmail.com OR BY TELEPHONE AT 817-458-1764.


THANK YOU.

-- 
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-appengine@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.



Re: [google-appengine] Re: SMSLib With Google App Engine

2011-07-12 Thread Rohit Bhat
I'm basically doing this for a project, but I can make use of a dedicated 
server if need be. The email method is indeed nice and pretty much solves 
the problem of the GSM module being on a different server. I'll just consult 
with my other team mates and decide the best option. 

Thanks for the replies everyone

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/XqjsSwab-pUJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Re: ConcurrentModificationExceptions thrown by SUCCESSFUL transactions

2011-07-12 Thread Joshua Smith
Yeah, like the example of a transaction on the page with that caveat:

http://code.google.com/appengine/docs/python/datastore/transactions.html

First it says, Make sure your transactions are idempotent and then it gives 
an example which isn't.

I'm not sure it's possible to do the task in that example correctly if you 
cannot tell whether a transaction succeeded or failed when it throws an 
exception. I just tried sketching out a solution that stored a transaction ID 
in the model, but that won't work because there could be multiple writers. The 
whole thing seems rather intractable, and the idea that you cannot tell whether 
a transaction succeeded or failed violates the principle of least surprise for 
anyone who's ever used a database!

Can some googlers weigh in, and explain how, for example, the example in the 
documentation could be implemented correctly?

-Joshua

On Jul 12, 2011, at 4:26 AM, Ice13ill wrote:

 This is kinda awkward... I mean, don't we use these exceptions to
 rollback and try again BECAUSE some operations are needed to be
 executed correctly and ONCE ?. For example, to increment a simple
 counter, to obtain unique successive values based on that counter.
 I don't think redesigning the whole server-side architecture
 (operations) is an option for bigger apps...
 
 
 On Jul 10, 11:50 pm, Lyn Headley lahea...@gmail.com wrote:
 Hello,
 
 I recently discovered the following, and to me troubling, disclaimer
 on the transaction docs:
 
 Note: If your app receives an exception when submitting a transaction,
 it does not always mean that the transaction failed. You can receive
 DatastoreTimeoutException, ConcurrentModificationException, or
 DatastoreFailureException exceptions in cases where transactions have
 been committed and eventually will be applied successfully. Whenever
 possible, make your datastore transactions idempotent so that if you
 repeat a transaction, the end result will be the same.
 
 Oops, I have designed an app which is not always idempotent, but
 instead depends on the assumption that certain tasks use datastore
 transactions that are applied exactly once (and are retried until they
 throw no exceptions).  Do I need to go back to the drawing board and
 redesign my app for idempotence?  How common are concurrency/datastore
 exceptions thrown from eventually successful transactions?
 
 -- 
 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-appengine@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-appengine@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.



Re: [google-appengine] Re: ConcurrentModificationExceptions thrown by SUCCESSFUL transactions

2011-07-12 Thread Joshua Smith
Or, later on that page, where it says:

Transactional tasks are useful because they allow you to combine non-datastore 
actions to a transaction that depend on the transaction succeeding (such as 
sending an email to confirm a purchase).

Does the caveat mean that in your example, the purchase could happen but the 
email never gets sent?

This smells like a serious bug that you have decided to document, rather than 
fix.

On Jul 12, 2011, at 11:56 AM, Joshua Smith wrote:

 Yeah, like the example of a transaction on the page with that caveat:
 
 http://code.google.com/appengine/docs/python/datastore/transactions.html
 
 First it says, Make sure your transactions are idempotent and then it gives 
 an example which isn't.
 
 I'm not sure it's possible to do the task in that example correctly if you 
 cannot tell whether a transaction succeeded or failed when it throws an 
 exception. I just tried sketching out a solution that stored a transaction ID 
 in the model, but that won't work because there could be multiple writers. 
 The whole thing seems rather intractable, and the idea that you cannot tell 
 whether a transaction succeeded or failed violates the principle of least 
 surprise for anyone who's ever used a database!
 
 Can some googlers weigh in, and explain how, for example, the example in the 
 documentation could be implemented correctly?
 
 -Joshua
 
 On Jul 12, 2011, at 4:26 AM, Ice13ill wrote:
 
 This is kinda awkward... I mean, don't we use these exceptions to
 rollback and try again BECAUSE some operations are needed to be
 executed correctly and ONCE ?. For example, to increment a simple
 counter, to obtain unique successive values based on that counter.
 I don't think redesigning the whole server-side architecture
 (operations) is an option for bigger apps...
 
 
 On Jul 10, 11:50 pm, Lyn Headley lahea...@gmail.com wrote:
 Hello,
 
 I recently discovered the following, and to me troubling, disclaimer
 on the transaction docs:
 
 Note: If your app receives an exception when submitting a transaction,
 it does not always mean that the transaction failed. You can receive
 DatastoreTimeoutException, ConcurrentModificationException, or
 DatastoreFailureException exceptions in cases where transactions have
 been committed and eventually will be applied successfully. Whenever
 possible, make your datastore transactions idempotent so that if you
 repeat a transaction, the end result will be the same.
 
 Oops, I have designed an app which is not always idempotent, but
 instead depends on the assumption that certain tasks use datastore
 transactions that are applied exactly once (and are retried until they
 throw no exceptions).  Do I need to go back to the drawing board and
 redesign my app for idempotence?  How common are concurrency/datastore
 exceptions thrown from eventually successful transactions?
 
 -- 
 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-appengine@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-appengine@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-appengine@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.



[google-appengine] Re: GAE Pricing Changes - Sucker Punching the Development Community

2011-07-12 Thread zdravko
Perhaps with a bit of an explanation you would like to address
something that is incorrect ;?)

On Jul 7, 11:32 am, Geoffrey Spear geoffsp...@gmail.com wrote:
 On Jul 7, 8:14 am, Drew Spencer slugmand...@gmail.com wrote:









  On Wednesday, 6 July 2011 16:45:23 UTC+1, zdravko wrote:

Because you can't just put me out of business... that's not how 
business
   works.

   GOOG can certainly put you out of existence by suddenly pricing their
   services out of your affordability range.

  But if they want to charge me extortionate rates, they have to do it to the
  whole appengine customer base.

You can't just steal a customer base that easily.

   Without you in business, your customer base will go to whoever is
   providing the same service.

  But I would just move my service to another host, keeping my customer base.

And no, I don't really see any similarity to Microsoft. Comparing 
apples
   with oranges.

   Nevertheless, both apples and oranges are our dependencies on their
   monopolies and self serving control.

  I think you're being unfair. Google has never tried to exercise its
  near-monopoly on the market like Microsoft did and still does. Google is
  where it is because it's products are the best. It destroyed hotmail and
  yahoo mail with gmail by just making a better alternative and you can still
  get to hotmail through google search, can't you? Why would you though - it's
  crap.

 Don't feed the trolls.

-- 
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-appengine@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.



[google-appengine] Re: 1.5.2 SDK Prerelease

2011-07-12 Thread sebastián serrano
Hi, 
  Thanks for the prerelease! Is nice to start playing with the new features 
for the new pricing model.
  Could you clarify about the exploding indexes change? is not clear to me 
either.

Cheers, Sebastian
www.devsar.com

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/Z3WZ9KzcBSIJ.
To post to this group, send email to google-appengine@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.



[google-appengine] GAE is missing requests

2011-07-12 Thread Nikolay Sohryakov
Hi,

Sometimes GAE is missing my requests and instead of the requested page i get 
a clean page in my browser! Can you fix it please? I've tested it in 
different browsers on different computers.

Thank you.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/BumLr0219OwJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Is taskID unique?

2011-07-12 Thread Nikolay Sohryakov
Something about that?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/wWCeJR4zvGIJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Timeout issues

2011-07-12 Thread vlad
Unless I am missing something URLfetch is used for accessing *other* 
services from GAE. You might want to look why those other services are slow.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/gZ7fNUnyzB0J.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: custom app url

2011-07-12 Thread Zach
I'm experiencing custom domain errors, too.

I have two previous applications with custom domains, but I currently
get a server error whenever I try to add a new custom domain to a new
application. Would appreciate any suggestions on how to go forward?

Zach


On Jul 11, 9:56 am, rb.90
reinder.brou...@content.flyanmeldelser.com wrote:
 I am trying to add a custom URL to my App Engine Application. I've
 done this succesfully before with, but with this one I am seemingly
 missing something. My app name is flyanmeldelser-cdn (flyanmeldelser-
 cdn.appspot.com), which works just fine. I added a URL to the google
 apps system (content.flyanmeldelser.com). But that URL gives me a 404
 not found error. However, in my domain settings panel for
 content.flyanmeldelser.com there is under settings a menu-item
 flyanmeldelser-cdn (App Engine) and when I click that, it tells me
 that it should be acessible via content.flyanmeldelser.com...What is
 it I am missing?

 Gr
 RB

-- 
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-appengine@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.



[google-appengine] Re: 1.5.2 SDK Prerelease

2011-07-12 Thread pdknsk
 The SDK now supports multiple concurrent transactions.

What does this mean exactly?

-- 
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-appengine@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.



Re: [appengine-java] Re: [google-appengine] Re: 1.5.2 SDK Prerelease

2011-07-12 Thread Alfred Fuller
Hi,

It means that there are alternatives to using exploding indexes (i.e. they
are no longer required to execute a given query). You can still have them
(there are cases where they are useful, namely to optimize query speed over
write cost) and the SDK will still suggest them in many cases (as it is hard
to detect them by looking at the query). However, the SDK will no long
suggest indexes with the same property repeated multiple times (as these are
obviously an exploding index).

One example where this is very important is
SearchableModelhttp://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/search/__init__.py,
which previously was crippled by exploding indexes if you tried to sort
results (and now works as expected).

We are working on an article that goes through how to decided when to remove
or keep them, but for now the Google IO talk from 2010, Next Gen
Querieshttp://www.google.com/events/io/2010/sessions/next-gen-queries-appengine.html
(The
Zigzag Merge Join += Sort part), is a good resource if you want a really
deep dive on how this works.

 - Alfred

On Tue, Jul 12, 2011 at 2:24 AM, Pascal Voitot Dev 
pascal.voitot@gmail.com wrote:

 exactly the same question ;)

 On Tue, Jul 12, 2011 at 11:21 AM, Max thebb...@gmail.com wrote:

 Great job!

 May I know more about *t**he datastore now never requires an exploding
 index*?

 Does that mean we don't need to build exploding index or simply can't
 build exploding index?

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/KyL9f70-VtkJ.

 To post to this group, send email to google-appengine@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 for Java group.
 To post to this group, send email to
 google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?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-appengine@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.



Re: [google-appengine] Re: 1.5.2 SDK Prerelease

2011-07-12 Thread Alfred Fuller
The Datastore itself has always supported multiple concurrent transactions.
However the dev_appserver in the python SDK previously used a global lock
and would deadlock if a single thread tried to start more than a single
transaction. Now you can have multiple concurrent transactions running at
the same time. This is good for the Go runtime (which uses the python
dev_appserver), the Datastore
Plushttp://code.google.com/p/appengine-ndb-experiment/ library,
anyone else who wants to use concurrent transactions on the dev_appserver.

On Tue, Jul 12, 2011 at 3:19 PM, pdknsk pdk...@googlemail.com wrote:

  The SDK now supports multiple concurrent transactions.

 What does this mean exactly?

 --
 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-appengine@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-appengine@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.



Re: [google-appengine] Re: SMSLib With Google App Engine

2011-07-12 Thread Nickolas Daskalou
You could use a Pull Queue instead of an email sending/polling system:

http://code.google.com/appengine/docs/python/taskqueue/overview-pull.html

Nick


On 13 July 2011 01:13, Rohit Bhat smashingro...@gmail.com wrote:

 I'm basically doing this for a project, but I can make use of a dedicated
 server if need be. The email method is indeed nice and pretty much solves
 the problem of the GSM module being on a different server. I'll just consult
 with my other team mates and decide the best option.

 Thanks for the replies everyone

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/XqjsSwab-pUJ.

 To post to this group, send email to google-appengine@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-appengine@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.



Re: [google-appengine] Timeout issues

2011-07-12 Thread John Wheeler
Vlad,

I hear where you're coming from, but it turned out to be App Engine's 
fault. 

Google Engineer's you've apparently had problems making outbound HTTP calls 
to PayPal API endpoints for some time. There's lots of blog and news posts 
about it going back to 2008. I am using Java URLFetch and I experienced the 
timeouts 90% of the time making PayPal completely unusable from my app on 
app engine. The way I fixed it was by reverse proxying through NGinx on an 
Amazon EC2 instance. Works 100% of the time now.

If this is PayPal's fault, I'm sorry, but I find that hard to believe 
because of the reports going back. I wish this issue was fixed by now.

John

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/KszotIlfOFEJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Help! App doesn't update correctly

2011-07-12 Thread de Witte
Hello,

If I access my app via its domain url (www.domain.com) , it shows an old 
version of my app. 

Accessing via the appspot.com url, works fine. Never had this problem 
before, is it related to the recent transition of Google Apps?

Gr, Wendel

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/DAOnbH4V1QMJ.
To post to this group, send email to google-appengine@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.



[google-appengine] SAML/SSO login not working

2011-07-12 Thread milosh zorica
hello


i'm developing a secure log in solution based on GAIL

after i log in with my credentials, it says it couldn't load a page.
before it worked fine. yeah, i did all the set up changes in dashboard


thanks
m.




-- 
Milosh Zorica

http://www.linkedin.com/in/miloshzorica

phone: +44 20 8144 5294
e-mail: miloshzor...@gmail.com
skype: milosh.zorica

-- 
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-appengine@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.



Re: [google-appengine] Thursday 7/14 Downtime

2011-07-12 Thread Nick Johnson (Google)
Hi Ryan,

On Wed, Jul 13, 2011 at 12:33 AM, Ryan Goldstein r...@moberg.com wrote:

 Regarding
 https://groups.google.com/d/msg/google-appengine-downtime-notify/C7d8rXE-7sA/CUdvP1Z8vwAJ
 ...

 1. I assume the subject stating July 15 is incorrect, and the real date is
 Thursday, July 14, as in the body.


That's correct.



 2. Will this downtime affect apps that don't use the datastore (i.e. only
 use the Google Spreadsheets API to read/write data)?


Only insofar as it will also result in Memcache being cleared. Other than
that, your app will continue to serve as normal.

-Nick Johnson



 Thanks,
 -Ryan

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/Sdy_q1wx20cJ.
 To post to this group, send email to google-appengine@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.




-- 
Nick Johnson, Developer Programs Engineer, App Engine

-- 
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-appengine@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.



[google-appengine] About expando properties

2011-07-12 Thread Pol
Hi,

Regarding expando properties:

1) Can you prevent them from being indexed (I couldn't find anything
about this, but I'd like official confirmation)?

2) What's the practical number of expando properties you shouldn't go
above? If they are all indexed, then surely that can be quite
expensive, so you should stay below 100 or something?

3) If you have to be above the limit defined at #2, what's the best
alternative? Serializing into a blob property, possibly, but what
would be the most optimal serialization format?

Thanks!

-- 
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-appengine@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.