-
Notifications
You must be signed in to change notification settings - Fork 242
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rare error on insert (need help reproducing) #69
Comments
Can you set up a minimal test case that reproduces this consistently? I
haven't seen that.
вт, 21 марта 2017 г. в 11:53, Dmitry Pisanko <[email protected]>:
… Hello, sometimes after many inserts and deletes from tree i recieve
strange error
TypeError: Cannot read property 'push' of undefined
at rbush._insert (./node_modules/rbush/index.js:301:22)
at rbush.insert (./node_modules/rbush/index.js:120:24)
Any idea? Config of inserted items seems to be ok.
Thank you
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#69>, or mute the thread
<https://github.com/notifications/unsubscribe-auth/AABjM-XSNdDM2Hp0rWaS3Fk4lHz1Y4qBks5rn538gaJpZM4MjjmY>
.
|
Unfortunately, i can't reprosuce it consistently. Problem appear after 1-2 hours of script working, so i have no idea what caused the problem. p.s. Можно на русском подробно описать проблему? Мне так будет намного проще :) |
Можно и на русском, но я не смогу принять баг и пофиксить без тест кейса — без него по умолчанию буду предполагать, что проблема на стороне приложения. Попробуй искусственно сделать Node-скрипт, который делает много добавлений и удалений, пока проблема не появится. |
Это я понимаю, пока пробую заставить проблему стабильно повторяться. Есть игровой сервер, на старых режимах игры такая беда вылазила где-то через три дня, мы просто перегружали его и не особо страдали. А вот в новом режиме вываливается такое стабильно, пока понял что косяк появляется если у новых нод большой размер. Тикет создал, чтобы поинтересоваться есть ли какие идеи на этот счёт. Попробую сделать скрипт, чтобы стабильно повторять проблему. |
Глядя на stack trace, у меня кажется есть идея, когда это может происходить. Попробую разобраться и пофиксить сегодня. |
Спасибо, было бы замечательно :) |
Не, все-таки не понимаю, как так получается. Нужен тест-кейс. Когда в следующий раз появится баг, можно более подробный дамп? Что находится в переменной |
Попробую в течении пары дней повторить, пока эту логику выпилили. Как будет инфа, отпишусь |
I'm also seeing a similar issue. Full stack trace:
Value of node at time of error:
It appears infrequently - still trying to understand the behaviour that causes it. |
@devonbarrett thanks for the info! This hints that for some weird reason, the |
@dmitrypisanko новостей никаких? |
Я в код на проде логирование добавил, пока не повторялось. Баг крайне спонтанный и трудно отловимый ( |
@devonbarrett @dmitrypisanko any news on a reproducible test case? |
@mourner привет, больше не работаю над тем проектом, потому не могу ничего сказать. Но периодически бага появлялась, логов к сожалению нет :( |
Hi @mourner ! I've been having the same issue, and noticed that only happens when having some items with Here's the code I used to consistently repro it on node const rbush = require('rbush');
const rand = (min, max) =>
Math.floor(Math.random() * (max - min + 1) + min)
const times = (n, fn) => {
for (let i = 0; i < n; i++) fn(i)
}
const infinity = {
minX: -Infinity,
minY: -Infinity,
maxX: Infinity,
maxY: Infinity,
}
const createBounds = () => (Math.random() < 0.1 ? { ...infinity } : {
minX: rand(-10000, 10000),
minY: rand(-10000, 10000),
maxX: rand(-10000, 10000),
maxY: rand(-10000, 10000),
})
const createItem = () => ({
...createBounds(),
value: Math.random()
})
const ITEMS = 1500
const UPDATES = 12000
const items = Array(ITEMS).fill(null).map(createItem)
const tree = rbush(6)
tree.load(items);
console.log(`${items.length} items loaded.`)
console.log(`Doing ${UPDATES} updates`)
times(UPDATES, (i) => {
console.log(`update ${i + 1}`)
const index = rand(0, items.length - 1)
const item = items[index]
tree.remove(item)
const newItem = {
...item,
...createBounds()
}
items[index] = newItem
tree.insert(newItem);
}) Worth noting that this error also happened to me when mistakenly added some items without the |
Hi! |
@borodaev If this is your case, we fixed it using |
@mjlescano, I got this problem on regular data sporadically |
@borodaev I'd really appreciate it if you could catch a minimal test case that reproduces the failure for regular data. |
FWIW, I get similar errors (undefined push/length properties) when min/max values are unknowingly NaN. |
Any updates on this issue? I'm having a similar problem. |
@pcezar-i9 we still don't have a minimal reproducible test case to track down the problem. Maybe you could help with that? |
Unfortunately no, this happened twice on the application I'm working at, but the cases are very erratic and doesn't make sense. |
Hi @mourner, I copied the code posted by @mjlescano into a new file and ran it, and it repeatably reproduces the defect in under a second (81 updates). I'm using rbush 2.0.2. Have you tried reproducing it this way?
|
Details of this error's root cause and a fix is now available in #94. It successfully runs the code from #69 (comment) @mourner I'd appreciate your review, as properly supporting infinity rectangles is an important requirement for my current app. |
Hello, sometimes after many inserts and deletes from tree i recieve strange error
TypeError: Cannot read property 'push' of undefined
at rbush._insert (./node_modules/rbush/index.js:301:22)
at rbush.insert (./node_modules/rbush/index.js:120:24)
Any idea? Config of inserted items seems to be ok.
Thank you
The text was updated successfully, but these errors were encountered: