Whoa (!), thanks for the great catch.

You are absolutely right that the Flow.lazyInit is incorrect.
It is not possible to get the M strictly from the Future[M] after all.

I skimmed tests and they seem to not verify this;
The Sink version is fine, so at least that.

Could you log a bug about this in https://github.com/akka/akka ?
If you want you can also try fixing it, it should materialize a Future[M].


Thanks again, great catch

-- 
Cheers,
Konrad 'ktoso <http://kto.so>' Malawski
Akka <http://akka.io/> @ Lightbend <http://lightbend.com/>

On March 5, 2018 at 21:31:59, Stefan Wachter (stefan.wach...@gmx.de) wrote:

I just saw that Source.lazily implements a similar concept:

def lazily[T, M](create: () ⇒ Source[T , M]): Source[T, Future[M]]

Here a the materialized value is a Future that is failed if there was no
demand before the source gets never created.

I think the two methods Source.lazily and Flow.lazyInit should be alligned
(in their name and in their materialized values)

*Gesendet:* Montag, 05. März 2018 um 13:13 Uhr
*Von:* "Stefan Wachter" <stefan.wach...@gmx.de>
*An:* akka-user@googlegroups.com
*Betreff:* [akka-user] Akka 2.5.11 - materialization of Flow.lazyInit

Hi,

studying the newly Flow constructor Flow.lazyInit



def lazyInit[I, O, M](flowFactory: I ⇒ Future[Flow[I, O, M]],
fallback: () ⇒ M): Flow[I, O, M]



(cf. https://doc.akka.io/api/akka/2.5.11/akka/stream/scaladsl/Flow$.html) I
wondered how (citation from ScalaDoc)



The materialized value of the `Flow` will be the materializedvalue of
the created internal flow.



could be? Materialization happens before the flow is run. Therefore the
materialized value cannot depend on whether their will be some input or not.

To fix the issue, the materialzed value of Flow.lazyInit should be a
Future[M] or even better a Future[Option[M]]. In case that no internal flow
is materialized it would be a Future[None].

--Stefan


--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ:
http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups
"Akka User List" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to akka-user+unsubscr...@googlegroups.com.
To post to this group, send email to akka-user@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ:
http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups
"Akka User List" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to akka-user+unsubscr...@googlegroups.com.
To post to this group, send email to akka-user@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to akka-user+unsubscr...@googlegroups.com.
To post to this group, send email to akka-user@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to