Unverified Commit 78dc595a authored by zeroleak's avatar zeroleak Committed by GitHub
Browse files

Merge pull request #5 from anwfr/develop

fix mvn:release
parents 90da08fa f7c93571
[![Build Status](https://travis-ci.org/bitcoinj/bitcoinj.png?branch=master)](https://travis-ci.org/bitcoinj/bitcoinj) [![Coverage Status](https://coveralls.io/repos/bitcoinj/bitcoinj/badge.png?branch=master)](https://coveralls.io/r/bitcoinj/bitcoinj?branch=master)
[![Build Status](https://travis-ci.org/bitcoinj/bitcoinj.png?branch=master)](https://travis-ci.org/bitcoinj/bitcoinj) [![Coverage Status](https://coveralls.io/repos/bitcoinj/bitcoinj/badge.png?branch=master)](https://coveralls.io/r/bitcoinj/bitcoinj?branch=master)
[![Visit our IRC channel](https://kiwiirc.com/buttons/irc.freenode.net/bitcoinj.png)](https://kiwiirc.com/client/irc.freenode.net/bitcoinj)
......@@ -191,7 +191,7 @@
......@@ -432,5 +432,4 @@
......@@ -278,10 +278,6 @@ public class SPVBlockStore implements BlockStore {
public void close() throws BlockStoreException {
try {
if (System.getProperty("os.name").toLowerCase().contains("win")) {
log.info("Windows mmap hack: Forcing buffer cleaning");
buffer = null; // Allow it to be GCd and the underlying file mapping to go away.
} catch (IOException e) {
* 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,
* 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.*;
* <p>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.</p>
* <p>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.</p>
* <p>It is a separate class to avoid hitting unknown imports when running on other JVMs.</p>
public class WindowsMMapHack {
public static void forceRelease(MappedByteBuffer buffer) {
Cleaner cleaner = ((DirectBuffer) buffer).cleaner();
if (cleaner != null) cleaner.clean();
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment