-1 [BINDING] -> I tested airflow works, verified checksums and signatures, and licences. And they all work fine, and I would normally vote +1. BUT.
I got inspired by some recent discussions on the ASF member list and I actually went on for a more thorough check this time. And I found out that our `-source.tar.gz` package is wrong - and contains wrong sources. I would love to have others to verify my findings, but it looks like that airflow sources in the *apache-airflow-2.6.2-source.tar.gz * is different than the ones in .whl and in our https://github.com/apache/airflow/tree/2.6.2rc1 repository tree. I looked at 2.6.1 and it seems there, everything is fine and sources are matching the tag / wheel files. This likely comes from some bugs in our tooling that prepares the package and our process and we need to track it down and fix it before the release. Also we likely need to update our verification methods. J. ⌁0% [jarek:~/asf-dist/dev/airflow/2.6.2rc1/apache-airflow-2.6.2] 3s % diff ./airflow/api/common/mark_tasks.py /home/jarek/code/airflow/airflow/api/common/mark_tasks.py 24c24 < from sqlalchemy import or_, select --- > from sqlalchemy import or_ 151c151 < tis_altered = session.scalars(qry_dag.with_for_update()).all() --- > tis_altered = qry_dag.with_for_update().all() 154c154 < tis_altered += session.scalars(qry_sub_dag.with_for_update()).all() --- > tis_altered += qry_sub_dag.with_for_update().all() 163c163 < tis_altered = session.scalars(qry_dag).all() --- > tis_altered = qry_dag.all() 166c166 < tis_altered += session.scalars(qry_sub_dag).all() --- > tis_altered += qry_sub_dag.all() 178,180c178,180 < select(TaskInstance) < .where(TaskInstance.dag_id.in_(sub_dag_run_ids), TaskInstance.execution_date.in_(confirmed_dates)) < .where(or_(TaskInstance.state.is_(None), TaskInstance.state != state)) --- > session.query(TaskInstance) > .filter(TaskInstance.dag_id.in_(sub_dag_run_ids), TaskInstance.execution_date.in_(confirmed_dates)) > .filter(or_(TaskInstance.state.is_(None), TaskInstance.state != state)) 193c193 < qry_dag = select(TaskInstance).where( --- > qry_dag = session.query(TaskInstance).filter( 199c199 < qry_dag = qry_dag.where(or_(TaskInstance.state.is_(None), TaskInstance.state != state)).options( --- > qry_dag = qry_dag.filter(or_(TaskInstance.state.is_(None), TaskInstance.state != state)).options( 258a259 > :return: 327,328c328,332 < first_dagrun = session.scalar( < select(DagRun).filter(DagRun.dag_id == dag.dag_id).order_by(DagRun.execution_date.asc()).limit(1) --- > first_dagrun = ( > session.query(DagRun) > .filter(DagRun.dag_id == dag.dag_id) > .order_by(DagRun.execution_date.asc()) > .first() 361,363c365 < dag_run = session.execute( < select(DagRun).where(DagRun.dag_id == dag_id, DagRun.run_id == run_id) < ).scalar_one() --- > dag_run = session.query(DagRun).filter(DagRun.dag_id == dag_id, DagRun.run_id == run_id).one() 466,472c468,472 < tis = session.scalars( < select(TaskInstance).where( < TaskInstance.dag_id == dag.dag_id, < TaskInstance.run_id == run_id, < TaskInstance.task_id.in_(task_ids), < TaskInstance.state.in_([State.RUNNING, State.DEFERRED, State.UP_FOR_RESCHEDULE]), < ) --- > tis = session.query(TaskInstance).filter( > TaskInstance.dag_id == dag.dag_id, > TaskInstance.run_id == run_id, > TaskInstance.task_id.in_(task_ids), > TaskInstance.state.in_([State.RUNNING, State.DEFERRED, State.UP_FOR_RESCHEDULE]), 474d473 < 485,491c484,488 < tis = session.scalars( < select(TaskInstance).filter( < TaskInstance.dag_id == dag.dag_id, < TaskInstance.run_id == run_id, < TaskInstance.state.not_in(State.finished), < TaskInstance.state.not_in([State.RUNNING, State.DEFERRED, State.UP_FOR_RESCHEDULE]), < ) --- > tis = session.query(TaskInstance).filter( > TaskInstance.dag_id == dag.dag_id, > TaskInstance.run_id == run_id, > TaskInstance.state.not_in(State.finished), > TaskInstance.state.not_in([State.RUNNING, State.DEFERRED, State.UP_FOR_RESCHEDULE]), On Wed, Jun 14, 2023 at 7:39 AM Phani Kumar <phani.ku...@astronomer.io.invalid> wrote: > + non-binding. Ran our example DAGs successfully > > On Wed, Jun 14, 2023 at 5:34 AM Oliveira, Niko <oniko...@amazon.com.invalid > > > wrote: > > > +1 (non-binding) > > > > checked files, licenses, signatures, checksums, installation, and a few > > example dags. > > > > Cheers, > > Niko > > > > ________________________________ > > From: Beck, Vincent <vincb...@amazon.com.INVALID> > > Sent: Tuesday, June 13, 2023 12:32:39 PM > > To: dev@airflow.apache.org > > Subject: RE: [EXTERNAL][VOTE] Release Airflow 2.6.2 from 2.6.2rc1 > > > > CAUTION: This email originated from outside of the organization. Do not > > click links or open attachments unless you can confirm the sender and > know > > the content is safe. > > > > > > > > +1 (non-binding) > > > > Tested against my testing DAGs. > > > > On 2023-06-13, 12:04 PM, "Pankaj Koti" <pankaj.k...@astronomer.io.inva > > <mailto:pankaj.k...@astronomer.io.inva>LID> wrote: > > > > > > > > > > +1 (non-binding) > > > > > > Tested my set of changes and additionally ran a few DAGs. > > > > > > Regards, > > > > > > > > > > > > > > Pankaj Koti > > > > > > *Senior Software Engineer, *OSS Engineering Team. > > Location: Pune, India > > > > > > Timezone: Indian Standard Time (IST) > > > > > > Email: pankaj.k...@astronomer.io <mailto:pankaj.k...@astronomer.io> > > > > > > Mobile: +91 9730079985 > > > > > > > > > > On Tue, Jun 13, 2023 at 1:45 PM Elad Kalif <elad...@apache.org <mailto: > > elad...@apache.org>> wrote: > > > > > > > Hey fellow Airflowers, > > > > > > I have cut Airflow 2.6.2rc1. This email is calling a vote on the > release, > > > which will last at least 72 hours, from Tuesday, June 13, 2023 at 08:15 > > AM > > > UTC > > > until Friday, June 16, 2023 at 08:15 AM UTC ,and until 3 binding +1 > votes > > > have been received. > > > > > > Vote countdown timer: > > > https://www.timeanddate.com/countdown/to?iso=20230616T0815&p0=1440 < > > https://www.timeanddate.com/countdown/to?iso=20230616T0815&p0=1440> > > > > > > Status of testing of the release is kept at > > > https://github.com/apache/airflow/issues/31867 < > > https://github.com/apache/airflow/issues/31867> > > > > > > Consider this my (binding) +1. > > > > > > Airflow 2.6.2rc1 is available at: > > > https://dist.apache.org/repos/dist/dev/airflow/2.6.2rc1/ < > > https://dist.apache.org/repos/dist/dev/airflow/2.6.2rc1/> > > > > > > *apache-airflow-2.6.2-source.tar.gz* is a source release that comes > with > > > INSTALL instructions. > > > *apache-airflow-2.6.2.tar.gz* is the binary Python "sdist" release. > > > *apache_airflow-2.6.2-py3-none-any.whl* is the binary Python wheel > > "binary" > > > release. > > > > > > Public keys are available at: > > > https://dist.apache.org/repos/dist/release/airflow/KEYS < > > https://dist.apache.org/repos/dist/release/airflow/KEYS> > > > > > > Please vote accordingly: > > > > > > [ ] +1 approve > > > [ ] +0 no opinion > > > [ ] -1 disapprove with the reason > > > > > > Only votes from PMC members are binding, but all members of the > community > > > are encouraged to test the release and vote with "(non-binding)". > > > > > > The test procedure for PMCs and Contributors who would like to test > this > > RC > > > are described in > > > > > > > > > https://github.com/apache/airflow/blob/main/dev/README_RELEASE_AIRFLOW.md > > < > https://github.com/apache/airflow/blob/main/dev/README_RELEASE_AIRFLOW.md > > >\#verify-the-release-candidate-by-pmcs > > > > > > Please note that the version number excludes the `rcX` string, so it's > > now > > > simply 2.6.2. This will allow us to rename the artifact without > modifying > > > the artifact checksums when we actually release. > > > > > > Release Notes: > > > https://github.com/apache/airflow/blob/2.6.2rc1/RELEASE_NOTES.rst < > > https://github.com/apache/airflow/blob/2.6.2rc1/RELEASE_NOTES.rst> > > > > > > Changes since 2.6.1: > > > *Bug Fixes*: > > > > > > - Cascade update of TaskInstance to TaskMap table (#31445) > > > - Fix Kubernetes executors detection of deleted pods (#31274) > > > - Use keyword parameters for migration methods for mssql (#31309) > > > - Control permissibility of driver config in extra from airflow.cfg > > > (#31754) > > > - Fixing broken links in openapi/v1.yaml (#31619) > > > - Hide old alert box when testing connection with different value > > (#31606) > > > - Add TriggererStatus to OpenAPI spec (#31579) > > > - Resolving issue where Grid won't un-collapse when Details is > > > collapsed (#31561) > > > - Fix sorting of tags (#31553) > > > - Add the missing ``map_index`` to the xcom key when skipping > > > downstream tasks (#31541) > > > - Fix airflow users delete CLI command (#31539) > > > - Include triggerer health status in Airflow ``/health`` endpoint > > (#31529) > > > - Remove dependency already registered for this task warning (#31502) > > > - Use kube_client over default CoreV1Api for deleting pods (#31477) > > > - Ensure min backoff in base sensor is at least 1 (#31412) > > > - Fix ``max_active_tis_per_dagrun`` for Dynamic Task Mapping (#31406) > > > - Fix error handling when pre-importing modules in DAGs (#31401) > > > - Fix dropdown default and adjust tutorial to use 42 as default for > > > proof (#31400) > > > - Fix crash when clearing run with task from normal to mapped (#31352) > > > - Make BaseJobRunner a generic on the job class (#31287) > > > - Fix ``url_for_asset`` fallback and 404 on DAG Audit Log (#31233) > > > - Don't present an undefined execution date (#31196) > > > - Added spinner activity while the logs load (#31165) > > > - Include rediss to the list of supported URL schemes (#31028) > > > - Optimize scheduler by skipping "non-schedulable" DAGs (#30706) > > > - Save scheduler execution time during search for queued dag_runs > > (#30699) > > > - Fix ExternalTaskSensor to work correctly with task groups (#30742) > > > - Fix DAG.access_control can't sync when clean access_control (#30340) > > > - Fix failing get_safe_url tests for latest Python 3.8 and 3.9 (#31766) > > > - Fix typing for POST user endpoint (#31767) > > > - Fix wrong update for nested group default args (#31776) > > > - Fix overriding ``default_args`` in nested task groups (#31608) > > > - Mark ``[secrets] backend_kwargs`` as a sensitive config (#31788) > > > - Executor events are not always "exited" here (#30859) > > > - Validate connection IDs (#31140) > > > > > > > > > *Misc/Internal*: > > > > > > - Add Python 3.11 support (#27264) > > > - Replace unicodecsv with standard csv library (#31693) > > > - Bring back unicodecsv as dependency of Airflow (#31814) > > > - Remove found_descendents param from get_flat_relative_ids (#31559) > > > - Fix typing in external task triggers (#31490) > > > - Wording the next and last run DAG columns better (#31467) > > > - Skip auto-document things with :meta private: (#31380) > > > - Add an example for sql_alchemy_connect_args conf (#31332) > > > - Convert dask upper-binding into exclusion (#31329) > > > - Upgrade FAB to 4.3.1 (#31203) > > > - Added metavar and choices to --state flag in airflow dags list-jobs > > > CLI for suggesting valid state arguments. (#31308) > > > - Use only one line for tmp dir log (#31170) > > > - Rephrase comment in setup.py (#31312) > > > - Add fullname to owner on logging (#30185) > > > - Make connection id validation consistent across interface (#31282) > > > - Use single source of truth for sensitive config items (#31820) > > > > > > > > > *Doc only changes* > > > > > > - Add docstring and signature for _read_remote_logs (#31623) > > > - Remove note about triggerer being 3.7+ only (#31483) > > > - Fix version support information (#31468) > > > - Add missing BashOperator import to documentation example (#31436) > > > - Fix task.branch error caused by incorrect initial parameter (#31265) > > > - Update callbacks documentation (errors and context) (#31116) > > > - Add an example for dynamic task mapping with non-TaskFlow operator > > > (#29762) > > > - Few doc fixes - links, grammar and wording (#31719) > > > - Add description in a few more places about adding airflow to pip > > > install (#31448) > > > > > > > > > Cheers, > > > Elad Kalif > > > > > > > > > > > > B�KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKCB� > > � [��X��ܚX�K K[XZ[ � ]�][��X��ܚX�P Z\�� �˘\ X� K�ܙ�B��܈ Y ] [ۘ[ > ��[X[� > > � K[XZ[ � ]�Z [ Z\�� �˘\ X� K�ܙ�B > > >