List:Commits« Previous MessageNext Message »
From:He Zhenxing Date:March 9 2009 8:49am
Subject:bzr push into mysql-5.0-bugteam branch (zhenxing.he:2768) Bug#37416 Bug#40363
View as plain text  
 2768 He Zhenxing	2009-03-09 [merge]
      Auto merge
modified:
  sql/sql_cache.cc
  sql/sql_class.cc
  tests/mysql_client_test.c

=== modified file 'include/my_sys.h'
--- a/include/my_sys.h	2009-01-15 10:48:31 +0000
+++ b/include/my_sys.h	2009-03-06 09:32:00 +0000
@@ -636,6 +636,7 @@ extern int nt_share_delete(const char *n
 extern void TERMINATE(FILE *file);
 #endif
 extern void init_glob_errs(void);
+extern void wait_for_free_space(const char *filename, int errors);
 extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
 extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
 extern int my_fclose(FILE *fd,myf MyFlags);

=== modified file 'mysys/errors.c'
--- a/mysys/errors.c	2008-06-16 08:05:00 +0000
+++ b/mysys/errors.c	2009-03-06 09:32:00 +0000
@@ -39,7 +39,7 @@ const char * NEAR globerrs[GLOBERRS]=
   "Can't change dir to '%s' (Errcode: %d)",
   "Warning: '%s' had %d links",
   "%d files and %d streams is left open\n",
-  "Disk is full writing '%s' (Errcode: %d). Waiting for someone to free space... Retry in %d secs",
+  "Disk is full writing '%s' (Errcode: %d). Waiting for someone to free space... (Expect up to %d secs delay for server to continue after freeing disk space)",
   "Can't create directory '%s' (Errcode: %d)",
   "Character set '%s' is not a compiled character set and is not specified in the '%s' file",
   "Out of resources when opening file '%s' (Errcode: %d)",
@@ -90,3 +90,17 @@ void init_glob_errs()
   EE(EE_FILENOTFOUND)	= "File '%s' not found (Errcode: %d)";
 }
 #endif
+
+void wait_for_free_space(const char *filename, int errors)
+{
+  if (errors == 0)
+    my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
+             filename,my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
+  if (!(errors % MY_WAIT_GIVE_USER_A_MESSAGE))
+    my_printf_error(EE_DISK_FULL,
+                    "Retry in %d secs. Message reprinted in %d secs",
+                    MYF(ME_BELL | ME_NOREFRESH),
+                    MY_WAIT_FOR_USER_TO_FIX_PANIC,
+                    MY_WAIT_GIVE_USER_A_MESSAGE * MY_WAIT_FOR_USER_TO_FIX_PANIC );
+  VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
+}

=== modified file 'mysys/my_fstream.c'
--- a/mysys/my_fstream.c	2007-03-28 17:46:42 +0000
+++ b/mysys/my_fstream.c	2009-03-06 09:32:00 +0000
@@ -116,10 +116,8 @@ uint my_fwrite(FILE *stream, const byte 
       if ((errno == ENOSPC || errno == EDQUOT) &&
           (MyFlags & MY_WAIT_IF_FULL))
       {
-        if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
-          my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
-                   "[stream]",my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
-        VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
+        wait_for_free_space("[stream]", errors);
+        errors++;
         VOID(my_fseek(stream,seekptr,MY_SEEK_SET,MYF(0)));
         continue;
       }

=== modified file 'mysys/my_pread.c'
--- a/mysys/my_pread.c	2007-03-28 17:46:42 +0000
+++ b/mysys/my_pread.c	2009-03-06 09:32:00 +0000
@@ -121,10 +121,8 @@ uint my_pwrite(int Filedes, const byte *
     if ((my_errno == ENOSPC || my_errno == EDQUOT) &&
         (MyFlags & MY_WAIT_IF_FULL))
     {
-      if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
-	my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
-		 my_filename(Filedes),my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
-      VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
+      wait_for_free_space(my_filename(Filedes), errors);
+      errors++;
       continue;
     }
     if ((writenbytes > 0 && (uint) writenbytes != (uint) -1) ||

=== modified file 'mysys/my_write.c'
--- a/mysys/my_write.c	2007-10-25 04:19:57 +0000
+++ b/mysys/my_write.c	2009-03-06 09:32:00 +0000
@@ -54,10 +54,8 @@ uint my_write(int Filedes, const byte *B
     if ((my_errno == ENOSPC || my_errno == EDQUOT) &&
         (MyFlags & MY_WAIT_IF_FULL))
     {
-      if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
-	my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
-		 my_filename(Filedes),my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
-      VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
+      wait_for_free_space(my_filename(Filedes), errors);
+      errors++;
       continue;
     }
 

Thread
bzr push into mysql-5.0-bugteam branch (zhenxing.he:2768) Bug#37416 Bug#40363He Zhenxing9 Mar