From 1700ec0be4fe50a1b7ea95d6af0e46f876746333 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Sun, 1 Apr 2018 23:52:20 +0200 Subject: [PATCH] SPVBlockStore: Remove mmap hack for Windows. It breaks on Java9 because it is using unofficial sun.* API. --- .../org/bitcoinj/store/SPVBlockStore.java | 4 -- .../org/bitcoinj/store/WindowsMMapHack.java | 39 ------------------- 2 files changed, 43 deletions(-) delete mode 100644 core/src/main/java/org/bitcoinj/store/WindowsMMapHack.java diff --git a/core/src/main/java/org/bitcoinj/store/SPVBlockStore.java b/core/src/main/java/org/bitcoinj/store/SPVBlockStore.java index caac4095..4d9d1cc4 100644 --- a/core/src/main/java/org/bitcoinj/store/SPVBlockStore.java +++ b/core/src/main/java/org/bitcoinj/store/SPVBlockStore.java @@ -287,10 +287,6 @@ public class SPVBlockStore implements BlockStore { public void close() throws BlockStoreException { try { buffer.force(); - if (Utils.isWindows()) { - log.info("Windows mmap hack: Forcing buffer cleaning"); - WindowsMMapHack.forceRelease(buffer); - } buffer = null; // Allow it to be GCd and the underlying file mapping to go away. randomAccessFile.close(); blockCache.clear(); diff --git a/core/src/main/java/org/bitcoinj/store/WindowsMMapHack.java b/core/src/main/java/org/bitcoinj/store/WindowsMMapHack.java deleted file mode 100644 index 88f47f2d..00000000 --- a/core/src/main/java/org/bitcoinj/store/WindowsMMapHack.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright by the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.bitcoinj.store; - -import sun.misc.*; -import sun.nio.ch.*; - -import java.nio.*; - -/** - *

This class knows how to force an mmap'd ByteBuffer to reliquish its file handles before it becomes garbage collected, - * by exploiting implementation details of the HotSpot JVM implementation.

- * - *

This is required on Windows because otherwise an attempt to delete a file that is still mmapped will fail. This can - * happen when a user requests a "restore from seed" function, which involves deleting and recreating the chain file. - * At some point we should stop using mmap in SPVBlockStore and we can then delete this class.

- * - *

It is a separate class to avoid hitting unknown imports when running on other JVMs.

- */ -public class WindowsMMapHack { - public static void forceRelease(MappedByteBuffer buffer) { - Cleaner cleaner = ((DirectBuffer) buffer).cleaner(); - if (cleaner != null) cleaner.clean(); - } -}