bosko
OTP 25 Ecto Tds connection problem
I am using Ecto Tds to connect to MS SQL server and till today everything worked fine. I am developing on OS X and deploying application on EC2 instance with Ubuntu 20.04. I build release in Docker with following Dockerfile
FROM ubuntu:20.04 as production-environment
ENV LANG=en_US.UTF-8
ENV DEBIAN_FRONTEND noninteractive
RUN \
apt-get update -y && \
apt-get install -y git curl wget locales gnupg2 build-essential && \
locale-gen en_US.UTF-8 && \
wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb && \
dpkg -i erlang-solutions_2.0_all.deb && \
rm erlang-solutions_2.0_all.deb && \
apt-get update -y && \
apt-get install -y esl-erlang elixir
CMD ["/bin/bash"]
FROM production-environment as build
# ===========
# Application
# ===========
# prepare build dir
WORKDIR /app
# set build ENV
ENV MIX_ENV=prod
ENV SECRET_KEY_BASE=fake
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
ENV LC_ALL en_US.UTF-8
# install hex + rebar
RUN mix local.hex --force && \
mix local.rebar --force
# install mix dependencies
COPY mix.exs mix.lock ./
RUN mix deps.get --only $MIX_ENV
RUN mkdir config
# copy compile-time config files before we compile dependencies
# to ensure any relevant config change will trigger the dependencies
# to be re-compiled.
COPY config/config.exs config/${MIX_ENV}.exs config/
RUN mix deps.compile
COPY priv priv
COPY lib lib
COPY assets assets
# build assets
run mix assets.deploy
# compile and build release
RUN mix compile
# Changes to config/runtime.exs don't require recompiling the code
COPY config/runtime.exs config/
COPY rel rel
RUN mix release
FROM scratch AS app
WORKDIR /app
COPY --from=build /app/_build/prod/*.tar.gz ./
CMD ["/bin/bash"]
Today suddenly after deploying new version application stopped working with following error:
[error] GenServer #PID<0.697.0> terminating
** (ArgumentError) errors were found at the given arguments:
* 1st argument: not a port
:erlang.port_info(#PID<0.711.0>, :connected)
(elixir 1.13.0) lib/port.ex:273: Port.info/2
(tds 2.3.0) lib/tds/tls.ex:86: Tds.Tls.assert_connected!/1
(tds 2.3.0) lib/tds/tls.ex:41: Tds.Tls.send/2
(tds 2.3.0) lib/tds/tls.ex:209: Tds.Tls.handle_info/2
(stdlib 4.0) gen_server.erl:1120: :gen_server.try_dispatch/4
(stdlib 4.0) gen_server.erl:1197: :gen_server.handle_msg/6
(stdlib 4.0) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Last message: {:tcp_closed, #Port<0.46>}
State: %Tds.Tls{buffer: nil, handshake?: true, owner_pid: #PID<0.711.0>, socket: #Port<0.46>, ssl_opts: [active: false, cb_info: {Tds.Tls, :tcp, :tcp_closed, :tcp_error}]}
After short investigation I found out that build in Docker used OTP 25 while on my local machine I was still using OTP 24 and installing Elixir 1.13.4-otp-25 resulted in the same error.
I was not able to find any issue related to this reported on Tds so I wonder if anyone have noticed similar problem or has an idea what could cause this error?
Most Liked
moogle19
gregvaughn
We had to abort an upgrade to OTP 25 because of failures negotiating a TLS connection with a Windows server. That might be the same root cause here. Looks like a fix has been merged for OTP now
https://github.com/erlang/otp/pull/6037
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








