| 478 | } |
| 479 | |
| 480 | func (this *SQLiteFileList) UpgradeV3(oldDir string, brokenOnError bool) error { |
| 481 | // index.db |
| 482 | var indexDBPath = oldDir + "/index.db" |
| 483 | _, err := os.Stat(indexDBPath) |
| 484 | if err != nil { |
| 485 | return nil |
| 486 | } |
| 487 | remotelogs.Println("CACHE", "upgrading local database from '"+oldDir+"' ...") |
| 488 | |
| 489 | defer func() { |
| 490 | _ = fsutils.Remove(indexDBPath) |
| 491 | remotelogs.Println("CACHE", "upgrading local database finished") |
| 492 | }() |
| 493 | |
| 494 | db, err := dbs.OpenWriter("file:" + indexDBPath + "?cache=shared&mode=rwc&_journal_mode=WAL&_sync=" + dbs.SyncMode + "&_locking_mode=EXCLUSIVE") |
| 495 | if err != nil { |
| 496 | return err |
| 497 | } |
| 498 | |
| 499 | defer func() { |
| 500 | _ = db.Close() |
| 501 | }() |
| 502 | |
| 503 | var isFinished = false |
| 504 | var offset = 0 |
| 505 | var count = 10000 |
| 506 | |
| 507 | for { |
| 508 | if isFinished { |
| 509 | break |
| 510 | } |
| 511 | |
| 512 | err = func() error { |
| 513 | defer func() { |
| 514 | offset += count |
| 515 | }() |
| 516 | |
| 517 | rows, err := db.Query(`SELECT "hash", "key", "headerSize", "bodySize", "metaSize", "expiredAt", "staleAt", "createdAt", "host", "serverId" FROM "cacheItems_v3" ORDER BY "id" ASC LIMIT ?, ?`, offset, count) |
| 518 | if err != nil { |
| 519 | return err |
| 520 | } |
| 521 | defer func() { |
| 522 | _ = rows.Close() |
| 523 | }() |
| 524 | |
| 525 | var hash = "" |
| 526 | var key = "" |
| 527 | var headerSize int64 |
| 528 | var bodySize int64 |
| 529 | var metaSize int64 |
| 530 | var expiredAt int64 |
| 531 | var staleAt int64 |
| 532 | var createdAt int64 |
| 533 | var host string |
| 534 | var serverId int64 |
| 535 | |
| 536 | isFinished = true |
| 537 | |