Details

    • Type: Task
    • Status: Closed
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: WT2.5.2
    • Labels:

      Description

      Hi!

      Sometimes when converting DB from BDB to WiredTiger we get EBUSY when trying to truncate() index file.
      The conversion code basically looks like the following:

      =============================
      system("rm -rf \"" WT_HOME "\" && mkdir \"" WT_HOME "\"");

      wiredtiger_open(WT_HOME, NULL, "create,checkpoint=(wait=30)", &conn);

      conn->open_session(conn, NULL, NULL, &session);
      session->create(session, "table:main", "key_format=u,value_format=u,columns=(k,v)");
      session->create(session, "index:main:index", "columns=(v)");
      session->create(session, "index:main:index1", "columns=(v)");

      /_ open BDB table, create cursor _/

      while (/_ BDB cursor next() returns records _/) {
      WT_ITEM ki, vi;
      /_ fill ki and vi from BDB record _/

      cursor->set_key(cursor, &ki);
      cursor->set_value(cursor, &vi);
      cursor->insert(cursor);
      }

      cursor->close(cursor);

      session->truncate(session, "file:main_index.wti", NULL, NULL, NULL);

      ============================= END

      The last truncate() call fails sometimes with EBUSY (Device or resource busy)
      In cases where I saw this problem conversion takes quite a long time so probably it's somehow related to periodic checkpoints configured with 30 sec period.
      I was able to reproduce it only on both 2.5.0 and develop.

      Please advise!

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                donald.anderson Donald Anderson
                Reporter:
                dmitri-shubin Dmitri Shubin
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: