FutureTask.cancel

Hi!
I use FutureTask class and found problem with cancel method. I call task.cancel(false) and have result true - task is canceled before performing. But task is performing. Later task.isCanceled also return true.
I have example code that show this bug:
public class FutureTaskTestCase  {
    public void _testIsCanceledProperty() {
        ThreadPoolExecutor pool = new ThreadPoolExecutor(10, 10, Long.MAX_VALUE, TimeUnit.DAYS, new LinkedBlockingQueue<Runnable>());
        final Map<Integer, Boolean> doneTasks = new HashMap<Integer, Boolean>();
        final Map<Integer, Boolean> canceledTasks = new HashMap<Integer, Boolean>();
        final Object syncRoot = new Object();
        List<FutureTask> tasks = new LinkedList<FutureTask>();
        int totalTasks = 10000;
        //test
        for (int i = 0; i < totalTasks; i++) {
            final int id = i;
            FutureTask task = new FutureTask<Void>(new Callable<Void>() {
                public Void call() throws Exception {
                    Thread.sleep(5);
                    synchronized (syncRoot) {
                        doneTasks.put(id, true);
                    return null;
            pool.submit(task);
            tasks.add(task);
        //cancle
        for (int id = 0; id < totalTasks; id++) {
            FutureTask task = tasks.get(id);
            boolean canceled = task.cancel(false);
            synchronized (syncRoot) {
                canceledTasks.put(id, canceled);
        //wait all task
        for (FutureTask task : tasks) {
            try {
                task.get();
            catch (ExecutionException error) {
                fail(error.getMessage());
            catch (InterruptedException error) {
                fail(error.getMessage());
            catch (CancellationException error) {
                //it's ok
        for (int i = 0; i < totalTasks; i++) {
            FutureTask task = tasks.get(i);
            assertEquals("cancel return != isCanceled()", (boolean) canceledTasks.get(i), task.isCancelled());
            if (doneTasks.get(i) && task.isCancelled()) fail("Performed task#" + i + " mark as canceled");
}May be i mistakes somewhere ?

Yes, i did read the documentation.
But what we have:
     * Attempts to cancel execution of this task.  This attempt will
     * fail if the task has already completed, has already been cancelled,
     * or could not be cancelled for some other reason. If successful,
     * and this task has not started when <tt>cancel</tt> is called,
     * this task should never run.  If the task has already started,
     * then the <tt>mayInterruptIfRunning</tt> parameter determines
     * whether the thread executing this task should be interrupted in
     * an attempt to stop the task.
     * <p>After this method returns, subsequent calls to {@link #isDone} will
     * always return <tt>true</tt>.  Subsequent calls to {@link #isCancelled}
     * will always return <tt>true</tt> if this method returned <tt>true</tt>.
     * @param mayInterruptIfRunning <tt>true</tt> if the thread executing this
     * task should be interrupted; otherwise, in-progress tasks are allowed
     * to complete
     * @return <tt>false</tt> if the task could not be cancelled,
     * typically because it has already completed normally;
     * <tt>true</tt> otherwise
    boolean cancel(boolean mayInterruptIfRunning);
If successful, and this task has not started when <tt>cancel</tt> is called, this task should never run.
The "task.cancel(false)" function returns "true". And i think that "this task should never run."
�ut the test fails on the string:
if (doneTasks.get(i) && task.isCancelled()) fail("Performed task#" + i + " mark as canceled");that showes the task to be really performed.

Similar Messages

  • ThreadPool and FutureTask.cancel

    Hi,
    I have a fixed size thread pool executing a queue of tasks. The queue is larger than the number of threads in the pool. I try to cancel several running tasks using FutureTask.cancel(). At this point, I would expect to see the thread pool start executing the queued tasks in all of the thread pools threads. What I actually see is that the thread pool cancels all the tasks, creates a single new thread, and then sequentially executes all queued tasks in that one thread. It never recreates threads up to maxPoolSize for the queued tasks. Is this the correct behavior? Here is some code that reproduces the behavior I have described:
    import java.util.Map;
    import java.util.HashMap;
    import java.util.concurrent.*;
    public class ThreadPoolTest {
        public static void main(String... argv) throws Exception {
            ThreadPoolTest t = new ThreadPoolTest();
            t.runTest();
        public ThreadPoolTest() throws Exception {
        Map<Integer, Future<?>> futures = new HashMap<Integer, Future<?>>();
        public void runTest() throws Exception {
            ExecutorService executorService = Executors.newFixedThreadPool(10);
            synchronized(futures) {
                for(int i=0; i<30; i++) {
                    futures.put(i, executorService.submit(new MyThread(i)));
            Thread.sleep(1*1000);
            System.out.println("Cancelling threads");
            for(int i=0; i<10; i++) {
                Future<?> f = futures.get(i);
            if(f!=null)
                f.cancel(true);
            while(((ThreadPoolExecutor)executorService).getActiveCount() > 0) {
                System.out.println("Active count = " + ((ThreadPoolExecutor)executorService).getActiveCount());
                Thread.sleep(1000);
            executorService.shutdown();
        private class MyThread implements Runnable {
            private int threadnum = -1;
            public MyThread(int num) {
                this.threadnum = num;
            public void run() {
                System.out.println("Hello " + threadnum + " " + Thread.currentThread());
                try {
                    long i = 0;
                    while(i<1000000000) i++;
                } finally {
                    System.out.println("Removing " + threadnum);
                    synchronized(futures) {
                        futures.remove(threadnum);
                System.out.println("Goodbye " + threadnum);
    }Thanks,
    Anthony

    I replaced the tasks' loop with a sleep(20000); and lo and behold, the threads are interrupted (as expected) and, interestingly, the ActiveCount stays at 10.
    Apparently, threads/slots are not eliminated if the task catches the InterrupedException and exits. If the InterruptedException is not caught by the task/runnable, is it then propagated to the executor which then decides the thread must be destroyed because it suffered an uncaught exception?
    So if your task catches the InterruptedException from cancel, things work as expected. However, there is no guarantee that the task will be able to catch the exception. To mitigate this factor, you may issue a sleep(0, 1), i.e. wait for 1 nanosecond, just before your runnable exits to catch any pending InterruptedExceptions. There still is a small window where the cancel may result in a lost thread, but the window is much smaller.
    Your run method looks like this now:
            public void run() {
                System.out.println("Hello " + threadnum + " " + Thread.currentThread());
                try {
                    long i = 0;
                    while(i<1000000000) i++;
                    Thread.sleep(0, 1);
                } catch (InterruptedException ie) {
                    System.out.println("Interrupted " + threadnum);
                } finally {
                    System.out.println("Removing " + threadnum);
                    synchronized(futures) {
                        futures.remove(threadnum);
                System.out.println("Goodbye " + threadnum);
            }

  • ScheduleAtFixedRate - not catching interupt from FutureTask.cancel()

    I'm not quite understanding how to correctly cancel a thread that is spawned with scheduleAtFixedRate.
    main() schedules the MyTask runnable to run every second (which works fine). The runnable (MyTask) prints that its running every second. main() waits 5 seconds then calls cancel (implemented by FutureTask). This is where I get confused. cancel() (if called with a true flag) is supposed to interrupt the thread, but I never get a print in my catch for an InterruptException, and I never fall into my Thread.interupted() condition.
    So I have 3 questions:
    1. When I run this code from eclipse, the runnable does stop running (I stop getting the prints). So it does seem to be getting canceled. However, I don't understand why I'm not catching the thread interrupt.
    2. I'm forced to use the application terminate button in Eclipse to stop execution (not sure why it doesn't terminate normally).
    3. Whats the advantage of scheduleAtFixedRate over just spawning the thread with a while(shutdownFlag==true) loop (with a sleep at the end of the loop) and using a volatile atomic boolean to set the flag to false and have the thread terminate?
    Thanks for any help!
         public static void main(String[] args) {
              final int THREAD_POOL_SIZE = 1;
              final int PERIODIC_TIME = 1;
              final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(THREAD_POOL_SIZE);
              MyTaskSingleton myTask = MyTaskSingleton.getInstance();          
              try {
                      final ScheduledFuture<?> myTaskHandle =
                                  scheduler.scheduleAtFixedRate(myTask, 0, PERIODIC_TIME, TimeUnit.SECONDS);
                   Thread.sleep(5000);
                   System.out.println("TaskExecutor: MyTask cancel: " + myTaskHandle.cancel(true));
                   Thread.sleep(1000);
                   System.out.println("TaskExecutor: MyTask is done: " + myTaskHandle.isDone());
              } catch (InterruptedException e) {
                   System.out.println("TaskExecutor: caught exception");
                   e.printStackTrace();
         }Here is the run method of my runnable class.
    public void run() {
              try {
                   if (Thread.interrupted()){
                        System.out.println("MyTask: detected thread interrupt");                    
                        throw new InterruptedException();
                   System.out.println("MyTask: running...");
              catch(InterruptedException e){
                   System.out.println("MyTask: caught Interrupt Exception");
                   e.printStackTrace();
         }

    1. the only way your runnable will see an interrupted exception, is if it happens to be running when the cancel method is called. however, seeing as your run method is so trivial, the chances of the cancellation happening at the exact right time are very low. add a call to Thread.sleep() in your run method and you have a way better chance of seeing the interruption in the run method.
    2. you need to shutdown the executor at the end of the main method. the thread it is using is keeping the application from exiting.
    3. because you don't have to write all the code your self. not to mention that you can use 1 thread for multiple scheduled tasks (if you need more than 1).

  • What does Future.cancel(true) do?

    Hi, I have some (a dozen) Callable object which are submitted to the ExecutorService ( talking about jdk5.0 concurrent package), and I want that the threads executing those Callable task last for not so much time: invoking cancel(true) on a Future object returned, will cause the Callable task to end immediatly (or quite immediatly) ?? Or does it depend on what the Callable do inside its call() method?
    I asked that question because I would like to stop tasks if they don't end within a certain amount of time, and up to now I didn't find a solution for my problem since what the Callable object do inside their call() method is launching a 3rd-party" algorithm with some parameters.
    thanks
    ciao
    alessio

    I've not used the concurrent package in 1.5, but I've used util.concurrent a fair bit in the past.... However, looking at the 1.5 javadocs, I interpret the description for FutureTask#cancel(boolean) as meaning if you call it with "true", and the FutureTasks Callable is currently being executed, the Thread executing it will be interrupted.
    Now, whether or not this actually causes your task to actually finish is another story: It depends on what the task does.
    If the task is doing something which will stop when interrupted (e.g, waiting on a monitor, doing a NIO select, whatever), then (unless the task explicitly catches InterruptedExceptions and continues anyway...) your task should stop.
    However, if its doing something which isn't affected by interrupts (e.g, good 'ole blocking IO) - then you are out of luck.
    This is very similar to a question which comes up quite a bit on these forums - "how do I stop a thread performing some task after a certain amount of time". Have a search around the forums - there are probably some much better answers than mine around.
    Dave

  • Use of FutureTask

    I have a class which implements Runnable and has a separate method for returning a result (few different methods because you can get various results) .. there is also some stuff that has to be done when cancelling/interrupting the running of this.
    Now, I've been asked to use FutureTask
    This is where I am stuck. I've read the tutorials, searched Google, but I can't find information on how to use Runnable classes with FutureTask - especially where I need to do more than the standard FutureTask Cancel method and where in different circumstances have to return different result types.
    I was also confused about the constructor
    FutureTask(Runnable runnable, V result)When I read the Java 1.5 code all this does is set the value of result to what is passed in the constructor... but how can that be when a result can't be set until you actually call runnable.run() method?
    My first thought was to create a class which extends FutureTask and use the FutureTask(Runnable runnable, V result) constructor but then I can't figure out the rest.

    Calling cancel on a FutureTask will attempt to prevent it from starting, and if it has started, it will attempt to interrupt it if you are using cancel(true).
    The Task being run won't end magically. When a Thread is interrupted, is simply sets a flag which should be periodically checked by the task using if(Thread.interrupted()).
    Your FutureTask won't be cancellable unless you make it so. And by making it cancellable, you'll already be aware of when to perform your cleanup. There's no need to subclass FutureTask.

  • JFileChooser with Security Manger

    Hello,
    I developed a swing application using JFileChooser. I'll recommend using the security manager and deliver a simple policy. The application works properly. But it throws an exception in XP:
    Exception in thread "Basic L&F File Loading Thread" java.security.AccessControlE
    xception: access denied (java.lang.RuntimePermission modifyThread)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkAccess(Unknown Source)
    at java.lang.Thread.checkAccess(Unknown Source)
    at java.lang.Thread.interrupt(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerCancel(Unknown Source)
    at java.util.concurrent.FutureTask.cancel(Unknown Source)
    at sun.awt.shell.Win32ShellFolderManager2$ComInvoker.invoke(Unknown Sour
    ce)
    at javax.swing.plaf.basic.BasicDirectoryModel$LoadFilesThread.run0(Unkno
    wn Source)
    at javax.swing.plaf.basic.BasicDirectoryModel$LoadFilesThread.run(Unknow
    n Source)
    It seems as if the JFileChooser does not really need this permission. So I will recommend to ignore it. Hackers would probably take it as an invitation.
    Is this a bug?
    In a small test project I can see that setting a file filter causes this problem.
    I need a explanation for the users. Why does JFileChooser expect this permission?

    Last week I saw here a bug description I can't find again. It was a similar problem and it was a bug.Oh well that's pretty definitive then.
    I will not do what a stack trace (or malware?) is telling meThat's a pretty strong statement. It rules out debugging your application, for a start!
    and I will not recommend a customer to do it.Another pretty strong statement. You don't really have a choice about that, if it's required to make the application work.
    How dangerous is modifyThread?That's easily answered from the Javadoc:
    'Modification of threads, e.g., via calls to Thread interrupt, stop, suspend, resume, setDaemon, setPriority, setName and setUncaughtExceptionHandler methods. This allows an attacker to modify the behaviour of any thread in the system.'
    Of course it also allows the system and the application to modify the behaviour of any thread in the system. Not granting that permission seems to disable cancelling timer tasks. That seems like a rather too important thing to disable to me. But it's your application.
    users will probably find out that it is not really necessary.If that's true. You haven't actually established that.
    But JFileChooser is probably able to survive without this permission.Again, you're guessing.
    It's clear from the stack trace that the JFileChooser is trying to cancel a task that it has running in a separate thread. If it can't do that, the task will keep running. So without the permission you have a resource leak, a thread leak, and you've lost the ability to cancel timer tasks.

  • JDBC callableStatement stored procedure call cancellation?

    up vote0down votefavorite
    I have a very complex oracle stored procedure that searches and retrieves some data. The procedure returns an output parameter - an oracle cursor. I execute the procedure by JDBC:
    CallableStatement stmt = conn.prepareCall("{call myprocedure(?,?,?,?}");
    The problem is, the queries can sometimes take quite long (few minutes) and i would like user to be able to cancel the query anytime by clicking button. I have reference to stmt object, but unfortunatelly calling stmt.cancel() (from other thread) has NO EFFECT.
    On the other hand when i change the CallableStatement sql to some query like:
    CallableStatement stmt = conn.prepareCall("select * from all_objects");
    i get "java.sql.SQLTimeoutException: ORA-01013: user requested cancel of current operation" after calling stmt.cancel() - so thats the right reaction.
    Does that mean than i cannot cancel stored procedure call via jdbc, but only simple select statements? Does anyone else had and resolved similar problem?
    I guess i could cancel the query by oracle kill session, but i use connection pooling (jboss) and i have plenty of sessions for the same user existing.
    Database Product Version is Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production JDBC Driver Version is 11.2.0.4.0
    any help will be appreciated.

    This property didnt help, still no reaction after statement.cancel().
    I could not cancel the statment from the db size , so i decided to spawn new java thread and run the statement in that thread, and when user clicks cancel button i just cancel the thread, some snipper of code below:
                   AtomicBoolean userCanceled - this must be AtomicBoolean or  volatile variable, so other threads would see the change of variable after clicking button
                   try{
                    MyCallableQuery callable = new MyCallableQuery(rs,stmt,this,rsh,outParameter);
                    FutureTask<T> queryTask = new FutureTask<T>(callable);
                    ExecutorService executor = Executors.newFixedThreadPool(1);
                    executor.execute(queryTask);                 
                    while  (!queryTask.isDone()){         //stil processing statement            
                     Thread.sleep(100);
                          if (userCanceled)){               //user decided to cancel
                           futureTask1.cancel(true);
                           executor.shutdown();
                           throw new SQLException("User decided to cancel procedure call");
                     result = futureTask1.get(); 
                     //here the code after the resultset has been processed without cancelation
                   catch (SQLException e}{
                   //here the code when user decided to cancel  like clearing the datatable
    and my callable class is like:
    public class MyCallable<T> extends ProcRunner implements Callable<T> {
        private ResultSet rs;
        private CallableStatement stmt;
        private ProcRunner procRunner;
        private ResultSetHandler<T> rsh;
        private Integer outParameter;
        public MyCallable(ResultSet rs,CallableStatement stmt,ProcRunner procRunner,ResultSetHandler<T> rsh,Integer outParameter){
            this.rs = rs;
            this.stmt = stmt;
            this.procRunner = procRunner;
            this.rsh = rsh;
            this.outParameter = outParameter;
        @Override
        public T call() throws Exception {
           T result = null;     
          stmt.executeUpdate();
           rs = (ResultSet) stmt.getObject(outParameter);
           rs = this.wrap(rs);
           result = rsh.handle(rs);  
        return result;

  • Re: Cancelling a Task

    Hi Daniel,
    Ajith Kallambella said:
    Now to answer your question, if in exception handler, if you handle
    CancelException and do ErrorMgr.Clear(), it will only clear the error
    stack without printing the error message. But the task still remains
    cancelled because task.IsCancelled will still be TRUE. This should cause
    Forte to raise another CancelException again. Forte should keep raising
    the CancelException until the task is actually cancelled and the
    TaskDesc context is done with.
    Some one please correct me if I am wrong.
    The above sounds correct to me.
    Also, if you clear the task.EnableSystemCancel attribute then Forte will
    not raise the CancelException exception and you can instead check the
    IsCancelled flag yourself.
    cya,
    Jace.
    Jason de Cean
    Forte Analyst/Programmer
    Lumley Technology Limited
    111 Devonshire Street
    Surry Hills, Sydney, Australia
    Ph: 02 93186720
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    I should have read the f... manual ;-)
    >
    In Java there is no reliable way to "kill" a thread in process. However, when cancel is called on a Task, it is important that the Task stop processing. A "run-away" Task might continue processing and updating the message, text, and progress properties even after the Task has been cancelled! In Java, cancelling a Task is a cooperative endeavor. The user of the Task will request that it be cancelled, and the author of the Task must check whether is has been cancelled within the body of the call method. There are two ways this can be done. First, the Task author may check the isCancelled method, inherited from FutureTask, to see whether the Task has been cancelled. Second, if the Task implementation makes use of any blocking calls (such as NIO InterruptibleChannels or Thread.sleep) and the task is cancelled while in such a blocking call, an InterruptedException is thrown. Task implementations which have blocking calls should recognize that an interrupted thread may be the signal for a cancelled task and should double check the isCancelled method to ensure that the InterruptedException was thrown due to the cancellation of the Task.

  • Multithread server with futureTask

    i want to write a multithread server that prints the message received from a client in reverse order i have problems with getting the message from a client and passing that to futureTask
    this is my futureTaskCallback
    class FutureTaskCallback<V> extends FutureTask<V> {
    public FutureTaskCallback(Callable<V> callable) {
    super(callable);
    public void done() {
    String result = "Wynik: ";
    if (isCancelled()) result += "Cancelled.";
    else try {
    result += get();
    } catch(Exception exc) {
    result += exc.toString();
    JOptionPane.showMessageDialog(null, result);
    and mycallable
    public class MyCallable implements Callable
    String toReverse;
    public MyCallable(String s){toReverse=s;}
    public String call () throws java.io.IOException, InterruptedException {
         StringBuffer out = new StringBuffer();
         ////ClientWorker w;
    /// w = new ClientWorker(server.accept(), textField);
    /// Thread t = new Thread(w);
    //// t.start();
    //////toReverse=textField.getText();
         ///System.out.println(toReverse);
    if (toReverse == null || toReverse.trim().equals(""))
    throw new IllegalArgumentException("Set string to reverse");
    ///if (t.isInterrupted()) return null;
    char[] org = toReverse.toCharArray();
    //// if (t.isInterrupted()) return null;
    for (int i = org.length-1; i>=0; i--) {
    Thread.sleep(500);
    out.append(org);
    ////if (t.isInterrupted()) return null;
    ///textField.setText(out.toString());
    ////if (t.isInterrupted()) return null;
         ///////Thread t = Thread.currentThread();
    return out.toString();
    i want to pass the message received from a client to mycallable then to server so it can print the output
    how to do that ?
    thank you
    regards

    Here's a primitive example:
    import java.net.*;
    import java.util.concurrent.*;
    import java.io.*;
    import javax.swing.*;
    public class RevServer{
      ServerSocket ss;
      boolean go;
      public RevServer(int port){
        try{
          ss = new ServerSocket(port);
        catch (Exception e){
          e.printStackTrace();
        go = true;
      public void runServer(){
        try{
          while (go){
            Socket s = ss.accept();
            System.out.println("...client connected");
            service(s);
          ss.close();
        catch (Exception e){
          e.printStackTrace();
      void service(Socket s){
        Thread t = new Thread(new ClientHandler(s));
        t.start();
      public static void main(String[] args){
        RevServer rs = new RevServer(9999);
        rs.runServer();
    class ClientHandler implements Runnable{
      Socket sct;
      public ClientHandler(Socket s){
        sct = s;
      public void run(){
        try{
          BufferedReader br
           = new BufferedReader(new InputStreamReader(sct.getInputStream()));
          String msg = br.readLine();
          FutureTaskCallback<String> ftc
           = new FutureTaskCallback<String>(new MyCallable(msg));
          new Thread(ftc).start();
          PrintWriter pw = new PrintWriter(sct.getOutputStream(), true);
          pw.println(ftc.get());
          sct.close();
        catch (Exception e){
          e.printStackTrace();
    class FutureTaskCallback<V> extends FutureTask<V> {
      public FutureTaskCallback(Callable<V> callable) {
        super(callable);
      public void done() {
        String result = "Wynik: ";
        if (isCancelled()){
         result += "Cancelled.";
        else{
          try {
            result += get();
          catch(Exception exc) {
            result += exc.toString();
        JOptionPane.showMessageDialog(null, result);
    class MyCallable implements Callable<String>{
      String toReverse;
      public MyCallable(String s){
        toReverse = s;
      public String call() throws java.io.IOException, InterruptedException {
        StringBuffer out = new StringBuffer();
        if (toReverse == null || toReverse.trim().equals("")){
          throw new IllegalArgumentException("Set string to reverse");
       char[] org = toReverse.toCharArray();
        for (int i = org.length - 1; i >= 0; i--) {
          Thread.sleep(500);
          out.append(org);
    return out.toString();
    import java.net.*;
    import java.io.*;
    public class RevClient{
    public static void main(String[] args) throws Exception{
    String str, rstr;
    str = "All you need is love";
    if (args.length > 0){
    str = args[0];
    Socket sc = new Socket("127.0.0.1", 9999);
    PrintWriter pw = new PrintWriter(sc.getOutputStream(), true);
    BufferedReader br
    = new BufferedReader(new InputStreamReader(sc.getInputStream()));
    pw.println(str);
    System.out.println("...wait a moment");
    rstr = br.readLine();
    System.out.println(rstr);
    sc.close();

  • Open and cancelled Quote Report

    Hi,
    Can anyone give me the information  for getting open and cancelled Quote Report?

    I hope you are using reason for rejection for cancelling quotations. If that is the case, you can use transaction VA25 to view the list of quotations. Here you can filter on two columns status and reason for rejection to view the report as per your requirement.
    Regards,
    GSL.

  • Timeouts and "cancelled" notifications...

    Greetings,
    We are using the standard (unmodified) version of the iExpense workflows (11.5.5 on Windows, WF 2.6.1), and have a curious and annoying problem...
    1. User submits expense report
    2. "Approval Request" notification times-out (after 5 days)
    3. "No Response" e-mail notification sent back to original user.
    4. "No Response" notification times-out (after 7 days)
    5. NEW "No Response" e-mail notification generated, and sent to original user.
    6. OLD "No Response" notification cancelled automatically.
    7. "CANCELLED: No Response" e-mail notification immediately sent to original user.
    8. Same pair of notifications generated one week later (new "No Response", plus "CANCELLED: No Response" notification referring the previous week's notification), and again a week after that, and so on...
    This is maddening to our users who miss the first message, because (after that first week), they are getting PAIRS of messages every week (only seconds apart) that seem to say to them...
    Message #1: Hey, there's a problem!!
    Message #2: Oh, never mind, no problem at all.
    Has anyone else encountered this problem? How did you handle it? Any ideas?
    Thanks a bunch!! -- Tom
    [email protected]

    Hm. I've confirmed 2396373 is the patch number. Here are the steps I used to locate the patch on MetaLink:
    1) Click the Patches button on the MetaLink navigation menu.
    2) In the Patch Download page, enter 2396373 in the Patch Number field.
    3) Click Submit. This should display the platforms where the patch is available.
    Could you try one more time with these steps and see if you can access it this way?
    Regards,
    Clara
    Thanks for the feedback.
    I searched MetaLink for both the specific patch number you gave, and also the phrase (description) you gave - with no results on either search. (???) Is this patch only visible by requesting it with a TAR, or by some other means?
    Please clarify, or double-check the patch number. Thanks a bunch!! -- Tom

  • Training and Event Management - report on list of cancelled courses

    Hi All,
    Is there any standard report available to get the list of cancelled courses (be it business event grp , type or business event) Would appreciate your inputs on this.
    Kind regards
    Sathya

    S_AHR_61016216 - Cancellations per Attendee , i think there is no standard report for cencelation of business events, type and group.
    for cancellations per attendee reports is available in the system.
    good luck
    Devi

  • Depot excise invoice is open and delivery is cancelled.

    Dear Friends,
    User has created depot excise invoice (commercial invoice not created), but later he has rversed the PGI and cancelled the delivery document.  So now how to cancel the depot excise invoice.  Because system is asking for the delivery doc. number but the delivery doc. number was cancelled.
    And also please tell me how to block if excise invoice is created system should not allow the user to reverse the PGI (only when the excise invoice is cancelled then only it should allow to cancel)
    Please tell me the process how to resolve it.
    Regards,
    Sreehari
    Message was edited by:
            Sreehari Kondapalli

    Hi,
    There is no standard procedure available to cancel this as you have already cancelled the Delivery, you will have to write a ABAP code to correct this entry in RG23D table.
    Regards,
    Murali

  • Cancelled Dunning Report

    Hi Friends,
    Is there any standard tcode to display all Cancelled dunnings.
    Something like to see the list of all cancelled dunnings between 01.08.2014 till 15.08.2014 and not w.r.t to Dunning Run.
    OR
    Someone needs to write an ABAP program by hitting tables FKKMAKO, FKKMAZE and so on..
    Thanks,
    Lakshmi.

    Hi Lakhsmi
    You can see all reversed Dunning in T.code FPM3 (Dunning History). you need to select Display Reversed Dunning Not.
    Regards
    Rehan

  • I am trying to burn a CD from a playlist in iTunes. I set everything up, and then when it tries to burn, it cancels the burn right away, and gives me the error code: 4251. What am I doing wrong?

    Okay, so I wanted to burn a CD to play on players in the house. The songs on my playlist are from CDs that I own and imported into my iTunes. Here are the steps I've taken:
    1. I created a playlist
    2. Selected File > Burn Playlist to Disc...
    3. My Burn Settings are as follows: Maximum Possible Speed (I have tried all the other speeds as well with the same result), Audio CD (No gaps between songs), Use Sound Check is selected, Include CD Text is selected (I have also tried unselecting these two options).
    4. Then I clicked Burn
    5. Within a couple of seconds "Cancelling Burn" shows up in the window at the top of the screen, and a box pops up that says: The attempt to burn a disc failed. An unknown error occurred (4251).
    I have tried different CDs, I have changed all the settings in the Burn Settings box, and I get the same result over and over again. I researched the error 4251, and it refers to a problem with importing songs from a CD. This is totally irrelevant since I'm not trying to import, I'm trying to burn. This is a blank CD, and it is a CD-R. These CDs are off a tower I purchased less than a month ago, and have had absolutely no problem burning other things to these CDs. I really don't want to have to re-import these songs to Windows Media Player or another application just so I can burn what I want onto a CD, but this is almost the point I am at.
    iTunes certainly isn't helping me much at this point, and I would appreciate any feedback into what I am possibly doing wrong in trying to create a CD.

    I have Windows 7 on a Dell.  Open and play iTunes in the compatability mode and use Windows XP (service pack 2).  Disregard any messsages to disable the compability mode.  This has worked for me.  I have also reinstalled iTunes and played with burn speeds etc.  These ideas did not work.  Compatability mode works.

Maybe you are looking for