Comments (3)
@Rush yeah, hmm memory is pretty tricky in these cases. There are a few ways to ensure the objects stick around (I think the persistent handle, as well as an explicit internal counter that can be increased), but then you need to ensure it's dereffed when it's no longer needed - big headaches here.
Would it be possible to write a simple "manual" test case that we could run as part of the automated test suite? We could run that one with expose-gc
so you could explicitly call for garbage collection in it, and would serve as a great starting point for finding a solution to the problem
from node-libvirt.
@Rush I'm running the following snippit:
'use strict';
var virt = require('..'),
fixture = require('./lib/helper').fixture;
// continuously run gc every 100ms
if (global.gc) setInterval(global.gc, 100);
var xml = fixture('storage_volume.xml');
var hv = new virt.Hypervisor('test:///default');
hv.connectAsync()
.then(function() { return hv.lookupStoragePoolByNameAsync('default-pool'); })
.then(function(pool) { return pool.createVolumeAsync(xml); })
.catch(function(err) { console.log('error: ', err); });
and getting this output:
mbroadst@retinoid:node-libvirt (master=)$ node --expose-gc test/issue65.js
Assertion failed: (result == 0), function ClearHandle, file ../src/nlv_object.h, line 60.
Abort trap: 6
does that look like what you're running into?
from node-libvirt.
@Rush update here, that does look like the relevant error however I think we've tapped out my creativity on solving the problem
I did, on the other hand, find a solution through javascript which might be the way to go (but then we've got a bit of work ahead of us) through this monkey-patch in index.js
:
var $createVolumeAsync = libvirt.StoragePool.prototype.createVolumeAsync;
libvirt.StoragePool.prototype.createVolumeAsync = function(options) {
var self = this;
return $createVolumeAsync.call(self, options)
.then(function(volume) {
volume._pool = self;
return volume;
});
};
from node-libvirt.
Related Issues (20)
- lookupDomainById returns empty object HOT 11
- Error information can be lost during high concurrency
- Error objects become invalid and cause a crash (test-case supplied) HOT 7
- lookupStorageVolumeByVolume is not implemented HOT 4
- tests != docs. HOT 6
- Events not firing HOT 6
- v2.0.0 promisification changes HOT 6
- list by domain name? HOT 6
- Error with connection pointers HOT 4
- Domain migration with options fails with sigfault HOT 1
- lookupDomainByUUID HOT 3
- set/get secret value do not work properly HOT 4
- Domain clonage
- npm install in windows error
- Current version in npm does not have the latest fixes. HOT 6
- How to listen for all domain events from hypervisor
- Maintainers? HOT 3
- Crashes when using events
- Can't install on Centos 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from node-libvirt.