GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — events: remove weak listener for event target by rluvaton · Pull Request #48952 · nodejs/node

Conversation

@rluvaton

@rluvaton rluvaton commented Jul 28, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Fixes: #48951

  • need to add a test

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

bricss and rawpixel-vincent reacted with thumbs up emoji rawpixel-vincent reacted with heart emoji
All reactions
  • 👍 2 reactions
  • ❤️ 1 reaction
@nodejs-github-bot nodejs-github-bot added the needs-ci PRs that need a full CI run. label Jul 28, 2023
mscdex
mscdex reviewed Jul 28, 2023
View reviewed changes
Comment thread lib/internal/event_target.js Outdated

@mscdex mscdex Jul 28, 2023

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not make this a separate, standalone function instead of adding it to the prototype (as a non-standard function)?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Jul 28, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good question, Because it accesses the instance internals and I want to make it close to the other remove listener 😄

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@mscdex mscdex Jul 28, 2023

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My general impression is that for web standards APIs, node tries to avoid exposing non-standard properties and functions.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

benjamingr and MoLow reacted with thumbs up emoji
All reactions
  • 👍 2 reactions

@rluvaton rluvaton Jul 28, 2023

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't plan to expose it as plain function, either extracting or use symbol as a key

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
rluvaton
rluvaton commented Jul 28, 2023
View reviewed changes
Comment thread lib/internal/event_target.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

rluvaton
rluvaton commented Jul 28, 2023
View reviewed changes
Comment thread lib/internal/event_target.js Outdated
Comment on lines 711 to 721

@rluvaton rluvaton Jul 28, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm thinking maybe just remove the while as we are sure that this exists unless there is some weird thing that can happen here...

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@rluvaton
rluvaton marked this pull request as ready for review July 28, 2023 15:35
debadree25
debadree25 reviewed Jul 29, 2023
View reviewed changes
Comment thread test/parallel/test-abortcontroller.js Outdated

@debadree25 debadree25 Jul 29, 2023

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a better way to test 🤔 feels like this could be flakey

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Jul 29, 2023

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good question but to reduce flakiness this test would be to not run in parallel with other tests, will move it to a different file

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Jul 29, 2023

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#48952 (comment)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@atlowChemi atlowChemi Jul 30, 2023

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this 100 sounds like a magic number which would not be truly reliable... (I don't have a better idea of how to test this though)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

debadree25 reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

@rluvaton rluvaton Jul 30, 2023

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the test as it did not work for some reason...

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@atlowChemi atlowChemi Jul 30, 2023

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rluvaton I wrote this in another conversation, but I feel it belongs here...
Maybe using a WeakRef[] etc we can ensure the values are gone after globalThis.gc();, instead of checking an increase in memory? (meaning add them wrapped by WeakRef into an array during the createALotOfAbortSignals setup)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Jul 30, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great idea, the test was added :)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Aug 2, 2023

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed the test as it can be flaky and instead checked that the memory leak warning was not emitted...

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@debadree25

debadree25 commented Jul 29, 2023

Copy link
Copy Markdown
Contributor

Also cc @nodejs/events

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

rluvaton
rluvaton commented Jul 29, 2023
View reviewed changes
Comment thread test/parallel/test-abortsignal-timeout.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

atlowChemi
atlowChemi reviewed Jul 30, 2023
View reviewed changes
Comment thread test/parallel/test-abortsignal-timeout.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

atlowChemi
atlowChemi reviewed Jul 30, 2023
View reviewed changes
Comment thread test/parallel/test-abortsignal-timeout.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

@rluvaton
rluvaton marked this pull request as draft July 30, 2023 13:20
@rluvaton
rluvaton marked this pull request as ready for review July 30, 2023 16:05
atlowChemi
atlowChemi reviewed Jul 30, 2023
View reviewed changes
Comment thread test/parallel/test-abortcontroller.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread test/parallel/test-abortcontroller.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread test/parallel/test-abortcontroller.js Outdated

@atlowChemi atlowChemi Jul 30, 2023

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure why this requires the async iife wrapper, or the sleeps

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Jul 30, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

without the sleep, the test would fail (as I assume the GC happen in a different thread when having more than 1 core)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@atlowChemi atlowChemi Jul 30, 2023

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rluvaton so is 10ms trust-worthy?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Aug 1, 2023

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used 10ms like the rest

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Aug 1, 2023

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

increased to 100ms and hope the test now pass

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Aug 2, 2023

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I replaced the test with another one that check that the memory leak warning not emitted which would be faster and have the same result

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@atlowChemi atlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Jul 31, 2023
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Jul 31, 2023
@nodejs-github-bot

nodejs-github-bot commented Jul 31, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/53013/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@atlowChemi

atlowChemi commented Jul 31, 2023

Copy link
Copy Markdown
Member

@rluvaton the test seems to be failing 😕

not ok 244 parallel/test-abortcontroller
  ---
  duration_ms: 244.52900
  severity: fail
  exitcode: 1
  stack: |-
    node:internal/process/promises:289
                triggerUncaughtException(err, true /* fromPromise */);
                ^
    
    AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
    + actual - expected
    
    + AbortSignal {
    +   [Symbol(events.maxEventTargetListeners)]: 10,
    +   [Symbol(events.maxEventTargetListenersWarned)]: false,
    +   [Symbol(kAborted)]: false,
    +   [Symbol(kComposite)]: false,
    +   [Symbol(kEvents)]: SafeMap(1) [Map] {
    +     'abort' => <ref *1> {
    +       next: Listener {
    +         callback: SafeWeakRef [WeakRef] {},
    +         flags: 81,
    +         listener: SafeWeakRef [WeakRef] {},
    +         next: undefined,
    +         previous: [Circular *1]
    +       },
    +       resistStopPropagation: true,
    +       size: 1
    +     }
    +   },
    +   [Symbol(kHandlers)]: SafeMap(0) [Map] {},
    +   [Symbol(kReason)]: undefined,
    +   [Symbol(kTimeout)]: true
    + }
    - undefined
        at /home/iojs/build/workspace/node-test-commit-linux/test/parallel/test-abortcontroller.js:256:5 {
      generatedMessage: true,
      code: 'ERR_ASSERTION',
      actual: AbortSignal {
        [Symbol(kEvents)]: SafeMap(1) [Map] {
          'abort' => <ref *1> {
            size: 1,
            next: Listener {
              next: undefined,
              previous: [Circular *1],
              listener: SafeWeakRef [WeakRef] {},
              flags: 81,
              callback: SafeWeakRef [WeakRef] {}
            },
            resistStopPropagation: true
          }
        },
        [Symbol(events.maxEventTargetListeners)]: 10,
        [Symbol(events.maxEventTargetListenersWarned)]: false,
        [Symbol(kHandlers)]: SafeMap(0) [Map] {},
        [Symbol(kAborted)]: false,
        [Symbol(kReason)]: undefined,
        [Symbol(kComposite)]: false,
        [Symbol(kTimeout)]: true
      },
      expected: undefined,
      operator: 'strictEqual'
    }
    
    Node.js v21.0.0-pre
  ...
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@atlowChemi atlowChemi added the abortcontroller Issues and PRs related to the AbortController and AbortSignal APIs. label Jul 31, 2023
@github-actions github-actions Bot mentioned this pull request Aug 1, 2023
CI Reliability 2023-08-01 nodejs/reliability#630
Open
21 tasks
atlowChemi
atlowChemi reviewed Aug 1, 2023
View reviewed changes
Comment thread lib/internal/event_target.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

@atlowChemi
atlowChemi requested a review from benjamingr August 1, 2023 20:42
@atlowChemi atlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Aug 1, 2023
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Aug 1, 2023
@nodejs-github-bot

nodejs-github-bot commented Aug 1, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/53033/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@github-actions github-actions Bot mentioned this pull request Aug 2, 2023
CI Reliability 2023-08-02 nodejs/reliability#631
Open
24 tasks
@nodejs-github-bot

nodejs-github-bot commented Aug 2, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/53052/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

This was referenced Aug 3, 2023
CI Reliability 2023-08-03 nodejs/reliability#632
Open
CI Reliability 2023-08-04 nodejs/reliability#633
Open
atlowChemi
atlowChemi reviewed Aug 5, 2023
View reviewed changes
Comment thread test/parallel/test-eventtarget-memoryleakwarning.js Outdated

@atlowChemi atlowChemi Aug 5, 2023

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not?

Suggested change
await setTimeout(0);
await Promise.resolve();

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rluvaton rluvaton Aug 5, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

because it won't GC with this

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

atlowChemi reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
atlowChemi
atlowChemi reviewed Aug 5, 2023
View reviewed changes
Comment thread test/parallel/test-eventtarget-memoryleakwarning.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Aug 11, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/53183/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Aug 11, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/53191/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Aug 11, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/53196/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Aug 12, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/53239/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

atlowChemi
atlowChemi approved these changes Aug 12, 2023
View reviewed changes
@atlowChemi atlowChemi added author ready PRs with CI started, the required approvals, and no outstanding review comments. commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. events Issues and PRs related to EventEmitter and the events module. and removed abortcontroller Issues and PRs related to the AbortController and AbortSignal APIs. labels Aug 12, 2023
@nodejs-github-bot nodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 12, 2023
@nodejs-github-bot
nodejs-github-bot merged commit c39f04c into nodejs:main Aug 12, 2023
@nodejs-github-bot

nodejs-github-bot commented Aug 12, 2023

Copy link
Copy Markdown
Collaborator

Landed in c39f04c

rawpixel-vincent reacted with hooray emoji
All reactions
  • 🎉 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@rluvaton
rluvaton deleted the fix-memory-leak-in-abort-signal-and-weak-listeners branch August 12, 2023 18:22
This was referenced Aug 13, 2023
CI Reliability 2023-08-13 nodejs/reliability#635
Open
CI Reliability 2023-08-14 nodejs/reliability#636
Open
Ceres6 pushed a commit to Ceres6/node that referenced this pull request Aug 14, 2023
@rluvaton @Ceres6
events: remove weak listener for event target
4bf139e
Fixes: nodejs#48951
PR-URL: nodejs#48952
Reviewed-By: Chemi Atlow <[email protected]>
Ceres6 pushed a commit to Ceres6/node that referenced this pull request Aug 14, 2023
@rluvaton @Ceres6
events: remove weak listener for event target
b1a29cf
Fixes: nodejs#48951
PR-URL: nodejs#48952
Reviewed-By: Chemi Atlow <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Aug 15, 2023
@rluvaton @RafaelGSS
events: remove weak listener for event target
fd6885b
Fixes: #48951
PR-URL: #48952
Reviewed-By: Chemi Atlow <[email protected]>
@UlisesGascon UlisesGascon mentioned this pull request Aug 15, 2023
v20.6.0 proposal #49185
Merged
RafaelGSS pushed a commit to RafaelGSS/node that referenced this pull request Aug 15, 2023
@rluvaton @RafaelGSS
events: remove weak listener for event target
b822792
Fixes: nodejs#48951
PR-URL: nodejs#48952
Reviewed-By: Chemi Atlow <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Aug 16, 2023
@rluvaton @RafaelGSS
events: remove weak listener for event target
eb6e6fc
Fixes: #48951
PR-URL: #48952
Reviewed-By: Chemi Atlow <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Aug 17, 2023
@rluvaton @RafaelGSS
events: remove weak listener for event target
d568600
Fixes: #48951
PR-URL: #48952
Reviewed-By: Chemi Atlow <[email protected]>
@gandazgul

gandazgul commented Sep 18, 2023

Copy link
Copy Markdown

Was this included in, or is planned to be included in v18?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@atlowChemi

atlowChemi commented Sep 18, 2023

Copy link
Copy Markdown
Member

Was this included in, or is planned to be included in v18?

This was released just in v20.6.0, which means it will take some time to reach v18 which is LTS, but hopefully it should happen soon 🙂

gandazgul and rluvaton reacted with thumbs up emoji
All reactions
  • 👍 2 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

targos pushed a commit that referenced this pull request Nov 27, 2023
@rluvaton @targos
events: remove weak listener for event target
acd9872
Fixes: #48951
PR-URL: #48952
Reviewed-By: Chemi Atlow <[email protected]>
@targos targos mentioned this pull request Nov 28, 2023
v18.19.0 release proposal #50953
Merged
sercher added a commit to sercher/graaljs that referenced this pull request Apr 25, 2024
@sercher
events: remove weak listener for event target
513495a
Fixes: nodejs/node#48951
PR-URL: nodejs/node#48952
Reviewed-By: Chemi Atlow <[email protected]>
sercher added a commit to sercher/graaljs that referenced this pull request Apr 25, 2024
@sercher
events: remove weak listener for event target
fb734ce
Fixes: nodejs/node#48951
PR-URL: nodejs/node#48952
Reviewed-By: Chemi Atlow <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@atlowChemi atlowChemi atlowChemi approved these changes
@benjamingr benjamingr Awaiting requested review from benjamingr
+2 more reviewers
@mscdex mscdex mscdex left review comments
@debadree25 debadree25 debadree25 left review comments
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

author ready PRs with CI started, the required approvals, and no outstanding review comments. commit-queue-squash PRs the Commit Queue should land as one squashed commit. events Issues and PRs related to EventEmitter and the events module. needs-ci PRs that need a full CI run.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Memory leak in AbortSignal.timeout and aborted

Uh oh!

There was an error while loading. Please reload this page.

8 participants

@rluvaton @debadree25 @nodejs-github-bot @atlowChemi @gandazgul @mscdex @benjamingr @aduh95
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.