Skip to content

pinning is broken #1051

Closed
Closed
@jbenet

Description

# new repo
> ipfs init
initializing ipfs node at /Users/jbenet/.go-ipfs
generating 4096-bit RSA keypair...done
peer identity: QmeGkJ23fbmyHopembDxFJVZ7gSem7982MVkkV5igjgEPt
to get started, enter:

  ipfs cat /ipfs/Qmcqtw8FfrVSBaRmbWwHxt3AuySBhJLcvmFYi3Lbc4xnwj/readme

> tree dir
dir
├── afile
└── bfile

0 directories, 2 files

# add dir. this should pin the dir recursively.
> ipfs add -r dir
added QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco dir/afile
added QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts dir/bfile
added QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd dir

# no direct. good.
> ipfs pin ls --type=direct

# dir should be in recursive. ... but it isn't?
> ipfs pin ls --type=recursive | grep QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd
# what's in recursive, then?
> ipfs pin ls --type=recursive
QmTumTjvcYCAvRRwQ8sDRxh8ezmrcr88YFU7iYNroGGTBZ
QmeEqpsKrvdhuuuVsguHaVdJcPnnUHHZ5qEWjCHavYbNqU
QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco <---- wat
QmfE3nUohq2nEYwieF7YFnJF1VfiL4i3wDxkMq8aGUg8Mt  
QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts <---- wat
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn
QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y
Qmcqtw8FfrVSBaRmbWwHxt3AuySBhJLcvmFYi3Lbc4xnwj
QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7
QmUFtMrBHqdjTtbebsL6YGebvjShh3Jud1insUv12fEVdA
> ipfs pin ls --type=indirect
QmTumTjvcYCAvRRwQ8sDRxh8ezmrcr88YFU7iYNroGGTBZ
QmUFtMrBHqdjTtbebsL6YGebvjShh3Jud1insUv12fEVdA
QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7
QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y
QmeEqpsKrvdhuuuVsguHaVdJcPnnUHHZ5qEWjCHavYbNqU
QmfE3nUohq2nEYwieF7YFnJF1VfiL4i3wDxkMq8aGUg8Mt
> echo "okay. fine, we'll pin it ourselves"
okay. fine, we'll pin it ourselves
# let's clear the current, _incorrect_ pins.
> ipfs pin rm -r QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco
unpinned QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco
> ipfs pin rm -r QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts
unpinned QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts
# let's add a recursive pin
> ipfs pin add -r QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd
pinned QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd recursively
# check it's there.
> ipfs pin ls --type=recursive | grep QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd
QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd
# check the children are not in recursive
> ipfs pin ls --type=recursive
QmfE3nUohq2nEYwieF7YFnJF1VfiL4i3wDxkMq8aGUg8Mt
QmTumTjvcYCAvRRwQ8sDRxh8ezmrcr88YFU7iYNroGGTBZ
QmeEqpsKrvdhuuuVsguHaVdJcPnnUHHZ5qEWjCHavYbNqU
QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd
QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn
QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7
QmUFtMrBHqdjTtbebsL6YGebvjShh3Jud1insUv12fEVdA
Qmcqtw8FfrVSBaRmbWwHxt3AuySBhJLcvmFYi3Lbc4xnwj
# check the children are in indirect
> ipfs pin ls --type=indirect
QmeEqpsKrvdhuuuVsguHaVdJcPnnUHHZ5qEWjCHavYbNqU
QmfE3nUohq2nEYwieF7YFnJF1VfiL4i3wDxkMq8aGUg8Mt
QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco <---- yep
QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts <---- yep
QmTumTjvcYCAvRRwQ8sDRxh8ezmrcr88YFU7iYNroGGTBZ
QmUFtMrBHqdjTtbebsL6YGebvjShh3Jud1insUv12fEVdA
QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7
QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y
> echo "ok so far so good"
ok so far so good
# remove the recursive pin
> ipfs pin rm -r QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd
unpinned QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd
# check it's no longer there.
> ipfs pin ls --type=recursive
QmeEqpsKrvdhuuuVsguHaVdJcPnnUHHZ5qEWjCHavYbNqU
QmfE3nUohq2nEYwieF7YFnJF1VfiL4i3wDxkMq8aGUg8Mt
QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn
QmUFtMrBHqdjTtbebsL6YGebvjShh3Jud1insUv12fEVdA
QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7
Qmcqtw8FfrVSBaRmbWwHxt3AuySBhJLcvmFYi3Lbc4xnwj
QmTumTjvcYCAvRRwQ8sDRxh8ezmrcr88YFU7iYNroGGTBZ
# check the children are no longer there...
> ipfs pin ls --type=indirect
QmUFtMrBHqdjTtbebsL6YGebvjShh3Jud1insUv12fEVdA
QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7
QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y
QmeEqpsKrvdhuuuVsguHaVdJcPnnUHHZ5qEWjCHavYbNqU
QmfE3nUohq2nEYwieF7YFnJF1VfiL4i3wDxkMq8aGUg8Mt
QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco <---- wait wat!?
QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts <---- wait wat!?
QmTumTjvcYCAvRRwQ8sDRxh8ezmrcr88YFU7iYNroGGTBZ
> ipfs pin ls --type=direct
> ipfs pin add QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd
pinned QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd directly
> ipfs pin add QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco
pinned QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco directly
> ipfs pin ls --type=direct
QmeuBj5MygivbTHbCfCrrcCkTGcnQ51N5QANYhXrJrhxXd
QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco
> ipfs pin ls --type=indirect
QmfE3nUohq2nEYwieF7YFnJF1VfiL4i3wDxkMq8aGUg8Mt
QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco <---- still wat.
QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts <---- still wat.
QmTumTjvcYCAvRRwQ8sDRxh8ezmrcr88YFU7iYNroGGTBZ
QmUFtMrBHqdjTtbebsL6YGebvjShh3Jud1insUv12fEVdA
QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7
QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y
QmeEqpsKrvdhuuuVsguHaVdJcPnnUHHZ5qEWjCHavYbNqU
> ipfs repo gc
> ipfs pin ls --type=indirect
QmTumTjvcYCAvRRwQ8sDRxh8ezmrcr88YFU7iYNroGGTBZ
QmUFtMrBHqdjTtbebsL6YGebvjShh3Jud1insUv12fEVdA
QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7
QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y
QmeEqpsKrvdhuuuVsguHaVdJcPnnUHHZ5qEWjCHavYbNqU
QmfE3nUohq2nEYwieF7YFnJF1VfiL4i3wDxkMq8aGUg8Mt
QmPyJ2nJMQFo7Ee6kk6R7MHvuNEdq1QXfQfv6P5TRPzSco
QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts
# this file should be gone, but it's magically pinned indirectly
> ipfs cat QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts
some text b  
> ipfs pin rm QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts
Error: QmRYTiRs8PZURrGcmvnn4Drfp3WGs5UsankDtVe1K834Ts is pinned indirectly. indirect pins cannot be removed directly

at least:

  • pinning on add -r does not pin the root directory. it pins the files...
  • unpinning recursively does not unpin indirect pins correctly.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    kind/bugA bug in existing code (including security flaws)topic/commandsTopic commands

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions