Yes, I do understand.

There is ProtocolHandler object in ClientImpl and it is ThreadLocal:

https://github.com/RTykulsker/JavaBeanstalkClient/blob/master/src/main/java/com/surftools/BeanstalkClientImpl/ClientImpl.java#L40

Which means a new ProtocolHandler gets initialized watching "default"
tube only, when you call ClientImpl methods from another thread.

On 4 ноя, 06:29, Dan Frankowski <[email protected]> wrote:
> Does anyone understand why I am seeing the following behavior in
> JavaBeanstalkClient?
>
> Consumer watches a particular tube (mytube) in its constructor, then in
> run() (new thread) all of a sudden it is watching the default tube again! If
> I watch mytube in run() it sticks. Output and code below.
>
> Ubuntu 10.4
> beanstalk version 1.4.3-1
> Java BeanstalkClient 1.2.2
>
> All latest I can get.
>
> Dan
>
> *Output:
> *
> 20101103 22:17:16 INFO: watching [mytube]
> 20101103 22:17:16 INFO: watching [mytube]
> 20101103 22:17:16 INFO: watching [default]
>
> *Code:
> *
>
> import java.util.logging.Logger;
>
> import com.surftools.BeanstalkClient.Client;
> import com.surftools.BeanstalkClientImpl.ClientImpl;
>
> public class Foo5 {
>     private static Logger logger = Logger.getLogger(Foo5.class.getName());
>     private static final String TUBE_NAME = "mytube";
>
>     private static class Consumer implements Runnable {
>         private Client client;
>
>         public Consumer() {
>             client = new ClientImpl("localhost", 11300);
>             watch();
>         }
>
>         private void watch() {
>             client.watch(TUBE_NAME);  // for reserve()
>             client.ignore("default"); // Don't get tasks from "default"
> queue
>             logWatching();  // mytube
>         }
>
>         public void logWatching() {
>             logger.info("watching " + client.listTubesWatched());
>
>         }
>
>         @Override
>         public void run() {
>           // watch();     // Uncomment this to watch mytube
>           logWatching();  // default?!  why?
>         }
>     }
>
>     public static void main(String[] args) throws Exception {
>         Consumer consumer = new Consumer();
>         consumer.logWatching();  // mytube
>         new Thread(consumer).start();
>     }
>
> }
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"beanstalk-talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/beanstalk-talk?hl=en.

Reply via email to