mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
Write version into dirty file queue files
GitOrigin-RevId: 2d6b881af52fad08a70eea1ff20f81470aca3699
This commit is contained in:
committed by
intellij-monorepo-bot
parent
af9fa6862f
commit
2d99d38d8d
@@ -21,6 +21,8 @@ object PersistentDirtyFilesQueue {
|
||||
private val isUnittestMode: Boolean
|
||||
get() = application.isUnitTestMode
|
||||
|
||||
val currentVersion = 1L
|
||||
|
||||
@JvmStatic
|
||||
fun getQueuesDir(): Path = PathManager.getIndexRoot() / "dirty-file-queues"
|
||||
|
||||
@@ -44,7 +46,13 @@ object PersistentDirtyFilesQueue {
|
||||
val result = IntArrayList()
|
||||
try {
|
||||
DataInputStream(queueFile.inputStream().buffered()).use {
|
||||
val storedVfsVersion = it.readLong()
|
||||
val version = it.readLong()
|
||||
val storedVfsVersion = if (version < 10L) {
|
||||
// we can assume that small numbers are dirty files queue version and not vfs version
|
||||
// because vfs version is vfs creation timestamp that is System.currentTimeMillis()
|
||||
it.readLong()
|
||||
}
|
||||
else version
|
||||
if (storedVfsVersion == currentVfsVersion) {
|
||||
while (it.available() > -1) {
|
||||
result.add(it.readInt())
|
||||
@@ -67,12 +75,18 @@ object PersistentDirtyFilesQueue {
|
||||
|
||||
@JvmStatic
|
||||
fun storeIndexingQueue(queueFile: Path, fileIds: IntCollection, vfsVersion: Long) {
|
||||
storeIndexingQueue(queueFile, fileIds, vfsVersion, currentVersion)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun storeIndexingQueue(queueFile: Path, fileIds: IntCollection, vfsVersion: Long, version: Long) {
|
||||
try {
|
||||
if (fileIds.isEmpty()) {
|
||||
queueFile.deleteIfExists()
|
||||
}
|
||||
queueFile.parent.createDirectories()
|
||||
DataOutputStream(queueFile.outputStream().buffered()).use {
|
||||
if (version > 0) it.writeLong(version)
|
||||
it.writeLong(vfsVersion)
|
||||
fileIds.forEach { fileId ->
|
||||
it.writeInt(fileId)
|
||||
|
||||
@@ -24,4 +24,13 @@ class PersistentDirtyFilesQueueTest {
|
||||
Assert.assertEquals(IntList.of(1, 2, 3), PersistentDirtyFilesQueue.readIndexingQueue(file, vfsVersion))
|
||||
Assert.assertEquals(IntList.of(), PersistentDirtyFilesQueue.readIndexingQueue(file, vfsVersion + 1))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test unversioned file is read correctly`() {
|
||||
val file = tempDir.newDirectoryPath().resolve("test-PersistentDirtyFilesQueue")
|
||||
val vfsVersion = 987L
|
||||
PersistentDirtyFilesQueue.storeIndexingQueue(file, IntList.of(1, 2, 3), vfsVersion, 0)
|
||||
|
||||
Assert.assertEquals(IntList.of(1, 2, 3), PersistentDirtyFilesQueue.readIndexingQueue(file, vfsVersion))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user