Skip to content
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

Return data correctly for webp requests #72

Merged
merged 13 commits into from
Jan 21, 2022
Merged

Return data correctly for webp requests #72

merged 13 commits into from
Jan 21, 2022

Conversation

fukajun
Copy link
Contributor

@fukajun fukajun commented Jun 29, 2021

  • Golang version up to 1.16.5.
  • Update the image magick version to 6.9.12-17. For update version to latest.
  • Fix compile kinu.
  • Return webp data correctly. Because Currently return jpg for webp request.
  • Use go module to resolve dependency.

@fukajun fukajun requested review from 0tany, mdoi and rust June 30, 2021 05:24
@rust rust requested a review from takatoshi-maeda June 30, 2021 05:27
Comment on lines 21 to 24
if err != nil {
RespondInternalServerError(w, err)
return
}
Copy link

@0tany 0tany Jun 30, 2021

Choose a reason for hiding this comment

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

ここら辺のエラーハンドリング消して大丈夫なやつですか?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

関数定義が変更されてerr自体を返さなくなったみたいです
https://github.com/satori/go.uuid/blob/b2ce2384e17bbe0c6d34077efa39dbab3e09123b/generator.go#L68

Copy link
Contributor Author

Choose a reason for hiding this comment

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

いやなんか勘違いしてるかもしれない。もう一度確認してみますね。

Copy link

Choose a reason for hiding this comment

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

なるほど

Copy link
Contributor Author

Choose a reason for hiding this comment

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

https://github.com/satori/go.uuid/blob/v1.2.0/generator.go#L64 v1.2.0を利用しているのでコチラのURLが正しいものです。
go moduleによる管理に切り替えたときにgo.uuidは master から v1.2.0 を利用するように変わったみたいです。そのときに、errorを返さない実装に変わったため修正したという流れです。 @0tany

Copy link
Collaborator

@takatoshi-maeda takatoshi-maeda Dec 9, 2021

Choose a reason for hiding this comment

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

[must確認] errorは返却されないものの、Nil(実態はemptyなbyte array)が返却される ので、Nilであった場合のケアを明示的に行い、何らかの要因で処理が競合する(Nil値でUUIDが競合する)リスクをケアしたほうが良さそうだと思いますがどうですか?

Copy link
Contributor Author

@fukajun fukajun Dec 14, 2021

Choose a reason for hiding this comment

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

現在使用しているバージョン、v1.2.0では、err返却はなく、nilにもならないの代わりに panic が内部的に起きるみたいです。(コードから推測する挙動が間違ってたらすみません。)
これは、次のリリースあたりで挙動が変更されるみたい()で、panicを使わない実装になるみたいです。
指摘のリスク自体はないみたいですが、別バージョンを使ったほうが良いのでしょうか? @takatoshi-maeda

Copy link
Collaborator

Choose a reason for hiding this comment

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

差し替えのコストがさほどないなら、差し替えてしまったほうが良いと思います。確率はとても低く無視もできる範囲だとは思いますが、panic起こすとプロセス落ちちゃうので

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ENV IMAGE_MAGICK_VERSION=6.9.12-17
RUN wget https://download.imagemagick.org/ImageMagick/download/releases/ImageMagick-${IMAGE_MAGICK_VERSION}.tar.gz && \
tar xvzf ImageMagick-${IMAGE_MAGICK_VERSION}.tar.gz && \
cd ImageMagick-${IMAGE_MAGICK_VERSION} && ./configure && make && make install && ldconfig && \
Copy link

Choose a reason for hiding this comment

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

旧版と新版で結構 imagemagick の Delegates が違いそう(./configure に与えるオプションが違ってそう)ですが、kinu から呼ぶ時に特に関係ない落としても問題ない機能が落ちてるんですかね?
あたりが気になりました。

// 旧kinuコンテナ
root@7be10b94d8b8:/# convert --version
Version: ImageMagick 6.9.6-2 Q16 x86_64 2016-10-13 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2016 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib
// 新kinuコンテナ
root@07965b2cb0b3:/kinu-build# convert --version
Version: ImageMagick 6.9.12-17 Q16 x86_64 2021-06-25 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC OpenMP(4.5)
Delegates (built-in): jng jpeg png webp zlib

Copy link
Contributor Author

@fukajun fukajun Jun 30, 2021

Choose a reason for hiding this comment

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

gif, png, jpeg, webpのみ必要なのでインストールするパッケージを絞りました。
旧版ではaptで libmagickwand-dev をインストールしていたので関連パッケージも一緒にインストールされて
色々なフォーマットをサポートしてたみたいです。
今回特定バージョンのImageMagickを使うためにソースから作ることにしたので、libmagickwand-devは
不要になりましたが、削除すると関連するlibjpg, libpng なども入らなくなるため
必要なフォーマットライブラリのみインストールする方針にしました。

途中、関連するフォーマットライブラリがほしかったのでlibmagickwand-devをapt installした後にapt removeするとかしてたけどイマイチなのと、docker imageサイズを小さくしたかったのでやめました。

@mdoi mdoi self-requested a review June 30, 2021 07:31
@fukajun
Copy link
Contributor Author

fukajun commented Oct 12, 2021

gz形式のやつがなくなっていたので、マイナーバージョンだけ上げたものを使うようにした。

@fukajun
Copy link
Contributor Author

fukajun commented Dec 8, 2021

前回のレビューから 7f05137 以降のコミットで変更しているので、再レビューお願いします。

go.mod Outdated
gopkg.in/gographics/imagick.v2 v2.6.0 // indirect
)

replace github.com/tokubai/kinu => ./
Copy link

Choose a reason for hiding this comment

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

[確認] replace残したままにするのって意図通りですか?

Copy link

Choose a reason for hiding this comment

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

https://go.dev/doc/modules/managing-dependencies#unpublished
ユースケース的に問題なさそうなのでこのままで 🙏

Copy link
Contributor Author

Choose a reason for hiding this comment

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

自分自身がgithub.com/tokubai/kinuであるということを書けば、replaceは必要なかった
7ab096e

@0tany 0tany self-requested a review December 8, 2021 07:35
@@ -1,19 +1,16 @@
module kinu
module github.com/tokubai/kinu
Copy link
Contributor Author

Choose a reason for hiding this comment

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

自分自身のmodule名を正しくして、replaceを削除しました。

Dockerfile Outdated
ENV GOROOT /usr/local/go
ENV GOPATH /usr/local/go/vendor

ENV KINU_VERSION 1.0.0.alpha13
ENV KINU_VERSION 1.0.0.alpha14
Copy link
Collaborator

Choose a reason for hiding this comment

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

僕が残した残骸ですが、 1.0.0 にしても良さそう...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Comment on lines 21 to 24
if err != nil {
RespondInternalServerError(w, err)
return
}
Copy link
Collaborator

@takatoshi-maeda takatoshi-maeda Dec 9, 2021

Choose a reason for hiding this comment

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

[must確認] errorは返却されないものの、Nil(実態はemptyなbyte array)が返却される ので、Nilであった場合のケアを明示的に行い、何らかの要因で処理が競合する(Nil値でUUIDが競合する)リスクをケアしたほうが良さそうだと思いますがどうですか?

@fukajun
Copy link
Contributor Author

fukajun commented Dec 14, 2021

#72 (comment) について返信しました

@fukajun fukajun requested review from takatoshi-maeda and removed request for takatoshi-maeda December 24, 2021 16:57
@fukajun fukajun merged commit ce2097f into master Jan 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants