Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-29577

Disable rocksdb wal when restore from full snapshot

    XMLWordPrintableJSON

Details

    Description

      For now, RocksDBFullRestoreOperation and RocksDBHeapTimersFullRestoreOperation does's pass RocksDB::WriteOptions to RocksDBWriteBatchWrapper when restore kv-data, which will use RocksDBWriteBatchWrapper‘s default WriteOptions(doesn't disable rocksdb wal explicitly, see code below), so during restoring from full snapshot, wal is enabled(use more disk and maybe affect rocksdb-write-performance when restoring)

       

      // First: RocksDBHeapTimersFullRestoreOperation::restoreKVStateData() doesn't pass WriteOptions to RocksDBWriteBatchWrapper(null as default)
      
      private void restoreKVStateData(
              ThrowingIterator<KeyGroup> keyGroups,
              Map<Integer, ColumnFamilyHandle> columnFamilies,
              Map<Integer, HeapPriorityQueueSnapshotRestoreWrapper<?>> restoredPQStates)
              throws IOException, RocksDBException, StateMigrationException {
          // for all key-groups in the current state handle...
          try (RocksDBWriteBatchWrapper writeBatchWrapper =
                  new RocksDBWriteBatchWrapper(this.rocksHandle.getDb(), writeBatchSize)) {
              HeapPriorityQueueSnapshotRestoreWrapper<HeapPriorityQueueElement> restoredPQ = null;
              ColumnFamilyHandle handle = null;
         ......
      }
      
      
      // Second: RocksDBWriteBatchWrapper::flush function doesn't disable wal explicitly when user doesn't pass WriteOptions to RocksDBWriteBatchWrapper
      public void flush() throws RocksDBException {
          if (options != null) {
              db.write(options, batch);
          } else {
              // use the default WriteOptions, if wasn't provided.
              try (WriteOptions writeOptions = new WriteOptions()) {
                  db.write(writeOptions, batch);
              }
          }
          batch.clear();
      }
      
      

       

       

      As we known, rocksdb's wal is usesless for flink, so i think we can disable wal for RocksDBWriteBatchWrapper's default WriteOptions.

      Attachments

        1. image-2022-10-20-16-08-15-746.png
          2.40 MB
          Cai Liuyang
        2. image-2022-10-20-16-11-04-211.png
          888 kB
          Cai Liuyang

        Issue Links

          Activity

            People

              cailiuyang Cai Liuyang
              cailiuyang Cai Liuyang
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: